-
Notifications
You must be signed in to change notification settings - Fork 10
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
Separate generation step from HW build #214
Conversation
Check it out! I'm waiting for the docker build of PR #215 to finish. Will run the test and the data reshuffle should pass. |
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.
The way the rtl being generated is not friendly to system integration, as occamy will provide the cfg from elsewhere instead of the one located at cfg/ inside snax repo. To avoid confusion, the cfg file is renamed to other names in occamy. Is it possible that we find a way that the generation does not rely on the file name of cfg, but rely on the information inside cfg? I think the integration would be easier.
At the same time, the problem on data reshufflers still exists... |
b530dd7
to
d0d8448
Compare
Let's fix with issue #216 to and see if it works nicely with the "occamy" version.
This is the verilator version problem hehe PR #215 fixes it. See the main now 😄 |
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.
Good! We finished one task in #216 !
Thanks @IveanEx !! |
Hi, Sorry I was on holiday, so this review appears a bit too late. Okay for me to provide a seperate step to generate RTL, but this means that I put quite a bit of effort in #136 to make this work, and this PR just removes the original "fix"? The original problem is that make does not work with multiple outputs being generated in one build command. This PR does not fix that issue. I.e. people should be able to just run Either you:
|
Maybe the easiest way is to add rtl-gen dependency to bin/snitch_cluster.vlt target? I also do not know whether there is a parallel compilation problem, and I think it should not happen. Occamy's integration flow requires snax cluster to only generate rtl, and I think decoupling rtl generation and vlt compilation is quite good as rtl source can be used by multiple targets later. |
After a discussion with @JosseVanDelm I think I understand better what is needed. Technically, this fix is not a problem but it takes away the parallel build or parallel execution features of Make. Also it helps with setting dependencies for "proper" dependency tracing. For example, if the streamer is missing then Makefile can report or do something to make sure that the streamer is generated or so. Well to be fair, we had in mind originally to separate the rtl generation from the build because we need it for our FPGA/ Synthesis flow because we just literally need the files generated first and skip the builds. What @JosseVanDelm points out is the proper way of using Makefile, and of course, using its parallel execution features. There's a way to make this work! So I made issue #228 to track this problem. |
This PR separates the RTL generation made from wrappers and chisel from the build.
Problem: The intermittent bug is caused by parallel build but sequential RTL generation causes CI to fail. This happens because sometimes the timing of the generation file does not finish before the build starts. This happens because sometimes the Chisel
sbt
ormill
takes too long to download whatever it needs from a server.Solution: Sequentially build all RTL files first before starting parallel builds. This ensures that all the RTL files are ready before the build happens.
Benefits:
make rtl-gen
command and it generates the files that need to be checked.What changes in CI?:
make rtl-gen
step before the build.