mpl: IOs abstraction adaptation to ORFS flow - second version (enhanced)#6820
Conversation
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
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 <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
update test to correct overlap computation Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
…from master Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
|
Nice description! |
and update tests accordingly. Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
|
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 <arthurkoucher@precisioninno.com>
|
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. |
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Running new Secure-CI. |
|
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.
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: