-
Notifications
You must be signed in to change notification settings - Fork 384
[comb-to-synth] Implement Sklanskey Tree and Architecture Selection based on Attribute #9021
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
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.
LGTM, using attributes for testing is great idea! I want to make sure that these attributes are not part of public API so could you add explicitly include test as attribute name? like synth.test.arch maybe. I think eventually it might make sense to expose these architectures as stand-alone operations synth.add.sklanskey if an user really wants to use specific architecture in a similar way to LLVM intrinsic.
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.
LGTM! Thank you for making the change.
|
This is causing nightly debug builds to timeout when running the tests added to |
|
☝️ I bumped the timeout to fix this in: 2bc2607 |
|
Thanks for catching this @seldridge - we could also split the test across multiple files to avoid the timeout issues - then can reduce the limit back down - would that be preferable? |
Introduce the Sklanskey Tree lowering option for
comb.addand make it the default option (used in the PULP Platform library of arithmetic circuits). The Sklanskey Tree is as fast as a Kogge-Stone adder but tradesoff greater fan-out for less logic (preference will depend on target technology).To aide testing purposes - make architecture selection optionally controlled by an attribute on the operator - in future this could be expanded to provide a way in which analysis passes could modify operator implementation selection, without interacting with the lowering pass itself. Open to suggestions if this is not a preferred method for passing "synthesis" controls?