Skip to content
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

Faster check_non_configurable_edges #2835

Open
vaughnbetz opened this issue Dec 4, 2024 · 0 comments
Open

Faster check_non_configurable_edges #2835

vaughnbetz opened this issue Dec 4, 2024 · 0 comments
Assignees

Comments

@vaughnbetz
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants