-
Notifications
You must be signed in to change notification settings - Fork 419
Upgrade the Yosys+Odin-II Front-end #2148
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
base: master
Are you sure you want to change the base?
Conversation
147fb37
to
88e04a0
Compare
@aman26kbm - this branch improves the Yosys+Odin-II front-end and should address some of the issues we discussed for Koios 2.0. Would you please give it a run and let me know your thoughts on the results? |
Sure, lemme try it out. |
Thanks @aman26kbm - JFYI, no worries about the last commits as they only include updates in expected results. |
97bfd3c
to
4e809c8
Compare
Hi Seyed, this PR seems to have some issue. I ran these designs:
I ran them in 4 modes:
The results are tabulated in this spreadsheet: https://utexas.sharepoint.com/:x:/s/LCATeam3-VTR-ML-Benchmarks/EWQwBjnUJLxPjnq5QqTwP-wB50gk4hfGXz9YwkroBCB4lg?e=LtxlGI In most of the Yosys+ODIN runs, you'll see the results are blank. That's because I see this error in the log files:
In the "hard" runs, I see the error mentioned above only in 1 design - tiny_darknet_like.small. Also, for the designs that do pass, I still see some differences because of packing (attention_layer, eltwise_layer, lstm, robot_rl, softmax). |
Thanks @aman26kbm - let me go through it one more time. Meanwhile, can you provide me with the Koios++ scripts you use to run the VTR flow? |
Sure. The scripts are located here: There are scripts here for generating various folders for experiments, generating task configs, parsing results, etc. But don't worry about all that. I name experiments as exp1a, exp1b, exp4c, etc. They correspond to the different experiments we conduct for the paper. For the current case, the relevant folders that you need are: You can go inside each folder and you'll see the You can just execute the |
Moving an email thread here:
The QoR Comparison for all front-ends, including the comparison of the previous version of Yosys+Odin-II to the upgraded one, is in the following links. Upgraded Yosys+Odin-II QoR comparisons for a small set of Koios2.0 benchmarks |
370886a
to
a928eb1
Compare
…oration by utilizing Yosys built-in coarse-grained synthesis steps in addition to calling simplemap for basic operations. At this point Odin-II mainly performs the partial technology mapping on arithmetic operations, memories (soft and hard), and HARD IPs Signed-off-by: Seyed Alireza Damghani <[email protected]>
…they are introduced by recent changes on the Yosys+Odin-II coarse-grained synthesis script Signed-off-by: Seyed Alireza Damghani <[email protected]>
…sensitivity and the initial value of latches in the BLIF files read by Odin-II BLIFReader [Odin-II]: enhance the Odin-II bit map reader for finding logic types in the BLIF files for LOGICAL OR Signed-off-by: Seyed Alireza Damghani <[email protected]>
…y satisfied the partial mapper requirement - padding signals with from gnd net instead of unconn for equalizing port sizes Signed-off-by: Seyed Alireza Damghani <[email protected]>
…ers have the same name as top output signals Signed-off-by: Seyed Alireza Damghani <[email protected]>
…pass for basic operations. Memory, arithmetic, latches and simple dffs with set/reset will remain for the Odin-II partial mapper. The purpose of adding this pass was to avoid losing some intermediatory connections between submodules and the top module when a pure coarse-grained BLIF file was generated by Yosys. Signed-off-by: Seyed Alireza Damghani <[email protected]>
…ingle bit width node in the partial mapper - treat single bit width and single port logical OR as BUF nodes to eliminate them later in the partial mapping phase Signed-off-by: Seyed Alireza Damghani <[email protected]>
…LIF file by BLIFReader - move reduce_input_port after port size checking while equalize input port routine is called Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
…nchmarks located in regression_tests/benchmaks/common - fix output port size of div and mod benchmarks to avoid additional warnings in JSON results Signed-off-by: Seyed Alireza Damghani <[email protected]>
…s benchmarks Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
- update simulation output vector for bm_dag3_mod and bm_expr_all_mod Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
- update simulation output vectors Signed-off-by: Seyed Alireza Damghani <[email protected]>
…vtr benchmarks Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
…rch, bm_match4_str_arch, and bm_expr_all_mod Signed-off-by: Seyed Alireza Damghani <[email protected]>
… collecting memory instances Signed-off-by: Seyed Alireza Damghani <[email protected]>
…or multiport memory (regardless of the number of ports) - fix a memory leak in split_cascade_port Signed-off-by: Seyed Alireza Damghani <<[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
… Yosys plugins installed - report the frontend elaborator used by Odin-II Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
…ion test Signed-off-by: Seyed Alireza Damghani <[email protected]>
Signed-off-by: Seyed Alireza Damghani <[email protected]>
dc0474d
to
a26d280
Compare
Signed-off-by: Seyed Alireza Damghani <[email protected]>
…rilog-to-routing into enhance_yosys_odin_koios++
Signed-off-by: Seyed Alireza Damghani <[email protected]>
@aman26kbm - Would you please share a short summary of the results and your thoughts here? If there is no more roadblock or issue, we can move forward and merge this PR. |
Here's the update from the runs from yesterday (only ran these 5 designs because these are the ones that have been giving us trouble lately): Yosys+ODIN hard ODIN-only hard Yosys+ODIN soft ODIN-only soft |
We temporarily suspend this PR to provide appropriate solutions for the bugs mentioned above. |
Hey @alirezazd and @poname , this PR is about upgrading the Yosys+Odin-II front-end by using more Yosys side by performing some simple mapping and postponing technology mapping of the memory hard blocks and DSPs to Odin-II partial mapper. So going forward, please keep @aman26kbm posted about your updates/enhancements, specifically about this PR. |
CI is green and the code looks OK to me -- should this be merged at this point? @aman26kbm @sdamghan please let me know. |
These changes were leading to some degradation in results for some designs (in addition to the improvement in many designs). So, we decided to hold off merging this PR until they are debugged. |
Description
In this PR, the Yosys script for the Yosys+Odin-II is updated to perform the synthesis for basic operations by Yosys. Then Yosys generates the BLIF file with unmapped and coarse-grained memories, arithmetic operations, simple DFF types with set/reset, and latches so that the Odin-II partial mapper will take care of them.
Related Issue
Motivation and Context
Fixing issues raised by the Koios 2.0 development team
How Has This Been Tested?
Types of changes
Checklist: