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

[AP] Partial Legalizer #2765

Conversation

AlexandreSinger
Copy link
Contributor

This adds the Patial Legalizer block into VPR. A Partial Legalizer takes a partial placement (which likely has many overlapping blocks and is very illegal with blocks in the wrong tiles) and creates a more legal partial placement. These are often called spreaders since their main task is to spread blocks away from each other (the solver tends to put blocks on top of each other).

Added a multi-commodity flow-based spreading partial legalizer based on the work by Darav et al. This algorithm was modified to work within the VPR infrastructure on any hypothetical architecture which can be expressed in VPR.

@github-actions github-actions bot added VPR VPR FPGA Placement & Routing Tool lang-cpp C/C++ code labels Oct 11, 2024
@AlexandreSinger AlexandreSinger force-pushed the feature-ap-partial-legalizer-upstreaming branch from a0081c5 to 61c17c9 Compare October 18, 2024 04:33
Copy link
Contributor

@vaughnbetz vaughnbetz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

vpr/src/analytical_place/full_legalizer.cpp Show resolved Hide resolved
vpr/src/analytical_place/partial_legalizer.cpp Outdated Show resolved Hide resolved
vpr/src/analytical_place/partial_legalizer.cpp Outdated Show resolved Hide resolved
vpr/src/analytical_place/partial_legalizer.cpp Outdated Show resolved Hide resolved
vpr/src/analytical_place/partial_legalizer.cpp Outdated Show resolved Hide resolved
vpr/src/analytical_place/partial_legalizer.h Outdated Show resolved Hide resolved
vpr/src/analytical_place/primitive_vector.h Outdated Show resolved Hide resolved
vpr/src/analytical_place/primitive_vector.h Outdated Show resolved Hide resolved
vpr/src/analytical_place/primitive_vector.h Outdated Show resolved Hide resolved
vpr/src/analytical_place/primitive_vector.h Outdated Show resolved Hide resolved
@vaughnbetz
Copy link
Contributor

Merge whenever you see fit ...

@AlexandreSinger AlexandreSinger force-pushed the feature-ap-partial-legalizer-upstreaming branch 2 times, most recently from ab9e064 to 34200ac Compare November 12, 2024 00:42
This adds the Patial Legalizer block into VPR. A Partial Legalizer takes
a partial placement (which likely has many overlapping blocks and is
very illegal with blocks in the wrong tiles) and creates a more legal
partial placement. These are often called spreaders since their main
task is to spread blocks away from each other (the solver tends to put
blocks on top of each other).

Added a multi-commodity flow-based spreading partial legalizer based on
the work by Darav et al. This algorithm was modified to work within the
VPR infrastructure on any hypothetical architecture which can be
expressed in VPR.
@AlexandreSinger AlexandreSinger force-pushed the feature-ap-partial-legalizer-upstreaming branch from 34200ac to 499b266 Compare November 12, 2024 01:59
@AlexandreSinger AlexandreSinger merged commit b6094d4 into verilog-to-routing:master Nov 12, 2024
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang-cpp C/C++ code VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants