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.
Open this circuit in the lab →
What you need
- 16× AND: partial products a_i b_j
- 2× half adders: stage 1 (to height 3): the columns of weight 3 and 4
- 4× full + half adders: stage 2 (to height 2): 3 full adders and 1 half adder
- 6× full + half adders: final ripple adder over the last two rows: 5 full adders and 1 half adder
Step by step
- Place inputs
A3toA0andB3toB0, and probesP7toP0. - Make the 16 partial products
a_i AND b_jand sort them into columns by weight i + j. - 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.
- Stage 2: bring every column down to 2 bits with full adders (two over) and half adders (one over).
- 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 stages | Adders in the tree | Final adder | Total | |
|---|---|---|---|---|
| Dadda (this one) | 2 | 3 full, 3 half | 5 full, 1 half | 8 full, 4 half |
| Wallace | 2 | 4 full, 6 half | 3 full, 2 half | 7 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
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.