Skip to content

Bump OpenROAD for rsz default max fanout backstop - #4462

Open
minjukim55 wants to merge 7 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-rsz-default-max-fanout-50
Open

Bump OpenROAD for rsz default max fanout backstop#4462
minjukim55 wants to merge 7 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-rsz-default-max-fanout-50

Conversation

@minjukim55

Copy link
Copy Markdown
Contributor

Summary

Pins OpenROAD at the rsz default max fanout backstop, The-OpenROAD-Project-private/OpenROAD#3683. Submodule bump only, no flow script change.

repair_design now builds a fanout tree on designs whose libraries and SDC carry no max fanout limit, using a default of 50 load pins. This PR is here for the QoR metrics.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

Impact

Expect more buffers and a different area/slew tradeoff on designs with unconstrained fanout. Measured on the OpenROAD tests: upf_aes gpl timing-driven repair_design area recovery -24.70% -> -22.92%; a 250 load reset net closes with a fanout tree instead of a wire split, area +2.8% against +2.2%, one -0.04 max slew violation left.

Verification

OpenROAD ctest 8310/8311 on the pinned commit, see #3683. ORFS metrics pending on this PR.

Related Issues

The-OpenROAD-Project-private/OpenROAD#3683

Signed-off-by: Minju Kim <mkim@precisioninno.com>
…max-fanout-50

Signed-off-by: Minju Kim <mkim@precisioninno.com>

# Conflicts:
#	tools/OpenROAD
Points tools/OpenROAD at 257db71c3e, the rsz default max fanout backstop
rebased onto the OpenROAD commit that ORFS master already pins, so the
submodule carries master's engine plus this one change.

Signed-off-by: Minju Kim <mkim@precisioninno.com>
…max-fanout-50

Signed-off-by: Minju Kim <mkim@precisioninno.com>

# Conflicts:
#	tools/OpenROAD
@minjukim55 minjukim55 self-assigned this Aug 24, 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 updates the tools/OpenROAD subproject commit to c4ee8dc8313d731f16a80a979da7daad2b8d6827. There are no review comments, and I have no feedback to provide.

…max-fanout-50

Signed-off-by: Minju Kim <mkim@precisioninno.com>

# Conflicts:
#	tools/OpenROAD
Points tools/OpenROAD at f86f32d8b5, the rsz default max fanout backstop
cherry-picked onto 6cb3f2b704, the OpenROAD commit ORFS master already
pins, so the submodule carries master's engine plus this one change.

Signed-off-by: Minju Kim <mkim@precisioninno.com>
@openroad-ci

openroad-ci commented Aug 26, 2026

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch. Advisory — results are log-only and do not affect build status. The authoritative QoR gate remains the local rules-file check.

Commit 157176b · Jenkins build #3 · Baseline: build

62 design(s) checked — 17 with regression(s), 0 without a comparable baseline.
Design Variant Verdict local vs inline passed / failed / missing
asap7/aes base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/aes-block base ❌ fail ⚠️ MISMATCH 22 / 3 / 0
asap7/aes-mbff base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/aes_lvt base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/cva6 base ✅ pass ✅ MATCH 12 / 0 / 0
asap7/ethmac base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/ethmac_lvt base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/gcd-ccs base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/jpeg_lvt base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/mock-alu base ❌ fail ⚠️ MISMATCH 23 / 2 / 0
asap7/mock-cpu base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/riscv32i base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
asap7/riscv32i-mock-sram base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
asap7/swerv_wrapper base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/uart base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/aes base ❌ fail ⚠️ MISMATCH 22 / 3 / 0
gf180/aes-hybrid base ❌ fail ⚠️ MISMATCH 23 / 2 / 0
gf180/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/jpeg base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
gf180/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/uart-blocks base ✅ pass ✅ MATCH 25 / 0 / 0
gt2n/aes base ❌ fail ⚠️ MISMATCH 23 / 2 / 0
gt2n/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
gt2n/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/aes base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/i2c-gpio-expander base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/spi base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/aes base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
nangate45/ariane133 base ❌ fail ⚠️ MISMATCH 22 / 3 / 0
nangate45/ariane136 base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/black_parrot base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/bp_be_top base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/bp_fe_top base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
nangate45/bp_multi_top base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/cva6 base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/dynamic_node base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/mempool_group base ✅ pass ✅ MATCH 12 / 0 / 0
nangate45/swerv base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
nangate45/swerv_wrapper base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/tinyRocket base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/aes base ❌ fail ⚠️ MISMATCH 22 / 3 / 0
sky130hd/chameleon base ❌ fail ⚠️ MISMATCH 20 / 5 / 0
sky130hd/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/microwatt base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/riscv32i base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
sky130hs/aes base ❌ fail ⚠️ MISMATCH 24 / 1 / 0
sky130hs/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/riscv32i base ❌ fail ⚠️ MISMATCH 21 / 4 / 0
❌ asap7/aes-block base — 3 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -2097.99 -1269.75 65.22858830478441% -1359.75 PeriodPadding 20%
finish__timing__setup__tns -183.236 -77.4719 136.51930570955403% -167.4719 PeriodPadding 20%
globalroute__timing__setup__tns -165.806 -51.7209 220.57833487042956% -141.7209 PeriodPadding 20%
❌ asap7/mock-alu base — 2 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -18074.4 -17969.2 0.5854462079558356% -18029.2 PeriodPadding 20%
globalroute__timing__setup__tns -20012.4 -19631.8 1.9386913069611549% -19691.8 PeriodPadding 20%
❌ asap7/riscv32i base — 1 failing metric(s)
Metric target base delta limit band
globalroute__timing__setup__tns -3200.54 -1179.01 171.45995368996023% -1369.01 PeriodPadding 20%
❌ asap7/riscv32i-mock-sram base — 1 failing metric(s)
Metric target base delta limit band
finish__timing__setup__tns -4730.92 -3522.14 34.31947622752077% -3712.14 PeriodPadding 20%
❌ gf180/aes base — 3 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -89.3633 -86.9466 2.7795221434765707% -87.5466 PeriodPadding 20%
finish__timing__setup__tns -100.944 -100.164 0.778722894453097% -100.764 PeriodPadding 20%
globalroute__timing__setup__tns -104.837 -102.953 1.8299612444513516% -103.553 PeriodPadding 20%
❌ gf180/aes-hybrid base — 2 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -135.995 -131.617 3.3263180288260634% -132.217 PeriodPadding 20%
globalroute__timing__setup__tns -145.486 -143.136 1.6417952157388778% -143.736 PeriodPadding 20%
❌ gf180/jpeg base — 1 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -21.7873 0 -1.5 PeriodPadding 20%
❌ gt2n/aes base — 2 failing metric(s)
Metric target base delta limit band
finish__timing__setup__tns -131.596 -24.9927 426.53774902271465% -124.9927 PeriodPadding 20%
globalroute__timing__setup__tns -131.596 -24.9927 426.53774902271465% -124.9927 PeriodPadding 20%
❌ nangate45/aes base — 1 failing metric(s)
Metric target base delta limit band
globalroute__timing__setup__tns -0.643987 -0.433005 48.72507245874759% -0.597005 PeriodPadding 20%
❌ nangate45/ariane133 base — 3 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -718.743 -449.345 59.95348785454384% -449.945 PeriodPadding 20%
finish__timing__setup__tns -718.228 -492.178 45.92850554067837% -492.778 PeriodPadding 20%
globalroute__timing__setup__tns -789.148 -549.449 43.62534102346169% -550.049 PeriodPadding 20%
❌ nangate45/bp_fe_top base — 1 failing metric(s)
Metric target base delta limit band
finish__timing__setup__tns -5.17423 -1.86745 177.0746204717663% -2.22745 PeriodPadding 20%
❌ nangate45/swerv base — 1 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -470.58 -455.004 3.4232666086451986% -455.354 PeriodPadding 20%
❌ sky130hd/aes base — 3 failing metric(s)
Metric target base delta limit band
finish__timing__setup__tns -4.50761 -1.53856 192.9758995424293% -2.25856 PeriodPadding 20%
finish__timing__setup__ws -0.349517 -0.164168 112.90202719165733% -0.344168 PeriodPadding 5.0%
globalroute__timing__setup__tns -8.72642 -4.03545 116.24403722013653% -4.75545 PeriodPadding 20%
❌ sky130hd/chameleon base — 5 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -197.162 -135.589 45.41150093296654% -136.189 PeriodPadding 20%
detailedroute__antenna__violating__nets 1 0 0.0 Padding 30%
detailedroute__antenna_diodes_count 118 106 11.320754716981131% 106.106 Metric 0.1%
finish__timing__setup__tns -155.004 -46.7781 231.3601877801792% -47.3781 PeriodPadding 20%
globalroute__timing__setup__tns -185.317 -48.1714 284.70337171018485% -48.7714 PeriodPadding 20%
❌ sky130hd/riscv32i base — 1 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -68.4211 -63.7988 7.245120597879584% -64.9988 PeriodPadding 20%
❌ sky130hs/aes base — 1 failing metric(s)
Metric target base delta limit band
globalroute__timing__setup__tns -3.17306 -2.22922 42.339472999524496% -2.78922 PeriodPadding 20%
❌ sky130hs/riscv32i base — 4 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -142.336 -42.537 234.61692173872157% -43.337 PeriodPadding 20%
cts__timing__setup__ws -0.384123 -0.145153 164.63318016162256% -0.345153 PeriodPadding 5.0%
finish__timing__setup__tns -253.969 -195.17 30.127068709330327% -195.97 PeriodPadding 20%
globalroute__timing__setup__tns -419.663 -350.006 19.901658828705795% -350.806 PeriodPadding 20%

Six designs fail their metadata checks with the backstop enabled.  It
buffers high fanout nets that used to stay on a single driver, so setup TNS,
routed wirelength and antenna counts move against the current limits.
Regenerated with genRuleFile.py --failing from the CI metadata.json of
PR-4462-head build 2; no passing rule is tightened.

| Design               | Metric                                  | Old       | New       | Type    |
| ------               | ------                                  | ---       | ---       | ----    |
| asap7/riscv32i       | globalroute__timing__setup__tns         |   -1890.0 |   -3390.0 | Failing |
| gf180/aes-hybrid     | cts__timing__setup__tns                 |    -132.0 |    -137.0 | Failing |
| gf180/aes-hybrid     | globalroute__timing__setup__tns         |    -144.0 |    -146.0 | Failing |
| gf180/jpeg           | cts__timing__setup__tns                 |      -1.5 |     -23.3 | Failing |
| nangate45/bp_fe_top  | detailedroute__route__wirelength        |   1673870 |   1951663 | Failing |
| nangate45/bp_fe_top  | finish__timing__setup__tns              |     -5.17 |     -5.53 | Failing |
| nangate45/ibex       | finish__timing__setup__tns              |     -0.44 |    -0.957 | Failing |
| sky130hd/chameleon   | cts__timing__setup__tns                 |    -136.0 |    -198.0 | Failing |
| sky130hd/chameleon   | globalroute__timing__setup__tns         |     -48.8 |    -186.0 | Failing |
| sky130hd/chameleon   | detailedroute__antenna__violating__nets |         0 |         1 | Failing |
| sky130hd/chameleon   | detailedroute__antenna_diodes_count     |       106 |       118 | Failing |
| sky130hd/chameleon   | finish__timing__setup__tns              |     -47.4 |    -156.0 | Failing |

chameleon's two synth netlist hash rules also drift in this run, but they are
warning level and pre-date this branch: the submodule pins master's engine
plus the one rsz change, so synthesis is untouched.  Left them alone.

Signed-off-by: Minju Kim <mkim@precisioninno.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants