Skip to content
digiwleeaTools
LearnGlossaryAboutCheat sheetHow a CPU worksToolsOpen the lab →

How a Dadda multiplier works: 4 x 4 bits, live

A Dadda multiplier adds partial products in layers of full and half adders, like a Wallace tree, but each layer reduces the columns only as far as it must, down a fixed sequence of heights (3, then 2 for a 4 x 4 multiplier). That uses fewer adders in the tree and leaves more for the final adder. This live 4 x 4 one uses 8 full adders and 4 half adders.

The 16 partial products a_i AND b_j sort into columns by weight i + j, with heights 1, 2, 3, 4, 3, 2 and 1. Luigi Dadda's rule works backward from the end: the last stage needs columns of height 2 (two rows for an ordinary adder), the one before can have 3, then 4, 6, 9 and so on, each about 1.5 times the last. Each stage reduces every column to the next height in that sequence and no further, using a half adder when a column is one bit over and a full adder when it is two or more over, and it counts the carries that will arrive from the column to the right. Here stage 1 (down to 3) needs only 2 half adders, in the columns of weight 3 and 4; stage 2 (down to 2) needs 3 full adders and 1 half adder; and the final ripple adder over the last two rows uses 5 full adders and 1 half adder. The Wallace tree on this site instead reduces every column as much as it can in each layer: for the same 4 x 4 multiply it uses 7 full adders and 8 half adders, 15 adders against Dadda's 12, with a shorter final adder. Both beat an array multiplier for wide words because the tree has no carry chain. All 256 products are checked before the page is built.

Big circuit: pinch, scroll or tap + to zoom in, then drag to move around.

Live circuit: click the inputs to toggle them and watch the outputs update. It runs the real simulator, right here on the page.

Open this circuit in the lab →

What you need

Step by step

  1. Place inputs A3 to A0 and B3 to B0, and probes P7 to P0.
  2. Make the 16 partial products a_i AND b_j and sort them into columns by weight i + j.
  3. Stage 1: bring every column down to 3 bits, counting the carries arriving from the right; only the weight-3 and weight-4 columns need a half adder.
  4. Stage 2: bring every column down to 2 bits with full adders (two over) and half adders (one over).
  5. Add the last two rows with a ripple adder. Try 1101 x 1011: P = 1000 1111, which is 143.

Dadda and Wallace, 4 x 4

Tree stagesAdders in the treeFinal adderTotal
Dadda (this one)23 full, 3 half5 full, 1 half8 full, 4 half
Wallace24 full, 6 half3 full, 2 half7 full, 8 half

A full adder turns three bits of a column into one sum bit there and one carry in the next column; a half adder does the same with two bits. Dadda's heights for larger multipliers are 2, 3, 4, 6, 9, 13, 19 and so on, each the previous one times 3/2, rounded down.

You can also read the full theory in the lesson on binary multiplication in hardware. 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.

Build more parts from gates

half adderfull adderhalf subtractorfull subtractor2:1 multiplexer4:1 multiplexerXOR gate from NAND gates2-to-4 decoderSR latchD flip-flopJK flip-flopT flip-flop4-bit shift register4-bit ripple carry adderD latch1-to-4 demultiplexer4-bit magnitude comparator4-bit ring counter4-bit Johnson counter4-to-2 priority encoder4-bit synchronous counter3-to-8 decoder8-to-1 multiplexer4-bit carry lookahead adderhalf adder from NAND gates2-bit comparatorBCD to 7-segment decoder4-bit up/down counterdecade counter2-bit multiplier4-bit ALU4-bit array multiplierNOT, AND, OR and NOR from NANDNOT, OR, AND and XOR from NORfull adder from NAND gatesSR latch from NAND gatesparity generator and checker4-bit adder/subtractorBCD adder4-bit universal shift registermod-6 counter4-bit ripple counterbinary to Gray code converterhalf adder from NOR gatesfull adder from NOR gates4-bit register with parallel load1011 sequence detectorbinary to BCD converterD flip-flop from NAND gates1-bit ALUCMOS inverterCMOS NAND gateCMOS NOR gatePISO shift registerSR flip-flop from NAND gatesBCD to excess-3 code converterHamming (7,4) code encoder and correctortraffic light controller4-bit barrel shifterCMOS AND gateCMOS OR gateCMOS XOR gate1-bit magnitude comparatorhalf subtractor from NAND gatesfull subtractor from NAND gates8-to-3 encoderGray to binary converter4-to-16 decoderfull adder using 4:1 multiplexersedge detectorserial adder4-bit carry-select adder4-bit Kogge-Stone adder4-bit carry-skip adder4x4 Wallace tree multiplier8-bit adderfrequency divider (by 2, 4 and 3)switch debouncer (SR latch)3-bit Gray code counterMealy machine (1011 detector)master-slave JK flip-flop (NAND)half subtractor from NOR gates1-to-8 demultiplexerexcess-3 to BCD code convertervending machine FSM4-bit carry-save adder3-bit synchronous counter (JK)CMOS transmission gatetri-state buffer (CMOS)2-to-1 mux from transmission gatesmod-5 counterflip-flop conversion (JK to D)8-bit ALUdecimal to BCD encoderBCD to decimal decoder4-to-1 mux from 2-to-1 muxesXOR gate from NOR gates4-bit LFSR74LS138 decoderBCD subtractor74181 ALUCMOS AOI gate (AOI21)D latch vs D flip-flop74LS47 BCD to 7-segment decoder74HC595 shift register7400 quad NAND gate chip7402 quad NOR gate chip7404 hex inverter chip7408 quad AND gate chip7432 quad OR gate chip7486 quad XOR gate chip7474 dual D flip-flop74HC165 shift registerCD4017 decade counter74LS283 4-bit adder74LS90 decade counter74HC161 4-bit counter74HC151 8-to-1 multiplexer74HC157 quad 2-to-1 multiplexer74HC139 dual 2-to-4 decoderCD4511 BCD to 7-segment decoder7492 divide-by-12 counter7493 4-bit binary counter74HC244 octal bufferRace-around condition (JK latch)74HC373 octal latch74HC374 octal D flip-flopTurnstile state machine1-to-2 demultiplexerhalf adder using 2:1 multiplexersregister file (4 x 4-bit)digital PWM generatorCD4013 dual D flip-flop74LS76 dual JK flip-flop7410 triple 3-input NAND chip7411 triple 3-input AND chip7420 dual 4-input NAND chipCD4011 quad 2-input NAND chipCD4001 quad 2-input NOR chipCD4081 quad 2-input AND chipCD4069 hex inverter chip74HC164 8-bit shift register7485 4-bit magnitude comparator74HC125 quad tri-state bufferCD4040 12-stage binary counterCD4060 14-stage counter and oscillator74LS193 4-bit up/down counterelectronic dice circuitmemory address register (MAR) and MDRhardware stack with a stack pointerdirect-mapped cache8-bit Brent-Kung adderbinary clock circuit

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 4x4 Dadda multiplier in the lab →

Frequently asked

How does a Dadda multiplier work?

It forms all the partial products, then reduces the columns in stages to a fixed sequence of heights (... 6, 4, 3, 2), adding only as many full and half adders as each stage needs, and finishes with one ordinary adder over the last two rows.

What is the difference between Dadda and Wallace tree multipliers?

Both reduce partial products with layers of adders. Wallace reduces as much as possible in every layer; Dadda reduces only as much as needed to reach the next target height. Dadda usually needs fewer adders in the tree, especially half adders, but a slightly wider final adder.

How many adders does a 4x4 Dadda multiplier need?

This one uses 8 full adders and 4 half adders, counting the final ripple adder, plus the 16 AND gates for the partial products.

Who invented the Dadda multiplier?

Luigi Dadda, who described the scheme in 1965, shortly after Chris Wallace published his tree in 1964.