tap: prevent overlapping endcap edges in single-height rows between macros#10794
tap: prevent overlapping endcap edges in single-height rows between macros#10794eder-matheus wants to merge 6 commits into
Conversation
…acros Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…cros Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
|
@codex review |
There was a problem hiding this comment.
Code Review
This pull request prevents overlapping endcap edge and corner cells from being placed in single-height rows between stacked macros. It introduces tracking of filled horizontal edges per row, computes open spans by subtracting existing blockers (occupied spans and corner cells), and places endcaps only within those open spans. A new test case single_row_macros is also added to verify this behavior. The review feedback suggests a minor performance optimization to pass the blockers vector using std::move to avoid an unnecessary copy.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7476e06dc4
ℹ️ 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".
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…erlaps Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…laps Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
|
@maliberty this is ready for final review. |
Summary
Tapcell inserted both a
PHY_EDGE_ROW_*_Topand aPHY_EDGE_ROW_*_Bottomcell into a single-height row bounded by macros above and below, producing overlapping endcap instances (and, in the same rows, overlaps between edge cells and inner corner cells).placeEndcapEdgeHorizontalnow fills only the x-ranges not already occupied by another horizontal edge or a corner cell in that row. Extracted the interval math intocomputeOpenSpansand the fill loop intofillEndcapEdge.Type of Change
Impact
Endcap edge cells no longer overlap in single-height rows between macros. Designs without this geometry are unaffected (fill ranges are identical), so existing outputs are unchanged.
Verification
./etc/Build.sh).Related Issues
Fixes https://github.com/The-OpenROAD-Project-private/OpenROAD-flow-scripts/issues/1723