synth_opt_adders icon indicating copy to clipboard operation
synth_opt_adders copied to clipboard

Books and resources for diving into fast addition topics : )

Open opensource-fr opened this issue 2 years ago • 1 comments

Very interested in any links or books mentioned on the YT that may help further explore the topic of fast addition : )

Also just watched the zero2asic interview, and very much looking forward to incorporating the synth_opt_adders! : )

opensource-fr avatar Dec 12 '22 01:12 opensource-fr

Hello!
Sorry for the late response, I've been busy trying to meet some self-imposed deadlines.

I can't readily think of any books I would recommend on the topic of fast addition. I can quickly summarize it for you though.

  1. In hardware, quantities are encoded in terms of binary digits.
  2. To build a circuit, you begin by creating a circuit that works for single-digit inputs. With addition, for example, you begin by building a circuit that adds 0+0, 0+1, 1+0, and 1+1. You can do this by trial-and-error, or you can do this through math.
  3. You then need to figure out how to extend your operation's hardware from i digits to i+1 digits, which again you can do either through trial-and-error or through cohomology.
  4. You can now build a circuit for n-digit computation by starting at your base of 1-digit computation [from step 4] and recursively adding one digit at the time [via step 5].
  5. The result is a linear chain of n steps to perform an n-digit operation. For operations that are "associative" and "arithmetic", such as normal addition, this linear chain of n steps acts as a binary tree that can be rebalanced into a structure with 1+lg(n) steps while maintaining low area.
  6. The various binary trees that you can draw are all valid implementations of your operation [addition], with different physical characteristics. Which one is optimal depends on a wide array of factors (how fast you want your circuit, how much difference there is between the requisite arrival/departure time at each input/output pin, what specific technology you are using, which specific standard cells you are using, etcetera), thus the optimization problem appears to be a machine learning one.

tdene avatar Dec 27 '22 12:12 tdene