-
Notifications
You must be signed in to change notification settings - Fork 765
mpl: IOs abstraction adaptation to ORFS flow - second version (enhanced) #6820
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
mpl: IOs abstraction adaptation to ORFS flow - second version (enhanced) #6820
Conversation
1. Use constraint regions' shapes for clusters of unplaced ios and pin access blockages
2. Add regression tests for different cases of blockage generation
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
1) Improve comments
2) Renaming
3) Update regression tests results for:
a. Snapper truncated value fix
b. New spdlog default float type report
4) Improve regression tests comment descriptions
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
1. Change WL computation mechanism for IO clusters:
a. Clusters of unplaced IOs are treated as usual fixed terminals
b. Clusters of unconstrained IOs have WL computed based on the
distance to the center of the closest available region for
pins.
2. Adapt graphics to the previous item;
3. Collateral changes:
a. Add API to Soft/Hard macros to allow check for unconstrained
IOs cluster;
b. Create function to compute distance between << micron points >>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
update test to correct overlap computation Signed-off-by: Arthur Koucher <[email protected]>
…from master Signed-off-by: Arthur Koucher <[email protected]>
1. Simplify creation of clusters of unplaced IOs 2. [Fix] Set root as parent clusters of unplaced IOs 3. Some comment and critical message improvements Signed-off-by: Arthur Koucher <[email protected]>
1. Remove unused argument 2. Improve comments 3. Adpt function name 4. TO DOs clean up Signed-off-by: Arthur Koucher <[email protected]>
1. Cache actual offset die area instead of just the half
perimeter and use the cached die to compute the max
dist for max cost.
2. Some renaming.
Signed-off-by: Arthur Koucher <[email protected]>
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.
clang-tidy made some suggestions
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
|
Nice description! |
and update tests accordingly. Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
1) Make fixed terminals points again as the new approach
doesn't require that anymore when computing distance
to region in WL computation.
2) Format.
Signed-off-by: Arthur Koucher <[email protected]>
1) Remove PPL calls from new tests.
2) Adapt tests to be more concise.
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
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.
clang-tidy made some suggestions
Signed-off-by: Arthur Koucher <[email protected]>
|
clang-tidy review says "All clean, LGTM! 👍" |
1) Reordering of arguments for clarity; 2) Minor refactor for readability; 3) Removal of cached map cluster -> constraint for simplification; 4) Avoid constraint region copy; 5) Adapt names and comments to preserve concision. Signed-off-by: Arthur Koucher <[email protected]>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
I adapted the implementation to avoid using the center of regions when computing WL and these changes are ready for a first round of review. I also updated the description accordingly so it should give a reasonable explanation of what is going on. |
|
secure CI? |
Running. |
1) Use enum class; 2) Remove unused NONE enumeration; 3) Remove all default cases from switch statements; 4) Fix initial value of BoundaryRegion object; 5) Reduce some verbosity. Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
1) Avoid double-negative checking; 2) Add tests to BUILD. Signed-off-by: Arthur Koucher <[email protected]>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Running new Secure-CI. |
1) Improve naming; 2) Fix outline offset done in available regions for unconstrained pins. Signed-off-by: Arthur Koucher <[email protected]>
|
As I was addressing the last comment of the review I found a bug which is now fixed. I'm running a new Secure-CI. |
|
clang-tidy review says "All clean, LGTM! 👍" |
eder-matheus
left a comment
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.
Waiting on secure-CI to merge.
|
Secure-CI had some failures which are addressed in #3175. |
|
I can't merge the PR without @maliberty's approval. |
|
I've approved and will look more closely tomorrow's |
Resolve #5669
Introductory Considerations
Goals
Main Changes
Modify Shapes of Clusters of Unplaced IO Pins
Instead of virtually constraining IOs to the edges of the die area, we now use the actual constraint region that comes from ODB. This results in:
As we create these clusters, we populate a map that links them with their respective
BoundaryRegion(the new object in MPL's framework to help handling constraint regions - for constrained pins' clusters - & available regions - for the unconstrained pins' cluster - inside SA and during orientation improvement).Computation of Available Regions For Pins
When there are no constrained pins, but there are -exclude constraints set by the user, we use the blocked regions for pins which are stored in ODB to compute a list of available regions for pins (this is made by doing regions' subtraction across the edges of the die area, see
HierRTLMP::computeAvailableRegions).Pin Access
The alternatives for pin access blockages' generation are still the same as the first version. However, we now use the dimensions of constraint regions:
The depth now is limited by the dimensions of the die area. A horizontal blockage will have at max 20% of the die width; a vertical blockage will have at max 20% of the die height.
There is one important difference w.r.t the first version: We now consider the density of IOs when computing the depth of the blockages for constrained pins. Denser regions are deeper, i.e., have thicker blockages.
Cluster / Macro Placement (SA)
In the first version of the new IOs, WL was computed based on distance to the edges:
Now, as the clusters of unplaced IOs are constrained to actual regions, we compute WL as:
Obs: When initializing the SA Core, we create a cache of these regions offset w.r.t. current outline.
Obs2: The new WL computation is made in DBU, so the annealer needs a
dbBlock*in order to allow us to perform unit conversion.Boundary Pushing
As we now store the pin access blockages in a vector instead of a map Boundary -> Blockage, because we don't need the boundary data anymore, the Pusher receives this vector and, when working, computes overlap iterating the blockages of this vector.
Orientation Improvement
When computing HPWL for a certain orientation and iterating bterms of a net: