A multiplier works in three stages. It forms partial products, compresses them to two rows, then adds once.
Stage | Job | Design knob |
|---|---|---|
Partial products | One row per multiplier bit, or one row per two bits with Booth recoding. | Row count: N, or N / 2 with radix-4 Booth. |
Compressor tree | 3:2 counters shrink many rows to two in a logarithmic number of stages. | Wallace or Dadda target heights per stage. |
Final adder | One carry-propagate addition of the two remaining rows. | Ripple for narrow widths, faster families for wide ones. |
Lesson | What it covers |
|---|---|
AND-gate rows, column heights, and the 4 by 4 array. | |
Recoding triplets, halved row counts, and an exhaustive Python check. | |
3:2 counters, Wallace reduction, and Dadda stage counts. | |
Sign extension and the negated sign-bit row, worked by hand. | |
Low-bit truncation, final-adder choice, and a Yosys equivalence proof. |
It halves the partial-product count, roughly halving the tree. It costs recoding logic and sign-extension care on every product.