CMOS full adder: the 28-transistor mirror adder, live
The classic CMOS full adder is the 28-transistor mirror adder: a 10-transistor stage computes NOT Cout, a 14-transistor stage uses it to compute NOT S, and two inverters (4 transistors) give S and Cout. This live circuit is built transistor by transistor and checked on all eight rows.
Built from separate static CMOS gates, a full adder (two XORs, two ANDs and an OR) takes about 42 transistors with 12-transistor XORs and 6-transistor ANDs and ORs. The mirror adder does it in 28 by computing the outputs directly as transistor networks. The carry stage is the majority gate's mirror circuit: Cout = A B + Cin (A + B), so NOT Cout pulls low through A and B in series, or through Cin in series with A or B. The sum uses the carry: S = A B Cin + (A + B + Cin) NOT Cout, which is 1 when all three inputs are 1, or when at least one is 1 and there is no carry (exactly one input is 1). So NOT S pulls low through A, B and Cin in series, or through any of A, B, Cin in series with a transistor driven by NOT Cout. Both functions are self-dual, so each pull-up network has the same series and parallel shape as its pull-down (a mirror, hence the name) instead of the complementary one, which keeps the PMOS stacks short. Compare the full adder from gates and the nine-NAND full adder.
Open this circuit in the lab →
What you need
- 5× NMOS: carry stage pull-down: A series B, parallel to Cin series (A parallel B)
- 5× PMOS: carry stage pull-up, the same shape
- 7× NMOS: sum stage pull-down: A series B series Cin, parallel to (A parallel B parallel Cin) series NOT Cout
- 7× PMOS: sum stage pull-up, the same shape
- 4× NMOS + PMOS: two inverters: NOT Cout to Cout, NOT S to S
Step by step
- Place a VDD rail, a GND rail, inputs
A,BandCin, and probesSandCout. - Carry stage, to a node NC: NMOS A and B in series to GND, in parallel with NMOS Cin in series with NMOS A and B in parallel; the PMOS pull-up from VDD has the same shape. NC is NOT Cout.
- Sum stage, to a node NS: NMOS A, B and Cin in series to GND, in parallel with an NMOS gated by NC in series with NMOS A, B and Cin in parallel; the PMOS pull-up from VDD has the same shape. NS is NOT S.
- Invert NC to get Cout and NS to get S, then step through all eight rows.
Full adder truth table
| A | B | Cin | NOT Cout | Cout | S |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 | 1 | 1 |
All eight rows of the live circuit are checked against A + B + Cin before the page is built. In every row exactly one network of each stage conducts, so no node floats and nothing shorts. The two-input version is the 16-transistor CMOS half adder.
You can also read the full theory in the lesson on the full adder. Prefer to build it yourself from scratch? Open the digiwleea lab and place the gates on the canvas, or start from the logic gate simulator.
More builds: Gates from transistors (CMOS)
All 246 build guides, by topic
Each of these is one step from a transistor to a working CPU. Build every gate from CMOS transistors and work all the way up in the free digiwleea lab, with the free theory reference alongside.
Open the 28-transistor CMOS full adder in the lab →Frequently asked
How many transistors are in a CMOS full adder?
The standard mirror adder uses 28: 10 for the carry stage, 14 for the sum stage and 4 for the two output inverters. Built from separate static CMOS gates instead (two 12-transistor XORs, two ANDs and an OR), it takes about 42.
What is a mirror adder?
A CMOS full adder whose pull-up networks have the same series and parallel structure as their pull-down networks, possible because the carry and sum functions are self-dual. It reuses NOT Cout in the sum stage and keeps PMOS stacks short.
Why does the sum stage use the carry?
Because S = A B Cin + (A + B + Cin) NOT Cout: the sum is 1 when all three inputs are 1, or when some input is 1 but there is no carry. Reusing the carry signal saves transistors compared with two XOR stages.
Why are the outputs inverted inside the mirror adder?
A single static CMOS stage can only compute an inverting function, so each stage produces NOT Cout or NOT S, and an inverter restores the true output. In ripple-carry chains, designers often skip the carry inverter and alternate polarities between stages to save delay.