Skip to content

tap: fix overlapping endcap cells at macro boundary jogs - #11035

Open
eder-matheus wants to merge 6 commits into
The-OpenROAD-Project:masterfrom
eder-matheus:tap_endcap_overlaps
Open

tap: fix overlapping endcap cells at macro boundary jogs#11035
eder-matheus wants to merge 6 commits into
The-OpenROAD-Project:masterfrom
eder-matheus:tap_endcap_overlaps

Conversation

@eder-matheus

@eder-matheus eder-matheus commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

When two abutting macros have edges misaligned by a small step, the
boundary jog creates a row narrower than the corner master, and tapcell
placed overlapping cells there: the two jog corners on top of each other,
and horizontal edge fills on top of row-end endcaps.

Fix:

  • Generalize filled_horizontal_edges_ into occupied_row_spans_, which
    tracks the x-spans of all boundary cells per row; corner, horizontal
    edge, and vertical edge placement check it before creating a cell.
  • At a narrow jog, the corner at the row end displaces the overlapping
    corner that is not at it (same area only), since edge placement relies
    on row-end corners to terminate rows. Displaced corners are only
    destroyed after all checks pass, so a corner always survives at the jog.

Type of Change

  • Bug fix

Impact

No more overlapping endcap/corner cells at boundary jogs, so
check_placement passes after tapcell. Existing tap tests are unchanged.

Verification

  • I have verified that the local build succeeds (./etc/Build.sh).
  • I have run the relevant tests and they pass.
  • My code follows the repository's formatting guidelines.
  • I have included tests to prevent regressions.
  • I have signed my commits (DCO).

New tests: abutting_macros_step and abutting_macros_step_no_corners, both
running check_placement -verbose, registered in CMake and Bazel.

Related Issues

Fixes overlap and TAP errors on two private designs.

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>

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

Copy link
Copy Markdown
Contributor

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 endcap and corner cell placement logic to correctly handle boundary jogs between abutting macros, preventing overlapping cells. It introduces tracking of occupied row spans and allows row-terminating corners to displace overlapping non-flush corners. A performance optimization was suggested in the review to avoid temporary vector allocations when checking occupied spans inside a row loop.

Comment thread src/tap/src/tapcell.cpp Outdated
@eder-matheus

Copy link
Copy Markdown
Member Author

@codex review

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 1531e078ec

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…rtical

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
@eder-matheus
eder-matheus marked this pull request as ready for review July 30, 2026 21:42
@eder-matheus
eder-matheus requested a review from a team as a code owner July 30, 2026 21:42
@eder-matheus
eder-matheus requested a review from maliberty July 30, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant