Skip to content

drt allows for spacing 0 between metal and blockage#10856

Open
bnmfw wants to merge 5 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:drt_spacing_0
Open

drt allows for spacing 0 between metal and blockage#10856
bnmfw wants to merge 5 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:drt_spacing_0

Conversation

@bnmfw

@bnmfw bnmfw commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

OBS LEF SPACING Modifier is now understood by the ODB and DRT. DRT allows abutting of metal to blockage without raising shorts if the blockage has SPACING 0.

OBD and Lefin Changes

Essentially min_spacing was added to behave just like design_rule_width. Modifications in gcNet.h, frBlockage.h, io.cpp, db.h, lefin.cpp, dbBox.h and dbBox.cpp are made to mimic the behavior of the former implemented modifier. dbDatabase.h was changed to update the DB version. Some modifications on FlexGC_main.cpp are also implementations of min_spacing

SPACING 0 Means allowing abutting

rects_abute was added. If we are in a short but either prl is 0, it means that the intersection area is 0, only abutting is happening, so the flag is set to true. Further, if checkMetalSpacing_prl_getReqSpcVal returns 0, than the spacing required is 0, so there is no DRV, meaning an early return.

Type of Change

  • New feature

Impact

Changes ODB minor verstion.
Allows for reading and usage of the SPACING modifier on OBS LEF
Allows Abutting of metal to blockage without causing shorts if said blockage has spacing 0

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).

Related Issues

Makes Progress torwards #1701
The issue is not solved, another pin access problem is raised but has a different cause.

bnmfw added 3 commits July 7, 2026 02:32
Signed-off-by: bnmfw <bernardoborgessandoval@gmail.com>
Signed-off-by: bnmfw <bernardoborgessandoval@gmail.com>
Parse and store the SPACING value from macro OBS layer geometry
sections (lefiGeomLayerMinSpacingE). Previously this was a FIXME
no-op. The value is stored on dbBox::min_spacing_ and propagated
through frBlockage to DRT's GC checker, where it overrides the
spacing table lookup for blockage shapes.

This enables SPACING 0 in macro OBS sections to suppress false
short violations between routing and cell obstructions on layers
that only have LEF58 spacing rules (e.g. Rapidus2HP M5).

Signed-off-by: bnmfw <bernardoborgessandoval@gmail.com>
@bnmfw bnmfw self-assigned this Jul 9, 2026
@github-actions github-actions Bot added the size/M label Jul 9, 2026
@bnmfw bnmfw marked this pull request as ready for review July 9, 2026 16:10
@bnmfw bnmfw requested review from a team as code owners July 9, 2026 16:10
@bnmfw bnmfw requested a review from maliberty July 9, 2026 16:10

@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 introduces support for minimum spacing (minSpacing) in dbBox, frBlockage, gcNet, and the LEF parser, including database schema updates to serialize the new min_spacing_ field. It also updates the metal spacing check logic to handle abutting rectangles via a new parameter. The review feedback recommends correcting the spelling of the parameter rects_abute to rects_abut (or rects_abutting) across its declaration, definition, and usages, as well as simplifying the parameter type from const bool to bool.

Comment thread src/drt/src/gc/FlexGC_impl.h Outdated
Comment thread src/drt/src/gc/FlexGC_main.cpp Outdated
Comment thread src/drt/src/gc/FlexGC_main.cpp Outdated
Comment thread src/drt/src/gc/FlexGC_main.cpp Outdated
bnmfw added 2 commits July 9, 2026 16:48
Signed-off-by: bnmfw <bernardoborgessandoval@gmail.com>
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