Skip to content

mpl: treat virtual pin access blockages as soft constraints#9465

Open
AcKoucher wants to merge 6 commits intoThe-OpenROAD-Project:masterfrom
AcKoucher:mpl-blockages
Open

mpl: treat virtual pin access blockages as soft constraints#9465
AcKoucher wants to merge 6 commits intoThe-OpenROAD-Project:masterfrom
AcKoucher:mpl-blockages

Conversation

@AcKoucher
Copy link
Contributor

@AcKoucher AcKoucher commented Feb 12, 2026

See #9214 for the rationale.
Resolve #9226.

I thought it was time to update the naming convention w.r.t. the blockages (the original name macro_blockages was very misleading and I think made understanding what's going on much harder). Now the annealer deals with:

  • Soft Blockages: Virtual pin access blockages generated for MPL;
  • Hard Blockages: Fixed macros and placement blockages;

I'm removing two tests (boundary_push2 and boundary_push3) whose purpose was to check if the overlap with io blockages was properly avoided when applying the Pusher post-process. However, with the changes here, these tests started working worked in a hackish way due to how the original implementation treated "tiny" std cell clusters (we'd benefit from the fact that these clusters have no area and the centralization of the macros would happen regardless of the position of that cluster).

As we'll eventually try to get rid of this post process (see #8483) I don't think this coverage is that important. If desired we can come up with a different test suite (maybe in Cpp as the architecture allows it).

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the handling of blockages, treating virtual pin access blockages as soft constraints. This is achieved by renaming macro_blockage related concepts to soft_blockage throughout the codebase, and separating the handling of placement_blockages (hard constraints) from io_blockages (now soft constraints). The changes are extensive and touch many files, including documentation, C++ source, and TCL scripts. The review found a critical issue related to coordinate systems. A newly introduced generic function for finding intersections fails to transform coordinates to the relative system used by the placement engine, which was correctly handled by the previous implementation. This will likely lead to incorrect placement. A minor issue with a stale log message was also found.

@github-actions
Copy link
Contributor

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

1 similar comment
@github-actions
Copy link
Contributor

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

@AcKoucher
Copy link
Contributor Author

@joaomai FYI.

Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
    1) Fix outline offset for blockages;
    2) Fix debug message;
    3) Bazel BUILD lint.

Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
@AcKoucher AcKoucher marked this pull request as ready for review February 24, 2026 20:48
@github-actions
Copy link
Contributor

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

Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
@github-actions
Copy link
Contributor

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

@AcKoucher
Copy link
Contributor Author

Running Secure-CI.

Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
@github-actions
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Different types of blockages should be treated differently in MPL

2 participants