Skip to content

pdn: test a ring layer named by -pins - #11210

Merged
gadfort merged 1 commit into
The-OpenROAD-Project:masterfrom
shivarammysore:pdn-ring-on-pin-layer
Aug 23, 2026
Merged

pdn: test a ring layer named by -pins#11210
gadfort merged 1 commit into
The-OpenROAD-Project:masterfrom
shivarammysore:pdn-ring-on-pin-layer

Conversation

@shivarammysore

Copy link
Copy Markdown
Contributor

Adds the case from #11209, which @gadfort confirmed is intended behaviour ("yes rings can become pins so that is correct") and offered to review.

core_grid_ring_on_pin_layer covers the rings_ half of the -pins validation in
Grid::checkSetup():

for (const auto& ring : rings_) {
  for (auto* layer : ring->getLayers()) {
    check_layers.insert(layer);
  }
}
for (const auto& strap : straps_) {
  check_layers.insert(strap->getLayer());
}

All fifteen existing cases that use -pins name a strap layer, so the straps_ loop alone
satisfies the check for every one of them — removing the rings_ loop leaves the pdn regression
green, and -pins <ring layer> would then raise PDN-0111 with nothing to catch it.

The case is core_grid_with_rings_with_straps with one option added, -pins metal6, the upper
layer of its ring. ⟹ its control is already in the suite: the existing case is the same design
without the option, so the two goldens differ only where the option acts — two block terminals,
two ports each (the ring's two metal6 sides), and unchanged SPECIALNETS geometry.

It reuses the design and LEF the existing case already reads, so it adds no new library data.

Registered in both src/pdn/test/CMakeLists.txt and src/pdn/test/BUILD.

The .defok and .ok were generated at 945a9f48dc6e5cc91d865daa92c45a1094cb682c (master at the
time of writing) and the case reports No differences found. there. Happy to regenerate if CI
disagrees.

On -max_rows/-max_columns: understood, leaving that for the CPP CI suite.

Grid::checkSetup() validates a -pins layer against a set built from the grid
rings and its straps. Every existing case that uses -pins names a strap layer,
so the straps_ loop alone satisfies the check and the rings_ loop is uncovered:
removing it leaves the pdn regression green.

This is core_grid_with_rings_with_straps with -pins metal6 added, the upper
layer of its ring, so that case is the control and the two goldens differ only
where the option acts: two block terminals with two ports each, and unchanged
SPECIALNETS geometry.

Confirmed intended behaviour in The-OpenROAD-Project#11209.

Signed-off-by: shivarammysore <shivaram.mysore@gmail.com>
@shivarammysore
shivarammysore requested a review from a team as a code owner August 23, 2026 02:35
@shivarammysore
shivarammysore requested a review from gadfort August 23, 2026 02:35

@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 a new integration test case, core_grid_ring_on_pin_layer, to verify that a layer occupied only by a ring is a valid -pins layer and that the ring's segments correctly become block pins. The test is added to both the Bazel (BUILD) and CMake (CMakeLists.txt) build configurations, along with its expected output (.ok) and TCL script (.tcl). No review comments were provided, so there is no feedback to address.

@gadfort gadfort 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.

LGTM

@gadfort
gadfort merged commit f34c1bc into The-OpenROAD-Project:master Aug 23, 2026
17 checks passed
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.

2 participants