-
Notifications
You must be signed in to change notification settings - Fork 415
Routing failure on global channel structure #520
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
Visualization of issue https://docs.google.com/drawings/d/1P-_r5eF1d5eXGhshIwqI-EtSzA3WNNMAUDndIsNwi3M/edit |
Thanks for the report, and the helpful visualizations. 1. Bounding Box for nets on dedicated global networks As you noted to use a global network fully the router's bounding box must include all the networks resources (otherwise the router won't explore it fully and you can end up with disconnected resource as you found). I think the long term fix is to handle nets which are expected to route on global resources specially. @mustafabbas is looking at a two-stage approach for routing signals on dedicated global networks (primarily motivated by clocks):
The same method could be applied to your vcc/gnd use case. For the stage 2 routing it would make sense to use a bounding box which matches the dimensions of the global network (rather than the driver/sink location) which would avoid the issue you are seeing. 2. Shorted Connections I've been able to reproduce the issue with shorted connections. This looks like a limitation of the router's handling of shorted connections. With VTR_ENABLE_DEBUG_LOGGING on, and --router_debug_net 6 I get:
Which shows the router followed the OPIN ( However the limitation is the router does not correctly explore the pins reachable from all the The fix is to have the router expand from all the |
We are interested in this as well. Do you have a issue tracking this work? |
Filed as #521 |
I believe this is fixed as of 08b8a0f. I had to make one change to your shorted RR graph to make this work. Currently in your RR graph the OPIN's driving the dedicated vcc/gnd network are also 'short'-type switches. This causes issues with the routing legality checker since 'short' type switch expect there to be two edges (bi-directional) between shorted nodes -- but you only have the forward edge leaving the OPIN. The fix is to just convert the OPIN edge to use a regular configurable switch:
|
Expected Behavior
The router should successfully find a path from source to sink.
Current Behavior
The router fails to find a path from source to sink in 3 of the 4 cases tests.
Possible Solution
Using a high bb_factor and mux's instead of shorts for connecting the channels appears to enable the router to find a path. The channel design could also be changed to suit the router better, but it is not completely clear how much of this is a router bug versus a rrgraph bug.
Steps to Reproduce
This fails to complete successfully on both the mux and short versions.
Context
As part of exploring how to route constants in VPR (#163), I attempted to create a global network for the VCC and GND signal, and modified my synthesis tool to emit the $true (e.g. VCC) and $false (e.g. GND) signals connected to these sources. Generating the new rrgraph was not to complicated, however when I went to test it, the router failed to find a path between the constant source and the pin sink.
The shape of the global constant network is a set of CHANY (which span the entire height) with one CHANX spanning the entire width, which are all connected to each other with shorts.
Your Environment
VPR built from litghost@1077383
The text was updated successfully, but these errors were encountered: