-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integer #85
Integer #85
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
whoops meant to request changes, not approve
I think I am done with updates.
|
I have one more set of changes I want to make: generalizing the full multiply tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
new changes look good!
I'm working on documentation now... |
A few areas for focusing comments:
|
@desmonddak doesn't matter, this will all get squashed into one nice pretty commit when it merges :) |
…ion fixes, new ones complement adder
…oc cleanup, split ones_complement_adder to its own file
… of comments, file headers.
…rator (not module)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
Description & Motivation
Adds a very general booth encoding multiplier with important subcomponents: generalized booth encoding (2,4,8,16 currently supported), Wallace tree column compression (delay-driven with heuristic fixed delays for column compressors), and reusing the parallel prefix adder components for the final adder.
The multiplier base supports different widths of operands (so rectangular products) as well as signed and unsigned operands. Testing is quite exhaustive across signed, radix, width, skew (width difference).
Also, we added a multiply-accumulate which is simply introducing the third operand as part of the column compression.
Related Issue(s)
None.
Testing
Randomized testing to cover the wide space of radix, widths, skew, and signage. Using a full multiply-accumulate tester to test both MAC and multiply by using a zero-term for the third operand to keep test code crisp. Especially tricky has been compact sign extension (keeping the number of rows the same) across different widths and skews for signed and unsigned and this was tested exhaustively.
Backwards-compatibility
Changed existing multipliers to use an abstract Multiply module base class.
Documentation
Documentation updated with the multiplier classes. Also updated the confapp generator to allow for web-based visualization.