-
Notifications
You must be signed in to change notification settings - Fork 43
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
Add tests for ASIC flow with ASAP7 #172
Comments
It is possible to finish the flow by moving the In GDS from ORFS flow filler cells are placed uniformly throughout the whole die and they cover the whole unused part of the layout. There are multiple types of filler cells used:
It looks like filler cells are placed along Power Delivery Network lines.
PDN looks quite different - it has less power lines (horizontal, parallel lines from one edge of the die to other), the spacing between those lines in bazel_rules GDS is 4 times bigger than in GDS from ORFS. I will attach here GDS files for comparison.
and for bazel flow:
Additional notes on attached GDS generated from bazel flow:
ASAP7 comes with 2 variants of the technology: regular and scaled (4 times bigger). However, ASAP7 does not provide all required files for the regular variant (e.g. technology LEF), all files required for RTL->GDS flow are available only for the scaled variant. On the other hand, bazel_rules_hdl in rules for ASAP7 uses scaled variant (even though cell library target is named asap7_rvt_1x) because it is the only one which has all the required files available directly in PDK repository. I also noticed that ASAP7 version used in Having said that, I feel that most of the issues that I have now with the bazel flow with ASAP7 are caused by some possible inconsistencies in this scaling between two variants of the PDK. For now, I think the most important question is to decide whether bazel flow implementation should be as close to ORFS implementation as possible (use regular PDK variant, modify missing files on the fly or fix upstream PDK) or should it just use what is currently available in the PDK (stick with the existing implementation, use scaled x4 variant of the PDK). @proppy and @QuantamHD I would greatly appreciate your opinion here. |
Is there already an issue in the ASAP7 repo to discuss reconciling the two version? It sounds like we should be able to import ORFS version in the ASAP7 repo since it's incomplete there.
I think it would also be useful to compare the TCLs generated by bazel_rules_hdl with the ones coming from ORFS for ASAP7, to see how the two flows differ. |
There was The-OpenROAD-Project/asap7#19 which touched the problem. There is a comment there that states the files are missing due to licensing issues.
I will check TCL scripts, compare them and post the results. |
@QuantamHD for visilibility |
I did an experiment with the following changes to bazel_rules_hdl flow:
GDS file generated with such modified bazel flow is very similar to GDS generated with ORFS. The spacings between filler cells and PDN lines are the same now, however the flow still fails on |
curious what happens if you use if you grab the ASAP7 bits from ORFS (https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/tree/master/flow/platforms/asap7) rather than the ASAP7 upstream repo? Do you still get the same failures? |
klayout has a gdstxt export which could be useful for diffing: https://github.com/KLayout/klayout/blob/master/src/buddies/src/bd/strm2gdstxt.cc |
do you mean |
did you already compare the |
Yes, sorry
In bazel_rules_hdl filler cell placement is done in the same script as clock tree synthesis. I will try to use ASAP7 files from ORFS and check this |
@proppy I was able to finish the flow and pass Now I will focus on isolating the fix which is probably one of the changes described in the linked comment. Then I will try to answer the question: Why those additional filler cells cause placement check failures in bazel flow? EDIT:
|
In order to enable processing designs targeting ASAP7 PDK and to achieve results similar to
With recent updates to ASAP7:
|
From what I see, when it comes to ASAP7 support in
bazel_rules_hdl
the tests cover only the synthesis step:bazel_rules_hdl/synthesis/tests/BUILD
Lines 71 to 78 in e30c65c
It would be good to add tests that will run
place_and_route
andgds_write
flows with the results fromverilog_counter_asap7_synth
as input. This is a blocker for google/xls#996I started work on adding this but I encountered errors in Clock Tree Synthesis. Looks like there are problems with placing
FILLER
cells, here is the log:CC @proppy
The text was updated successfully, but these errors were encountered: