-
Notifications
You must be signed in to change notification settings - Fork 112
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
Clock signals routed through INT tiles #1153
Comments
VPR has a two phase router that is an open PR here: verilog-to-routing/vtr-verilog-to-routing#928 |
I've encountered the same problem with PLL. I think that it may be a good idea to add to fasm2bels setting the `CLOCK_DEDICATED_ROUTE' to FALSE on those nets somehow. Won't solve the routing problem but will ease debugging. |
The PLL has a simplier explain, in that it was missing some One thing to note is that right now |
@litghost Two stage clock routing has been merged |
I could reproduce locally the issues related to the In the figure above, the highlighted wire (white) is the output of the
This is unrelated to the placement of the BUFG or PLL, as it interests only the routing phase, as the router chooses a wrong BUFH output to drive some FF. I suppose that a temporary fix to this issue could be to add an increased cost to those wires that can get the CLK signal to get out of the INT tile and jump across non-dedicated routes. Namely wires that, for instance, connect the GCLK ppip (of the INT tile) to GFAN (of the same INT tile). This way, VPR should be able to choose the dedicated clock routes over the non-dedicated routes. Does this make sense @mkurc-ant @litghost ? |
I think that a possible way to add the cost of the wrong paths, is to add yet another switch, opposite to the |
Can you add the bitstream fasm, fasm2bels vivado verilog, fasm2bels vivado tcl, and vivado checkpoint (dcp) in a zip? |
@litghost Sure, here it is:
|
So the bad route is:
This particular route is actually illegal if the relevant FAN_ALTx are not consuming the signal. If we fix #1019 , then this particular issue will go away. The fix is suggested here: #1019 (comment) I've started the first part of the fix here: #1151 But that PR is stale, and I believe I had to modify VPR to make it work. @acomodi, if you make that PR work, then fixing part 2 from #1019 (comment) is pretty straight forward, and would fix this issue and fix another fasm2bels failure we've been getting intermittently. |
Ok, I will look into that and get the PR to work. |
I am worried that this patch is not enough (and also disabling
I have tried disabling that, to see how far it would get, but apparently it is not enough as I encountered an issue during routing:
|
I think this command should find the problematic clock connections in the .fasm:
|
|
I think the regex should be just
|
As explained in this comment, VPR is able to route clock signals through INT tiles, violating the clock regions boundaries. This can result in non-working bitstreams, as well as an impossibility for Vivado to correctly place and route the designs produced with
fasm2bels
.Failure example of Vivado (got from https://source.cloud.google.com/results/invocations/ab9206f5-759f-4c0f-adec-69dc24e943e1/targets/foss-fpga-tools%2Fsymbiflow-arch-defs%2Fpresubmit%2Fxc7_vendor/log):
This happens because some clocks traverse the clock regions through the INT tiles, instead of using the dedicated clock net.
Another behavior I have seen is that the clock source driven from the W5 IOPAD is not being routed through the HCLK row, but reaches the BUFG through a series of jumps between INT tiles as well.
The text was updated successfully, but these errors were encountered: