Skip to content

[rsz] Change RSZ-0075 warning to debug + remove pre-placement buffer attempt#3900

Open
openroad-ci wants to merge 12 commits intoThe-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-fix-issue-5988
Open

[rsz] Change RSZ-0075 warning to debug + remove pre-placement buffer attempt#3900
openroad-ci wants to merge 12 commits intoThe-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-fix-issue-5988

Conversation

@openroad-ci
Copy link
Collaborator

Summary

  • Update OpenROAD submodule: change makeBufferedNet failed from WARNING (RSZ-0075) to debug message
  • Remove meaningless estimate_parasitics -placement call in floorplan stage (cells are unplaced at (0,0))
  • Remove buffer from repair_timing sequence in floorplan stage (buffering always fails without parasitics)

Background

During the floorplan stage, repair_timing is called with -sequence "unbuffer,sizeup,swap,buffer,vt_swap".
The buffer move calls makeBufferedNet() which immediately returns nullptr when ParasiticsSrc::none,
generating 1000+ warning messages per design. Cells are unplaced (all at origin), so buffering is impossible.

Resolves

Test plan

  • All 189 rsz regression tests pass
  • ORFS CI: First commit (OpenROAD submodule only) - baseline QoR
  • ORFS CI: Second commit (floorplan.tcl changes) - verify identical QoR

🤖 Generated with Claude Code

jhkim-pii and others added 2 commits February 20, 2026 17:41
Point to secure-fix-issue-5988 branch which changes the
makeBufferedNet warning (RSZ-0075) to a debug message.

Resolves OpenROAD#5988, OpenROAD#8988

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
In the floorplan stage, all cells are unplaced (at origin 0,0):
- Remove `estimate_parasitics -placement` before replace_arith_modules
  since zero-wire parasitics are less accurate than wire load models
- Remove `buffer` from repair_timing sequence since makeBufferedNet
  always returns nullptr when ParasiticsSrc::none (1168 wasted calls
  on asap7/aes, 0 buffers inserted)

Other moves (unbuffer, sizeup, swap, vt_swap) continue to work
correctly with wire load models.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
}

if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } {
log_cmd estimate_parasitics -placement
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unplaced at this stage.

} else {
# Skip clone & split
repair_timing_helper -setup -skip_last_gasp -sequence "unbuffer,sizeup,swap,buffer,vt_swap"
repair_timing_helper -setup -skip_last_gasp -sequence "unbuffer,sizeup,swap,vt_swap"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@povik I removed buffer strategy here because buffering was not performed since cells are unplaced. Do you think that we should use gain-based buffering in floorplan stage rather than skipping the buffering?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We remove buffers at 3_2 so any buffering we do at floorplan will be short-lived. Perhaps it's useful to do it anyway to get a more accurate timing report and to guide other resizer operations which look at timing. Matt and I have discussed this a couple of times but never did any changes as it always seemed low priority.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for sharing.
Then the buffering in floorplan stage may require a sufficient research to make it valuable.
IMO, removing the buffer strategy looks better for now.

@precisionmoon @maliberty Any other thoughts?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it currently does little as most moves abort when there is no placement. If a secure CI confirms I am ok to remove it. The original thought was to use gain-based buffering here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK. Then let's merge this PR after resolving the merge conflict caused by MCMM update.

I'll check if the gain-based buffering in floorplan stage is meaningful gain or not, and open a new PR if it shows meaningful gain.

jhkim-pii and others added 9 commits February 22, 2026 23:50
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
…ate/OpenROAD-flow-scripts into secure-fix-issue-5988

Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
…ate/OpenROAD-flow-scripts into secure-fix-issue-5988

Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
@jhkim-pii
Copy link
Contributor

jhkim-pii commented Feb 26, 2026

  • CI system glitch in PR_head.
  • The metric updates are not related to this change. It may be due to the master merge.
Click to expand metric update tables

designs/asap7/aes-block/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -12100.0 -11100.0 Tighten
globalroute__timing__setup__tns -9610.0 -8830.0 Tighten
finish__timing__setup__ws -98.4 -97.2 Tighten
finish__timing__setup__tns -5410.0 -4660.0 Tighten

designs/asap7/aes-mbff/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -2470.0 -2370.0 Tighten
finish__timing__setup__ws -42.3 -41.6 Tighten
finish__timing__setup__tns -986.0 -857.0 Tighten

designs/asap7/aes/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -1250.0 -1100.0 Tighten
globalroute__timing__setup__tns -2660.0 -2170.0 Tighten
finish__timing__setup__ws -44.3 -42.2 Tighten
finish__timing__setup__tns -1100.0 -825.0 Tighten

designs/asap7/ethmac/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -156.0 -154.0 Tighten
cts__timing__setup__tns -2870.0 -2710.0 Tighten
globalroute__timing__setup__ws -174.0 -170.0 Tighten
globalroute__timing__setup__tns -3840.0 -3560.0 Tighten
finish__timing__setup__ws -163.0 -160.0 Tighten
finish__timing__setup__tns -3180.0 -2940.0 Tighten

designs/asap7/ethmac_lvt/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -951.0 -907.0 Tighten
globalroute__timing__setup__tns -1150.0 -1130.0 Tighten

designs/asap7/mock-alu/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -311.0 -308.0 Tighten
cts__timing__setup__tns -18200.0 -18100.0 Tighten
globalroute__timing__setup__tns -22500.0 -21700.0 Tighten
finish__timing__setup__tns -18900.0 -18600.0 Tighten

designs/asap7/riscv32i-mock-sram/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -452.0 -693.0 Failing
globalroute__timing__setup__tns -5600.0 -1700.0 Tighten
finish__timing__setup__tns -4360.0 -12300.0 Failing

designs/asap7/riscv32i/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -119.0 -117.0 Tighten
cts__timing__setup__tns -23500.0 -23200.0 Tighten
globalroute__timing__setup__ws -116.0 -100.0 Tighten
globalroute__timing__setup__tns -21600.0 -19800.0 Tighten
finish__timing__setup__tns -6000.0 -4450.0 Tighten

designs/asap7/swerv_wrapper/rules-base.json updates:

Metric Old New Type
detailedroute__route__wirelength 1826079 1711340 Tighten

designs/asap7/uart/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -928.0 -927.0 Tighten

designs/gf180/aes-hybrid/rules-base.json updates:

Metric Old New Type
finish__design__instance__area 765254 762911 Tighten

designs/gf180/aes/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -102.0 -101.0 Tighten

designs/gf180/ibex/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -23.8 -8.66 Tighten
detailedroute__route__wirelength 1368088 1364900 Tighten
finish__timing__setup__ws -0.672 -0.628 Tighten
finish__timing__setup__tns -11.1 -2.6 Tighten
finish__design__instance__area 773257 772718 Tighten

designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json updates:

Metric Old New Type
detailedroute__route__wirelength 37773 37489 Tighten

designs/ihp-sg13g2/riscv32i/rules-base.json updates:

Metric Old New Type
placeopt__design__instance__area 155238 155229 Tighten
placeopt__design__instance__count__stdcell 10428 10421 Tighten
detailedroute__route__wirelength 470173 469295 Tighten
finish__design__instance__area 161066 160778 Tighten

designs/ihp-sg13g2/spi/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -0.213 -0.2 Tighten
detailedroute__route__wirelength 3632 3441 Tighten
finish__design__instance__area 2758 2756 Tighten

designs/nangate45/aes/rules-base.json updates:

Metric Old New Type
placeopt__design__instance__area 23359 23356 Tighten
globalroute__timing__hold__tns -0.367 -0.226 Tighten

designs/nangate45/ariane133/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -0.612 -0.509 Tighten
cts__timing__setup__tns -989.0 -650.0 Tighten
globalroute__timing__setup__ws -0.611 -0.516 Tighten
globalroute__timing__setup__tns -1060.0 -624.0 Tighten
detailedroute__route__wirelength 9005432 8313088 Tighten
finish__timing__setup__ws -0.634 -0.531 Tighten
finish__timing__setup__tns -1190.0 -622.0 Tighten

designs/nangate45/dynamic_node/rules-base.json updates:

Metric Old New Type
placeopt__design__instance__area 25251 25242 Tighten
placeopt__design__instance__count__stdcell 12088 12080 Tighten
cts__design__instance__count__setup_buffer 1051 1050 Tighten
cts__design__instance__count__hold_buffer 1051 1050 Tighten
detailedroute__route__wirelength 219551 219107 Tighten

designs/nangate45/ibex/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -0.953 -0.546 Tighten

designs/nangate45/jpeg/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -41.2 -39.2 Tighten
globalroute__timing__setup__tns -54.2 -49.5 Tighten
finish__timing__setup__tns -42.1 -36.5 Tighten

designs/nangate45/mempool_group/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -11000.0 -10300.0 Tighten
finish__timing__setup__tns -12900.0 -12100.0 Tighten

designs/nangate45/swerv/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -305.0 -249.0 Tighten
finish__timing__setup__tns -234.0 -233.0 Tighten

designs/nangate45/swerv_wrapper/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -0.114 -0.101 Tighten
cts__timing__setup__tns -0.926 -0.402 Tighten
globalroute__timing__setup__ws -0.273 -0.111 Tighten
globalroute__timing__setup__tns -7.04 -0.534 Tighten
detailedroute__route__wirelength 3659075 3639180 Tighten
finish__timing__setup__ws -0.236 -0.138 Tighten
finish__timing__setup__tns -2.16 -0.924 Tighten

designs/nangate45/tinyRocket/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -34.7 -17.1 Tighten
globalroute__timing__setup__ws -0.17 -0.168 Tighten
globalroute__timing__setup__tns -43.7 -30.0 Tighten
finish__timing__setup__tns -37.0 -28.5 Tighten

designs/sky130hd/aes/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__ws -1.54 -0.925 Tighten
finish__timing__setup__ws -0.985 -0.648 Tighten

designs/sky130hd/gcd/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__ws -2.43 -2.42 Tighten
globalroute__timing__setup__tns -110.0 -99.7 Tighten
detailedroute__route__wirelength 8413 8194 Tighten
finish__timing__setup__ws -2.29 -2.28 Tighten
finish__timing__setup__tns -95.5 -92.8 Tighten
finish__design__instance__area 5056 4986 Tighten

designs/sky130hd/ibex/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__ws -0.697 -0.576 Tighten
globalroute__timing__setup__tns -2.74 -2.37 Tighten

designs/sky130hd/jpeg/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -0.621 -0.605 Tighten
cts__timing__setup__tns -63.2 -55.8 Tighten
globalroute__antenna_diodes_count 126 122 Tighten
globalroute__timing__setup__ws -0.9 -0.899 Tighten
globalroute__timing__setup__tns -157.0 -153.0 Tighten

designs/sky130hd/microwatt/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -3.59 -2.6 Tighten
cts__timing__setup__tns -661.0 -300.0 Tighten
globalroute__antenna_diodes_count 3084 2531 Tighten
globalroute__timing__setup__ws -3.63 -2.59 Tighten
globalroute__timing__setup__tns -607.0 -304.0 Tighten
detailedroute__antenna__violating__nets 5 3 Tighten
detailedroute__antenna_diodes_count 2361 2095 Tighten
finish__timing__setup__ws -2.95 -2.22 Tighten
finish__timing__setup__tns -326.0 -183.0 Tighten

designs/sky130hd/riscv32i/rules-base.json updates:

Metric Old New Type
placeopt__design__instance__count__stdcell 8516 8498 Tighten
cts__timing__setup__tns -69.5 -55.4 Tighten

designs/sky130hs/aes/rules-base.json updates:

Metric Old New Type
placeopt__design__instance__area 162262 160499 Tighten
placeopt__design__instance__count__stdcell 19665 19517 Tighten
cts__timing__setup__ws -0.144 -0.14 Tighten
cts__timing__setup__tns -0.564 -0.56 Tighten
globalroute__timing__setup__tns -4.14 -2.99 Tighten
finish__timing__setup__ws -0.313 -0.241 Tighten
finish__timing__setup__tns -1.34 -0.826 Tighten
finish__design__instance__area 178643 177126 Tighten

designs/sky130hs/gcd/rules-base.json updates:

Metric Old New Type
cts__timing__setup__tns -11.0 -10.8 Tighten
globalroute__timing__setup__ws -0.636 -0.553 Tighten
globalroute__timing__setup__tns -18.8 -18.3 Tighten
finish__timing__setup__ws -0.509 -0.483 Tighten
finish__timing__setup__tns -15.1 -14.6 Tighten

designs/sky130hs/ibex/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -0.37 -0.35 Tighten
cts__timing__setup__tns -1.42 -1.4 Tighten
globalroute__timing__setup__tns -68.4 -18.8 Tighten
finish__timing__setup__ws -0.375 -0.35 Tighten
finish__timing__setup__tns -4.1 -1.4 Tighten

designs/sky130hs/jpeg/rules-base.json updates:

Metric Old New Type
globalroute__antenna_diodes_count 206 193 Tighten
globalroute__timing__setup__ws -0.208 -0.205 Tighten

designs/sky130hs/riscv32i/rules-base.json updates:

Metric Old New Type
cts__timing__setup__ws -0.957 -0.854 Tighten
cts__timing__setup__tns -321.0 -293.0 Tighten
globalroute__timing__setup__tns -839.0 -832.0 Tighten
detailedroute__route__wirelength 355618 352098 Tighten
finish__timing__setup__ws -1.04 -1.01 Tighten
finish__timing__setup__tns -523.0 -509.0 Tighten

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.

4 participants