-
Notifications
You must be signed in to change notification settings - Fork 155
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
Add example graph folding prototype. #1477
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Keith Rothman <[email protected]>
Signed-off-by: Keith Rothman <[email protected]>
Signed-off-by: Keith Rothman <[email protected]>
Signed-off-by: Keith Rothman <[email protected]>
Signed-off-by: Keith Rothman <[email protected]>
I've updated this with a new schema that finds "Maximum Edge Cardinality Bicliques" and then does a greedy set cover to select the bicliques. Given that both maximum edge biclique and set cover are NP complete, this is almost certainly not optimal. There is also a linear scan in both the wire to node and node to wire lookups, but the N is not large (~27 max). Results:
|
Signed-off-by: Keith Rothman <[email protected]>
212a147
to
5188491
Compare
Signed-off-by: Keith Rothman <[email protected]>
94e2eef
to
5caec63
Compare
Signed-off-by: Keith Rothman <[email protected]>
@litghost I'm probably not going to have time to really review this. Could you get someone else to look at it (maybe someone from BYU)? |
@nelsobe Can you find someone to review this? |
tile_type_to_count, key= | ||
lambda tile_type: tile_type_to_count[tile_type] * tile_type_to_wires[tile_type] | ||
): | ||
print( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps you could print something at the top of the output of this for loop that describes what is being printed.
ie TILE_TYPE - NUM_TILES - NUM_WIRES
, or something more descriptive.
sizeof_wire_in_tile_idx = struct.calcsize('i') | ||
cost_per_wire = 2 * sizeof_delta + sizeof_wire_in_tile_idx | ||
max_wires_per_tile = 0 | ||
_ = cost_per_wire |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this cost_per_wire
used anywhere else?
This creates an example efficient folded routing graph for use in place and route tools. Table of results:
I'm working on creating the binary node to wire map and node to downstream pip maps based on the same basic premise. I'll update this table as I get results.