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

mpl2: IOs abstraction adaptation to ORFS flow - first version (simplified) #5809

Merged
merged 58 commits into from
Jan 22, 2025

Conversation

AcKoucher
Copy link
Contributor

@AcKoucher AcKoucher commented Sep 26, 2024

Resolve the first top level task in #5669.
Resolve #6050.
Resolve #4867.

Introductory Considerations

  • This is the first step of the enhancements to adapt the IOs abstractions inside mpl2 to ORFS flow.
  • This first version will not consider the dimensions of the constraints whether they are -exclude constraints or pins' constraint regions.

Goals

  1. Improve QoR in terms of WL.
  2. Ease the life of the annealer for some cases (e.g., sky130hd/uW) that require extreme virtual std cell utilization configurations to converge.
  3. Further steps into switching from manual mpl to mpl2 for cases such as sky130hd/chameleon (This will still require clustering work)

Main Changes

Modify IO Clusters

IO clusters that represent bundledIOs created from the pins placed by random PPL are now groups of unplaced IOs with the same constraints based on the following:

  • Individual Pin Constraints:

    • If an IO has a constraint region in a certain boundary, it is constrained to that entire boundary.
    • If an IO has no constraint region, it is constrained to all boundaries.
  • Global Pins' Constraints (-exclude)

    • If a boundary has more than 70% of its extension blocked, it is considered a blocked boundary for IOs.

What Annealing Sees

  • WL between a cluster/macro (soft/hard) M and an IO cluster IO is represented as follow:
    • If IO represents pins constrained to a certain boundary A, WL is the minimum distance between M's bundled center pin and A.
    • If IO represents unconstrained pins, WL is the minimum distance between M's bundled center pin and the closest non-blocked boundary.

Obs: This distance only reduces cost when M is inside the outline.

Collateral Changes

Needed for the Approach to Work

  1. Add Cluster support to HardMacro so that SA can check if they are IO clusters' fixed terminals.
  2. Make both Soft/HardMacroSACores have access to the PhisycalHierarchical data where the global constraints are now stored.
  3. Make fixed terminals that represent IO clusters have the cluster data inside them so that this data is accessible inside SA for both Soft and Hard. I.e., the cluster of a fixed terminal that represents an IO cluster will be != nullptr

Blockages for Pin Access

Generated based on a combination of both global and individual pins' constraints:

  1. If there are pins constrained to a certain boundary, we'll generate a blockage for that boundary.
  2. If there are no pins constrained a boundary A but there are pins constrained to all boundaries, A won't have a pin access blockage. (Specially important so that SA has more freedom).
  3. The depth of the blockage is a combination of the extension of IO clusters and std cell area (this can definitely be further improved to consider the IOs density)

Orientation Improvement

When iterating a net, compute HPWL based on:

  1. If a pin has a constraint region, use its center.
  2. If a pin doesn't have a constraint region, use the closest point of the closest boundary to that macro pin.

Debug Mode

  1. Blocked boundaries are marked with a red X in the center of their extension
  2. Draw distance to constraint || closest boundary only when the cluster/macro is inside the outline

AcKoucher and others added 30 commits September 9, 2024 19:57
1) Remove logic of bundled ios per edge and add one constraint cluster per edge
2) Add checks to prevent crash - for testing
3) Comment blockages creation based on IO placement

Signed-off-by: Arthur Koucher <[email protected]>
1) map bterms when creating a new io cluster
2) remove debug check
3) cluster that represent no constraints have the shape of the die

Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
1) avoid computing WL twice for IO cases
2) add fixed penalty for IO connections when the macro is outside the outline
3) don't draw dist to edge in graphics when macro is outside the outline

Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
… area and io clusters' extensions

Signed-off-by: Arthur Koucher <[email protected]>
Signed-off-by: Arthur Koucher <[email protected]>
Copy link
Contributor

@eder-matheus eder-matheus left a comment

Choose a reason for hiding this comment

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

I don't have further comments, but I'll wait for @maliberty's final review before merging.

@maliberty
Copy link
Member

maliberty commented Nov 22, 2024

There a couple designs that need metrics update.

Is there a PR for this?

@AcKoucher
Copy link
Contributor Author

Is there a PR for this?

I opened #2582. However, a metrics conflict emerged from another PR. I'm re-running Secure-CI to update the metrics correctly.

@maliberty
Copy link
Member

@AcKoucher what remains to merge this?

@AcKoucher
Copy link
Contributor Author

@maliberty This PR is blocked by a gpl divergence in uW (See #6235).

@AcKoucher
Copy link
Contributor Author

I resolved the conflicts here.

With the updates from master, GPL no longer diverges in uW. However, now GRT is throwing an error due to high congestion in post-drt. I'm investigating.

Copy link
Contributor

github-actions bot commented Jan 8, 2025

clang-tidy review says "All clean, LGTM! 👍"

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@AcKoucher
Copy link
Contributor Author

AcKoucher commented Jan 13, 2025

Updating..

I ran a new Secure-CI with a custom GRT routing layer adjustment and it solved uW's congestion problem.
However, now g12/ca53 is failing in DPL.

Edit:
The failure happens at CTS legalization. It looks like the clock gaters enhancement in #6134 added a very large number of buffers and put the design in the limit of having a legalization problem - the changes here unluckily triggered it. @arthurjolo is investigating.

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@AcKoucher
Copy link
Contributor Author

Settings changes and metrics update in #2706

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@eder-matheus eder-matheus merged commit 3f5a91c into The-OpenROAD-Project:master Jan 22, 2025
11 checks passed
@AcKoucher AcKoucher deleted the mpl2-constraints branch January 22, 2025 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants