-
Notifications
You must be signed in to change notification settings - Fork 414
[AP][GlobalPlacement] Improved Partial Legalizer Legality #2942
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
Merged
AlexandreSinger
merged 1 commit into
verilog-to-routing:master
from
AlexandreSinger:feature-ap-partial-legalizer
Mar 20, 2025
Merged
[AP][GlobalPlacement] Improved Partial Legalizer Legality #2942
AlexandreSinger
merged 1 commit into
verilog-to-routing:master
from
AlexandreSinger:feature-ap-partial-legalizer
Mar 20, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@amin1377 Please review! |
240822c
to
51bddab
Compare
amin1377
requested changes
Mar 20, 2025
51bddab
to
fa7e727
Compare
Updated the partial legalizer to now take into account block types when spreading blocks. This will create windows around overfilled bins that is aware of which block types are overfilled and how large the window needs to be to accomodate them. It also takes these block types into account when spreading to only allow blocks to spread into sub-windows that they can exist in. This improves quality but was detremental to performance, so some performance improvements were needed. To improve the performance of the partial legalizer, I split the problem into groups of models which must be spread together. This allows us to create tighter windows and can make some parts of the legalizer more efficient. Create a model grouper class which forms the model pack patterns into a graph and find disconnected sub-graphs to form the model groups. Also improved the window generation by pre-clustering the overfilled bins before creating the windows. This sped up the window generation code since less windows overlap.
fa7e727
to
ce50295
Compare
amin1377
approved these changes
Mar 20, 2025
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.
Thanks, Alex!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Updated the partial legalizer to now take into account block types when spreading blocks.
This will create windows around overfilled bins that is aware of which block types are overfilled and how large the window needs to be to accomidate them. It also takes these block types into account when spreading to only allow blocks to spread into sub-windows that they can exist in.
This improves quality but was detrimental to performance, so some performance improvements were needed.
To improve the performance of the partial legalizer, I split the problem into groups of models which must be spread together. This allows us to create tighter windows and can make some parts of the legalizer more efficient. Create a model grouper class which forms the model pack patterns into a graph and find disconnected sub-graphs to form the model groups.
Also improved the window generation by pre-clustering the overfilled bins before creating the windows. This sped up the window generation code since less windows overlap.
Due to the improved flat placement generated by the Global Placer, tuned the APPack parameters to account for this.
vtr_chain largest 9 circuits:
Titan:
Largest Koios designs: