Skip to content

Drop REMOVE_ABC_BUFFERS from designs that no longer need it - #4575

Open
oharboe wants to merge 2 commits into
The-OpenROAD-Project:masterfrom
oharboe:remove-abc-buffers
Open

oharboe wants to merge 2 commits into
The-OpenROAD-Project:masterfrom
oharboe:remove-abc-buffers

Conversation

@oharboe

@oharboe oharboe commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

TL;DR whittle down REMOVE_ABC_BUFFERS usage.

Why the flag exists

  • ddce1aa (2024-08): floorplan stopped calling remove_buffers unconditionally. It kept the ABC buffers and ran a full repair_timing. REMOVE_ABC_BUFFERS=1 was added to get the old behaviour back.
  • Right after that: designs that became too slow, or where detailed routing no longer finished, opted back in (acfb374, ee2d64e, 20cb642, e00e293, eb99b09). The variable was marked deprecated in cabe8fd.
  • Since then: the floorplan repair has become much cheaper. It is now repair_timing_helper -setup -skip_last_gasp -sequence "unbuffer,sizeup,swap,vt_swap", with no clone/split and no last gasp. So the original reason may no longer hold. This PR checks each public design that still sets the flag.

Method

  • Each design was run through make finish metadata-generate twice, from the same tools:
    • before: config.mk as-is.
    • after: REMOVE_ABC_BUFFERS=0 on the command line.
  • Both runs were checked with checkQorMetrics.py against the dashboard's base master baseline.
  • Tools: OpenROAD master + yosys 0.68 via bazelisk run //:install (bazel: //:install also installs yosys for ORFS OpenROAD#11563). Runs went 4 at a time with NUM_CORES=4, so the times are only indicative.
design before: ws / tns / DRC / time / check after: ws / tns / DRC / time / check result
sky130hd/aes -0.175 / -0.81 / 0 / 54m / PASS -0.054 / -0.21 / 0 / 56m / PASS drop flag
sky130hd/jpeg -0.554 / -78.8 / 0 / 49m / PASS -0.559 / -90.3 / 0 / 62m / PASS drop flag (TNS, WL +7.5% and runtime worse, but within the rules)
sky130hs/aes -0.138 / -0.16 / 0 / 39m / PASS -0.013 / -0.01 / 0 / 40m / PASS drop flag
ihp-sg13g2/aes -0.592 / -73.7 / 0 / 58m / PASS -0.658 / -78.3 / 0 / 49m / FAIL (cts setup ws) keep
sky130hd/riscv32i -0.641 / -20.6 / 0 / 27m / PASS -0.545 / -34.6 / 0 / 25m / FAIL (finish setup tns) keep
sky130hs/riscv32i -0.281 / -174.4 / 0 / 18m / PASS -0.306 / -167.4 / 0 / 24m / FAIL (cts setup tns) keep
ihp-sg13g2/jpeg -0.179 / -3.8 / 0 / 142m / FAIL -0.619 / -13.1 / 0 / 139m / FAIL (more rules) keep (already fails before with these tools; worse after)

DRT completed in every run. The flag is no longer needed to get through routing, but some designs still depend on it for QoR.

Not checked here

  • sky130hd/ibex, sky130hs/ibex: they use SYNTH_HDL_FRONTEND=slang, which the Bazel-installed yosys doesn't have yet.
  • gf12 ariane, ariane133, swerv_wrapper: private platform.
  • asap7/minimal: it sets the flag as a speed knob for the template, not for QoR.

These keep the flag, and the variable stays as deprecated. Its description now says that the designs still setting it lose QoR without it.

🤖 Generated with Claude Code

REMOVE_ABC_BUFFERS=1 dates from August 2024, when floorplan.tcl first
kept the ABC buffers and ran a full repair_timing, which some designs
could not finish. The floorplan repair is now a cheap
unbuffer/sizeup/swap/vt_swap pass without last gasp. sky130hd/aes,
sky130hd/jpeg and sky130hs/aes pass the QoR dashboard check without the
flag, so they drop it.

The remaining designs regress without it (ihp-sg13g2/aes, sky130hd and
sky130hs riscv32i, ihp-sg13g2/jpeg) or could not be checked (ibex uses
slang, gf12 is private), so the variable stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>

@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 removes the deprecated REMOVE_ABC_BUFFERS variable from several design configurations and updates its documentation to note that disabling it may impact the Quality of Results (QoR). The review feedback recommends clarifying the phrasing of this documentation update across FlowVariables.md, variables.json, and variables.yaml to state more professionally that some designs may experience degraded QoR without it.

Comment thread docs/user/FlowVariables.md Outdated
Comment thread flow/scripts/variables.json Outdated
Comment thread flow/scripts/variables.yaml Outdated
@openroad-ci

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch.

Commit 897dace · Jenkins build #1 · Baseline: build · View build on dashboard

62 design(s) checked — 0 with regression(s), 0 without a comparable baseline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@oharboe
oharboe requested a review from maliberty September 29, 2026 05:23
oharboe added a commit to oharboe/OpenROAD-flow-scripts that referenced this pull request Sep 29, 2026
floorplan.tcl now always runs repair_timing_helper. The variable is
dropped from variables.yaml, variables.json and FlowVariables.md.

Designs are deliberately not touched here; they are handled by
The-OpenROAD-Project#4575, The-OpenROAD-Project#4576, The-OpenROAD-Project#4577, The-OpenROAD-Project#4578 and The-OpenROAD-Project#4579.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.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