-
Notifications
You must be signed in to change notification settings - Fork 177
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 initial support for Symbiflow toolchain for Xilinx 7-series #463
Add initial support for Symbiflow toolchain for Xilinx 7-series #463
Conversation
Considering |
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.
@Ravenslofty is correct. The choice of the toolchain lies not with the board file author, but with the board file end user, so there should only be a single platform for Vivado and Symbiflow, similar to what is done for iCE40 and ECP5.
89567c5
to
7e1fe07
Compare
I've implemented your suggestions. Now you just have to pass |
Thanks, this is much better.
Would it be possible to use the same device name for the vendor and the FOSS toolchains? For other platforms that support both, this is handled transparently: either by adjusting the FOSS toolchain to accept the same device names, or by mapping them within nMigen. E.g. you can see this done in the ECP5 platform file. |
7e1fe07
to
e499ba9
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.
LGTM
elif self.toolchain == "Symbiflow": | ||
cd_sync = ClockDomain("sync", reset_less=self.default_rst is None) | ||
m.domains += cd_sync | ||
m.submodules += Instance("BUFG", i_I=clk_i, o_O=cd_sync.clk) |
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.
Does Symbiflow actually need this BUFG
, or can it insert one automatically?
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.
Simple example (blinky) works without this bufg. However, we had some problems with Litex+VexriscV+Linux without it.
Thanks! |
Have you tested the PR? It currently completely breaks 7-series because |
Fixed in abaa909. |
The PR adds initial support for Symbiflow toolchain for XC7 devices. To use Symbiflow instead of Vivado, a platform should inherit
Xilinx7SeriesSymbiflowPlatform
instead ofXilinx7SeriesPlatform
.The example used below is a copy of
arty_a7.py
from nmigen-boards, where in addition to changing the base class, the device (part) name has also been changed (original part is not present in prjxray/symbiflow database).Test: