Skip to content

drt: align default vias below the routing floor - #12108

Open
phsauter wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
phsauter:drt-below-floor-aligned-vias
Open

phsauter wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
phsauter:drt-below-floor-aligned-vias

Conversation

@phsauter

@phsauter phsauter commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Summary

I have some cases where we have coloring on the lowest two metals and pins can be in both but we really only want to route on the third and above to avoid coloring.
Currently OpenROAD skips via alignment on the layers below the first routing layer, eg metal layer 2 in my case. This enables it without enabling general routing on those layers.

Type of Change

  • New feature

Impact

Improved pin access when going through one intermediate non-routing layer.

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

Allow the existing default-via alignment step on lower layers used by pin access. Keep the routing ceiling, generation switch and missing-default behavior unchanged.

Cover aligned landing geometry, unchanged routing bounds and skipped-generation cases with native parser tests.

Signed-off-by: Philippe Sauter <phsauter@iis.ee.ethz.ch>
@phsauter
phsauter requested a review from a team as a code owner November 3, 2026 16:58
@github-actions github-actions Bot added the size/M label Nov 3, 2026

@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 modifies the default via initialization logic in io::Parser::initDefaultVias to check for a non-null default via definition on the layer instead of comparing the layer number against the bottom routing layer. It also introduces a new set of unit tests in parserTest.cpp to validate default via generation and retention behavior under various configurations. The feedback suggests calling the base class Fixture::SetUp() within the overridden SetUp() method of the new test fixture to ensure proper initialization.

Comment on lines +18 to +20
void SetUp() override
{
auto tech = design->getTech();

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.

medium

It is a best practice to call the base class SetUp() method when overriding it in a test fixture. This ensures that any common initialization performed by Fixture::SetUp() is executed properly.

Suggested change
void SetUp() override
{
auto tech = design->getTech();
void SetUp() override
{
Fixture::SetUp();
auto tech = design->getTech();

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