mpl: treat virtual pin access blockages as soft constraints#9465
mpl: treat virtual pin access blockages as soft constraints#9465AcKoucher wants to merge 6 commits intoThe-OpenROAD-Project:masterfrom
Conversation
There was a problem hiding this comment.
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.
|
clang-tidy review says "All clean, LGTM! 👍" |
1 similar comment
|
clang-tidy review says "All clean, LGTM! 👍" |
|
@joaomai FYI. |
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
e7094ff to
b4a80bf
Compare
|
clang-tidy review says "All clean, LGTM! 👍" |
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Running Secure-CI. |
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
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_blockageswas very misleading and I think made understanding what's going on much harder). Now the annealer deals with:I'm removing two tests (
boundary_push2andboundary_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).