-
Notifications
You must be signed in to change notification settings - Fork 679
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
TinyRocketConfig Macrocompiler synflops error #1185
Comments
Ah, the vlsi Makefile always expects an SRAM compiler to be run, so you will need to remove the Also, this is not a bug - you're just doing something that is not normal for the VLSI flow. |
Thank you very much for explaining what was wrong. I will try this out right away. |
May I suggest changing the documentation chapter 5.6 to make sure other people don't run into this error ? |
I'll figure out how to have the Makefile manage this case instead. |
Oh that would be even better. Thank you |
Hello. We migrated our EDA tools to a new machine with more RAM and CPU cores to be able to build larger designs. When trying to synthesize SmallBoomConfig using the synflops argument Genus uses more than 70GB of RAM which starts occupying SWAP space. When running the synthesis with SRAMs the memory utilization does not go over 12GB. Is this a normal occurrence ? |
Yes, this is expected. Keep in mind that SRAMs are black box macros, while a memory generated as synflops is a massive sea of flip-flops. This makes it orders of magnitude harder for Genus to time and optimize all of the paths to/from each flip-flop instance. |
Thank you very much for the reply. That’s what I thought I just wanted to be sure. Do you have any suggestions on how to approach floor planning the SRAMs if I choose to use the SRAM compiler ? Is there a way to automatically do this ? If not does the SRAM compiler output a file that specifies what macros correspond to the RTL memory instances so that I can use this information to more easily do the floor planning manually in the design.yaml file ? |
You can first start by having Innovus auto-place for you (see discussion here: https://groups.google.com/g/chipyard/c/Xa6cSqKnKOM). I'm going to just answer this question here: https://groups.google.com/g/chipyard/c/ZFm1rQU24Vs |
I am trying to place and route SmallBoom using the automatic floorplanning mode. Unfortunately the process halts after a while and I get the following message
Do you have any ideas on what is happening ? |
Hm, I have not seen that error before. It seems like an internal error with clock tree synthesis. Are any of your SRAM macros overlapping? Especially the clock pins? |
Can I check this if par has not finished normally ? If it were done I could open the design in innovus with the generated script but since it isn't I can't do that |
You can. The |
Got it. I will use the script and will check for overlaps. The dimensions I picked for SmallBoomConfig where 4000x4000 (meaning 1000x1000 in actual dimensions due to the ASAP7 scaling). Could this be too small and thus be causing these errors ? |
I don't know - I've never tried P&R-ing a SmallBoomConfig. |
Ah ok thank you either way. Before you answered I was testing with the previous version of Innovus (20.11) and it just finished clock tree synthesis without error. It now seems to be stuck optimizing the routing. In each optimization iteration the rate of violation elimination keeps decreasing so I don't think the run will ever finish. I will increase the chip size and rerun place and route. Once floorplanning is done I will use the script to open innovus and check for overlaps |
Yeah, I have seen the routing violation issue too, and so has another user: https://groups.google.com/g/chipyard/c/-8JUSeCx5qs. I don't know what's causing it, but I think it is version-dependent, but I don't remember when it started happening. |
They would be placed outside the floorplan area if they haven't been placed. Are you sure that this database is one where |
I used the script after the error on the cts run presented itself so it should be the right database |
What does the amoeba view show? |
This is a zip of the par-rundir if you want to open the chip in innovus yourself https://drive.google.com/file/d/14AylGeHKTM7OIS_ix8uzJkpG61lk2T2c/view?usp=sharing |
I won't be able to read your database (it won't be able to find paths). But, your amoeba view shows all the placed SRAMs. The problem appears to be that they're all abutting rather than overlapping - therefore pin access is not possible. You can use this rough placement to generate your own floorplan constraints. |
Would increasing the chip size even more make the automatic floor planner leave more room ? |
I don't know - I don't use the auto floorplanner. It looks like your density right now is around 70%? That's somewhat high, so give it a try? |
I will definitely try. I will do some tests in the morning and post the results. Thank you very much for all the help |
Hello. I have finally managed to place and route SmallBoomConfig using the Automatic Floorplan Mode of Innovus. The previous error I mentioned was a bug in Innovus 21.11. After installing Innovus 21.14 (there was a big delay as we only had access to older versions of the tools through a third-party and had to sign a new contract to be able to download tools directly from Cadence) the problem was resolved. In version 21.14 the issue mentioned here https://groups.google.com/g/chipyard/c/-8JUSeCx5qs is also resolved. Looking at the Innovus log afterwards I noticed two errors which do not seem to be fatal as the place and route process finishes succesfully.
Do you have any ideas on what the cause of these errors might be ? Could they be caused by some inconsistencies in the ASAP7 PDK ? After completing P&R I moved on to running a post P&R power estimation. The process finishes successfully but there are some issues. Firstly rail analysis fails in the same way as described here. Aside from this in the folders containing the active power analysis results there is no .rpt report file like there is in the static power analysis folders as shown in the attached screenshot Is this normal or is it some sort of bug ? If it is normal how can I see what the power consumption results are ? I really appreciate all the help you've given me and wish you are well |
I forgot to mention that I also made a hook to automatically convert vpd files to vcd since vpd files created by VCS 2020 cause errors in Voltus 21. Is there a place to post this hook so that other people can also benefit from it ? |
Are you using the vpd2vcd utility? How does your hook work? |
Yes I am calling the vpd2vcd utility for all waveforms files |
Since you are using hammer-sim, you can probably add your hook as a new option in the appropriate hammer plugin. @harrisonliew probably knows where to do this. |
Apologies for the late reply. The lib that throws that error has constraint tables like this:
There are values that are greater than 100 but these seem OK given that this particular one is for a CLK pin of a flip-flop. I don't see why this is an error vs. a warning, but it's not something you need to worry about. The M10 layer error doesn't quite make sense to me, since there are only 9 layers in ASAP7 + the the Pad layer. The tech LEF doesn't contain any information with those dimensions. You can probably also ignore this since M10 isn't used anywhere. As for the issue with the rail analysis + active power analysis, are you still seeing the issue with the tech/stdcell libraries failing to be merged, and then the dynamic power analysis not recognizing the ptiavg files? If so, this still seems to be a tool bug/incompatibility issue, not an issue with the commands given to it. Can you attach your newest Voltus logs to verify this? Yes, you can make a PR with the hook in https://github.com/ucb-bar/hammer-synopsys-plugins/blob/master/sim/vcs/__init__.py as a new method. I think the easiest way to have the user run this is to add it to the end of the steps list dependent on some key, such as |
Thank you very much for replying. I am glad that the P&R errors are not critical Moving on to power analysis there are two issues
and
The ptiavg files that are reported missing do exist but may be corrupted. I am attaching the voltus log file and ptiavg files in question
I really appreciate the support. I will attempt to make a PR with the hook once we clear up these issues |
P.S. until the rail analysis issues are resolved, for your class, I'd suggest just adding removal hooks for |
Thank you very much for your input. I will try and contact Cadence support regarding the library merging issue. I have been trying to make the report_power command output a report file but I've had no luck. Dynamic power analysis after appending the |
No, I don't. Does dynamic power analysis seem to be running without errors? Does static power analysis successfully write a report file? Might there be something wrong with your input waveform? |
I just checked. There are no errors reported during dynamic power analysis. Static power analysis also outputs a report file. This warning
indicates that in order to get a text-based report one needs to also call the |
According to the Voltus TCR, Specifies a power analysis include file. You can use the set_power_include_file command to specify certain I don't know what legacy commands this could be (I guess Cadence acquired some other company's tool?), but there's an example on that page: |
Background Work
Chipyard Version and Hash
Release: 1.7.0
Hash: 4a11896
OS Setup
Result of
uname -a
Linux edabox 4.18.0-372.9.1.el8.x86_64 #1 SMP Fri Apr 15 22:12:19 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux
Result of
lsb_release -a
Other Setup
No response
Current Behavior
I am trying to synthesize TinyRocketConfig using the ASAP7 PDK with the macrocompiler flag
--mode synflops
. I am running the following command firstmake buildfile MACROCOMPILER_MODE='--mode synflops' CONFIG=TinyRocketConfig
and am getting the following errorI am attaching my .yml configuration files
config_yml.zip
Expected Behavior
Should finish normally
Other Information
No response
The text was updated successfully, but these errors were encountered: