-
Notifications
You must be signed in to change notification settings - Fork 416
Wire length metric incorrectly terminates routing iterations #524
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
I was able to reproduce this with:
on master. The wirelength early abort threshold is there to avoid spending large amounts of CPU time when routing is far to congested to finish -- this is generally a good thing, and not something we want to remove in general. What's happening in this case is that on the first iteration all signals end-up on the dedicated routing network (since it's only a single 'hop' between source and destination). But since the dedicated routing network consists of shorted-together RR nodes which span the entire chip, each net ends up using a huge amount of wiring which causes the wirelength abort threshold to be hit. A short-term work-around is to make the wirelength abort threshold a command-line option so it can be adjusted if it causes issues on architectures like this. A longer-term fix is to modify how the router internally costs non-configurably connected nodes. Currently a set of non-configurably connected nodes are costed as equivalent to the minimum-cost across all the nodes in the set. This is what you may want from a timing perspective (i.e. it's good to use the non-configurably connected set of nodes if one leads to a faster path). However for large sets of nodes (like in this case) it drastically under-estimates the resource cost (e.g. wirelength) of using them. |
I kinda figured it would be something like this.
Agreed.
Wouldn't this penalize the global network? That might be a bad thing in the case of a global network. I think it would more accurately characterize the solution is to have the router avoid the global network if the source of net cannot reach the global network? |
It's somewhat a matter of perspective. I agree that more carefully controlling access to the global network (e.g. #521) would probably help this specific case. However in general the router should truly understand the cost of using a dedicated network. For example in this architecture, choosing to use it means it uses a lot of wire, and it may be better (e.g. for a low fan-out signal) to use the regular wiring. I've filed #525 to log that issue. |
93fc414 gives a command-line option to control the wirelength abort threshold as a work-around. |
Should be fixed as of 616833e which fixes the costing of non-configurably connected routing. Previously I would get:
Where the first iteration use > 100% of available wire since most signals try to use the global network. With the latest code I now get:
Where most signals avoid the global network since it is now costed in proportion to its wirelength. |
Uh oh!
There was an error while loading. Please reload this page.
Expected Behaviour
Routing should complete
Current Behaviour
Possible Solution
Disabling the wire length usage ratio results in a valid routing solution very quickly:
Steps to Reproduce
The text was updated successfully, but these errors were encountered: