-
Notifications
You must be signed in to change notification settings - Fork 36
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
GL simulation failing #252
Comments
@KelvinChung2000 @IAmMarcelJung @EverythingElseWasAlreadyTaken Hi, sorry to ping you, but I was wondering if one of you has an idea what could be the problem here? I'm at the end of my rope, I'm literally using the upstream FABulous repository, converting the LUT4AB to a GL netlist and simulating it. This should work without any problems... I've used the same approach on a larger RISC-V core and was able to simulate its GL netlist without issue. |
Hi @mole99, no need to be sorry, we are currently all just a bit busy :) I know that @EverythingElseWasAlreadyTaken was looking into the GL simulation, but I don't know what he found out. He is also currently not available but he will be available in the course of this week I think. Sorry that currently we/I can't help any further at the moment! |
Thanks for letting me know :) I look forward to any news on this issue! |
Hi @mole99, I can say that our synthesized GL-netlist and behavioral rtl should behave the same for defined values, but if there are some X values involved, the behavior differs quite a lot, especially in multiplexer implementations. Sadly, Icarusverilog has no real support for handling X-propagation, so I tried CVC, which sadly seems to be kinda buggy for our use cases. Most simulations end with a segmentation fault and whenever I try to use any X-propagation feature or commands that initializes my X values with 0/1 or just run the simulation as 2-state, it just freezes while compilation or execution. I would guess that FPGA designs with this massive amount of logic loops could be too complex to handle for CVC and are more a corner case for the most simulators. Maybe commercial ones could handle this better, or it can be at least constrained somehow. If you have any ideas, we could maybe set up a call and try to brainstorm a bit. |
Hi @EverythingElseWasAlreadyTaken, thanks for your reply and for taking a look at the issue! I thought I was going crazy ^^ But your observation of a different behavior in the X-propagation of stdcells compared to behavioral makes a lot of sense! I'll try to read up on the subject and maybe we can have a short call next week? |
Hello, I've been trying to get gate level simulation working with FABulous but have been unsuccessful so far. My goal is to run the same simulation that is generated in the fabric under the
Test/
folder, but by substituting the RTL of the LUT4AB with its GL representation (as a start).But when I do that, the output of the fabric no longer matches the golden reference:
Reproducing the Issue
Simply create a new fabric with default settings using the
main
branch of FABulous (the development branch gives the same result). Use the latest version of the sky130 PDK and OpenLane 2 and harden the LUT4AB tile into a macro (skip STA).The OpenLane 2 configuration is
custom.v
simply contains:After OpenLane 2 has finished, copy the final GL netlist (
LUT4AB.nl.v
) to theTest/tmp
directory (make suretmp
is not deleted after the last simulation run) and delete the RTL files for LUT4AB. The scriptrun_simulation.sh
needs to be updated to load the stdcells and setFUNCTIONAL=1
andUNIT_DELAY=#0
:To quickly reproduce the issue, I have gathered all the required files and attached them to this report in a zip folder.
reproduce.zip
To run the simulation, unpack the zip file, cd into it and simply do:
And you should get the same output as above.
I assume the FABulous team has done GL simulations for the MPW submissions before? I would really appreciate it if you could give this a try and let me know what I'm doing wrong or whether there's an issue in FABulous.
Thanks!
The text was updated successfully, but these errors were encountered: