gpl filler gcell removal instead of density modification for routability mode#7466
Merged
maliberty merged 71 commits intoJul 10, 2025
Merged
Conversation
this allows for removing filler gcells instead of increasing density for area modifications Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…r removal Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
include more reports remove unecessary function Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
… congestion observed during routability iterations Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
the issue was that multiple filler gcells were restored to the origin and moving together as a cluster, making a whole of empty space Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…l-filler-gcell-removal
…er swap and pop Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…final placement Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Contributor
Author
|
@osamahammad21 FYI |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
gadfort
reviewed
May 30, 2025
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
…tName Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Contributor
Author
|
@maliberty secure-CI is passing for public designs, I just triggered the updateRules in The-OpenROAD-Project/OpenROAD-flow-scripts#3220 |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
Contributor
|
clang-tidy review says "All clean, LGTM! 👍" |
maliberty
approved these changes
Jul 10, 2025
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
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.
This PR introduces a significant change to how filler cells are handled within the global placement (GPL) routability mode. Previously, when area increased due to routability mode inflations, we compensated by increasing density. This approach was counter-intuitive and hindered the routability mode's ability to spread instances effectively. Now, filler cells are removed to directly compensate for inflated area. The previous density modification approach is only utilized when no more fillers can be removed.
A special situation arises when routing congestion doesn't reduce for three consecutive routability iterations. In such cases, instead of reverting to the conventional snapshot (0.6 overflow), we revert to the inflation values that yielded the minimum observed routing congestion (i.e., the best solution found). When this occurs, previously removed fillers are restored using NesterovBase::restoreRemovedFillers().
Currently, this filler removal modification is exclusive to the routability mode. It has not been extended to the timing-driven mode due to consistent divergences observed on three Nangate45 designs when attempting to remove fillers after non-virtual timing-driven iterations.
This PR also includes the following modifications:
EDIT: Here are some examples, master on top and new version on bottom images:

sky130hd/aes
nangate45/swerv

All public designs images are available in this link.