-
Notifications
You must be signed in to change notification settings - Fork 113
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
Use Litex generated tests in the soc litex designs for xc7 #1657
Conversation
f6e5903
to
2bb7680
Compare
51dfbcd
to
bfb5564
Compare
bfb5564
to
f78acf8
Compare
72e2264
to
d9f0f3b
Compare
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.
Comments in
64f2fc1
to
555d81f
Compare
XDC ${LITEX_GATEWARE}/top.xdc | ||
) | ||
else() | ||
add_fpga_target( |
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.
Why do we need to support PCF / SDC? I believe XDC should always work 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.
I will add a comment about that. I have seen the following problem. For the minilitex test without DDR and without ethernet, the PLL that is generated by Litex has clocks that will not get used as related to DDR.
This generates issues when creating the SDC, as the final SDC will have clocks that are absent in the VPR netlist.
I believe that this might be yet another fix for the plugin? If a clock does not have any loads, the constraints should not be emitted for that clock.
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.
If the symbiflow
flag is provided, LiteX generates the SDC and PCF
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.
I believe that this might be yet another fix for the plugin? If a clock does not have any loads, the constraints should not be emitted for that clock.
I believe that there was talk of VPR demoting a missing clock match to a warning instead of an error. Maybe something to bring up with Vaughn?
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.
Also, I'd argue that it should be accepted without a warning to create a clock on a net with no loads. The key here is have the SDC parser recongize the difference between:
- A net that was pruned because it has no loads
- A net that doesn't exist at all
The first is not a warning, and the second is likely user error. This seems like something to fix in VPR upstream.
4efc05f
to
270a0a2
Compare
FIXUP_SCRIPT ${FIXUP_XDC} | ||
FLAGS | ||
--toolchain symbiflow | ||
VIVADO_XDC arty_clocks.xdc |
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.
Why are we not using the XDC from LiteX? Or does LiteX not supply a clock constraint?
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.
LiteX does supply clock constraints, but the problem was, IIRC, that the output of fasm2bels (Verilog/XDC) does not include certain clock ports present in the LiteX generated XDC, ending up in an error when trying to read it.
I need to double-check this though.
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.
This is still outstanding?
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.
I will open an issue to keep track of this
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.
In general we need an issue tracking the burn down for the remaining "weirdness" around the LiteX support. Examples include this, the fixup_xdc
script, the --toolchain symbiflow
/SDC stuff from the other converstation, etc.
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.
Oh and the bittool / diff FASM disable too.
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.
Couple small comments, otherwise LGTM.
Remaining comments:
137f09a
to
ac5b5e0
Compare
ac5b5e0
to
832481f
Compare
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Tomasz Michalak <[email protected]>
Also added new required submodules Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Also use regexp for the fixup xdc script Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
832481f
to
71ae720
Compare
CI went finally green |
GENERATE_SCRIPT ${GENERATE_LITEX} | ||
FIXUP_SCRIPT ${FIXUP_XDC} | ||
FLAGS | ||
--toolchain symbiflow |
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.
What does --toolchain symbiflow
do? I noticed that xc/xc7/tests/soc/litex/mini_ddr/CMakeLists.txt
doesn't use --toolchain symbiflow
.
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.
This was related to the fact that the PLL generate extra clocks and BUFG which are not used, ending up in clocks generated in the SDC, but they are absent in the cleaned circuit in VPR, therefore the SDC commands for the inexistent generate an error
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.
Please add a row into the burndown to address this issue. If VPR sweeps a netlist, and an SDC that was valid looks invalid, that needs to not be an error. I believe we discussed this a couple times, but it keeps cropping up.
The outstanding comments still need to be addressed, but please open follow up PRs. |
The objective of this PR is to have the netlists for the litex designs used in xc7 soc tests to be auto-generated.
This PR is WIP because so far it has been verified only on the mini_litex design and it depends on other PRs that haven't been merged yet such as the SDC plugin, params plugin integration, SDC plugin integration. It also requires the latest VPR with the
never_prune
attribute support. Last, but not least there are some SDC commands that have to be handled by Yosys.