-
Notifications
You must be signed in to change notification settings - Fork 416
ODIN: Introduce mixing of soft and hard logic as part of complex synthesis #1496
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
Merged
jeanlego
merged 5 commits into
verilog-to-routing:master
from
georgkrylov:complex_synthesis
Aug 21, 2020
Merged
ODIN: Introduce mixing of soft and hard logic as part of complex synthesis #1496
jeanlego
merged 5 commits into
verilog-to-routing:master
from
georgkrylov:complex_synthesis
Aug 21, 2020
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This commit introduces a new optimization allowing to mix hard and soft logic implementation for some circuits. This optimization allows exploring frequency and device size trade-off. The optimization can be enabled from command line options. The optimization currently works only for architecture files that do not have hard adders. This commit also changes the nnode_t structure shape Signed-off-by: Georgiy Krylov <[email protected]>
This commit enables mixing hard and soft logic implementation as part of the flow by defining a global reference to the mixing optimization con- troller and doing changes to partial mapping stage to defer mapping of hard multipliers. The commit also introduces command line arguments and their default values, enabling to use the optimization. Signed-off-by: Georgiy Krylov <[email protected]>
This commit introduces a new regression test based off of micro bench- mark. The test implements half of the available multipliers in soft logic for micro benchmark. It is a first test in the series, proposed as a simple sanity check. Signed-off-by: Georgiy Krylov <[email protected]>
This commit introduces a set of results for implementing half of the available multiply operations in hard blocks, while the other half being implemented in soft logic Signed-off-by: Georgiy Krylov <[email protected]>
Hello @jeanlego, can you please review the proposed new feature for the public repository contribution? |
The problem was vtr_flow/scripts/python_libs/vtr/util.py:469:8: W0707: Consider explicitly re-raising using the 'from' keyword (raise-missing-from) Signed-off-by: Georgiy Krylov <[email protected]>
Can you link to the CAS Atlantic PR in The description too for posterity Thanks for this |
georgkrylov
added a commit
to georgkrylov/local-vtr-verilog-to-routing
that referenced
this pull request
Oct 5, 2020
The commit addresses several errors CID 212805: API usage errors (PRINTF_ARGS) Related to verilog-to-routing#1496 Signed-off-by: Georgiy Krylov <[email protected]>
7 tasks
jeanlego
pushed a commit
that referenced
this pull request
Oct 6, 2020
The commit addresses several errors CID 212805: API usage errors (PRINTF_ARGS) Related to #1496 Signed-off-by: Georgiy Krylov <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
These changes address problem of ODIN's inability to use smaller number of multipliers than it is requested by the circuit. The changes are designed to work with multipliers first, should be easy to extend to adders and other blocks due to the class hierarchy introduced.
Motivation and Context
This change is required since sometimes, the synthesis flow for fixed layout would break even if the logic could be attempted to be implemented in soft logic that is not used otherwise. Moreover, setting a limit to number of hard blocks for auto layouts might change the shape of a device and could prevent from growing the device unnecessary.
The discussion about the design choices was happening in CAS-Atlantic fork of the repository, available by CAS-Atlantic#7
How Has This Been Tested?
The testing suite is included. Involves simulator verification for correctness, sanitizer checks for several cases: no arch, just mults, fracturable mults
Types of changes
Checklist: