-
Notifications
You must be signed in to change notification settings - Fork 415
Unroutable connection on SymbiFlow tests #1571
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
Comments
@litghost @vaughnbetz FYI. @tangxifan tagging also you as I see these changes were included in the RR graph fixup PR. Maybe you can have some additional insights on this. |
The prior code wasn't correct for pins that could occur on multiple sides/locations; they were each given their own rr-node rather than having one rr-node with more switches. If symbiflow was relying on the same pin number on different sides / locations on a block being different rr-nodes, the right fix would be to make two different pins for the two distinct inputs. I'm not sure of exactly how symbiflow finds the rr-nodes to which it wants to add connections; perhaps there is a fragility there where it is getting the rr-node index to add connections to in a way that had some implicit assumptions, and hence is not working with the new rr-graph. |
@vaughnbetz Thanks for the insight. I think I have solved the issue on the symbiflow side, as suggested. Basically, with the local fix in symbiflow, now multiple switches are generated for the same node that is related to a pin that can occur on multiple sides. I'll need to further test this and make sure that everything is working as supposed. |
This issue has been inactive for a year and has been marked as stale. It will be closed in 15 days if it continues to be stale. If you believe this is still an issue, please add a comment. |
This issue has been marked stale for 15 days and has been automatically closed. |
Expected Behaviour
Routing passes correctly.
Current Behaviour
Routing fails to find a connection between SOURCE and SINK.
Possible Solution
I have tracked down the source of this error being in this piece of code:
vtr-verilog-to-routing/vpr/src/route/rr_graph2.cpp
Lines 1139 to 1181 in 489eb5b
More specifically, the issue seems to be due to the one time increase of the
index
pointer whenever a pin is assigned to an RR node. Previously, the pin could be associated with multiple nodes depending on the four possible sides of the tile.The flow to generate the RR graph in SymbiFlow is the following:
The issue, I believe, is the fact that the "virtual" RR graph might not contain all the necessary nodes to patch it correctly, ending up in a situation where some of the connections required are now missing, causing the unroutability issue reported above.
This because, instead of increasing the index counter and, as far as I understood, creating a single node for each tile pin's sides, only one node is generated.
By re-allowing the increase of the index for each side of the pin within the tile solved the issue.
Steps to Reproduce
Your Environment
The text was updated successfully, but these errors were encountered: