You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This post-routing check is very slow for the 7-series. It is O(N^2) in design/device size when you have many L-shaped or T-shaped (shorts) wires.
Proposed Behaviour
Possible solution:
Re-code the check to go through a net and put counts of how many times each non-configurable node set and edge set occurs in that route using an unordered_map with a key of the edge set / node set id. Then call the existing checking code with only those sets passed in.
Or you could be a little faster still for high fanout nets by having an unordered_map keyed by node set, where each entry is itself an unordered_set of the node ids that are in that non-configurable set. Do the same intersection checks between that unordered_set (from the net) and the non-configurable node set it matches to see they are identical. Do the same thing for non-configurable edges.
The code has some nice error messages; can either incorporate them, or just call the existing code on any net that fails your checks to get nice error messages.
Current Behaviour
This code works but takes 15,000 on LU32 with the 7-series; 3x or so the total runtime of all other algorithms combined. It will be worse for bigger design.
At the same time, please add --check_route to the documentation of command line options.
The text was updated successfully, but these errors were encountered:
This post-routing check is very slow for the 7-series. It is O(N^2) in design/device size when you have many L-shaped or T-shaped (shorts) wires.
Proposed Behaviour
Possible solution:
Re-code the check to go through a net and put counts of how many times each non-configurable node set and edge set occurs in that route using an unordered_map with a key of the edge set / node set id. Then call the existing checking code with only those sets passed in.
Or you could be a little faster still for high fanout nets by having an unordered_map keyed by node set, where each entry is itself an unordered_set of the node ids that are in that non-configurable set. Do the same intersection checks between that unordered_set (from the net) and the non-configurable node set it matches to see they are identical. Do the same thing for non-configurable edges.
The code has some nice error messages; can either incorporate them, or just call the existing code on any net that fails your checks to get nice error messages.
Current Behaviour
This code works but takes 15,000 on LU32 with the 7-series; 3x or so the total runtime of all other algorithms combined. It will be worse for bigger design.
At the same time, please add --check_route to the documentation of command line options.
The text was updated successfully, but these errors were encountered: