Skip to content

Release v8.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 02:45
· 11 commits to main since this release
ae4ea5f

rtl_buddy 8.0.0

8.0.0 changes rb pnr so that each default is OpenROAD's own default or the setting OpenROAD-flow-scripts (ORFS) uses, and runs the optimisation steps that ORFS runs. A user who knows OpenROAD or ORFS now gets their behaviour from rb without extra configuration. Every changed default has a key that restores the v7 behaviour.

The change is breaking: most P&R runs place, route and time differently, two keys are now required, and abstracts hardened with v7 are stale. Read Migrations: v7 to v8 before upgrading. Simulation, regression, synthesis, CDC, formal and the other command families do not change.

Required changes

  • cfg-pdks pin-layers has no default. Every PDK used by rb pnr sets both: pin-layers: {horizontal: <layer>, vertical: <layer>}. v7 assumed metal3 / metal2.
  • floorplan.utilization has no default. Set it on every pnr.yaml run that does not set die-area and core-area. v7 assumed 0.55.
  • Wire RC for setup repair. Setup repair now runs by default at three points. On a PDK whose technology LEF has no layer RC, such as Nangate45, set layer-rc-tcl. Otherwise OpenROAD stops with RSZ-0089, and the run's result says how to fix it.
  • Macro placement. rb's own macro packer is removed. OpenROAD's RTL-MP places macros with the arguments ORFS passes: placement.macro-channel is its minimum channel between macros and from the core edge (-min_channel_size, with pin-aware channels), and placement.density is its target utilisation. Delete floorplan.macro-placement, floorplan.macro-anchor and placement.macro-halo. Set placement.macro-channel on each PDK with macros, such as ORFS's [80, 80] on sky130hd; without a channel, RTL-MP can pack macros against each other and global routing fails. The channel options need OpenROAD 26Q4. To place macros another way, fix them with floorplan.macros locations or use a macro-placement hook.
  • Hardened blocks. Harden every block again, or pass --accept-stale to keep using the v7 abstracts.

Defaults that follow OpenROAD and ORFS

Setting v7 v8
floorplan.core-margin 2.0 1.0
placement.padding 1 0
placement.macro-cell-halo 1 µm blockage None
No tapcell-tcl No step cut_rows, 2 µm around each placed macro
cts-root-buffer unset First cts-buffer entry CTS picks the root buffer
post-cts-setup-repair Off On
global-route.congestion-iterations 20 30

ORFS optimisation steps, on by default

Step Key that turns it off
Setup repair at the end of the floorplan floorplan-setup-repair: false
improve_placement, optimize_mirroring after legalization placement.improve-placement: false, placement.optimize-mirroring: false
repair_clock_inverters before CTS cts-repair-clock-inverters: false
repair_design, setup and hold repair after global route global-route-repair: null
Antenna repair after global route global-route-antenna-repair: false
Antenna repair after detailed route, with a reroute detailed-route-antenna-repair: false

Antenna reports are written to grt_antennas.rpt and drt_antennas.rpt, and --resume restores them.

Fixes

  • A platform without cts-buffer runs CTS with the buffers OpenROAD picks. In v7 it failed.
  • A platform without routing-layers routes on the technology's layers. In v7 it failed.
  • A pdn-config macro grid with a halo no longer fails PDN-0008 on OpenROAD 26Q4, because rows are cut around macros.
  • A macro that overlaps a hard placement blockage or a core cut-out after macro placement fails the run, naming the macro, the region and the fix.
  • A run that stops on RSZ-0089 says the PDK has no wire RC and names the keys that fix it.
  • openroad_threads.effective is null when threads: is unset. OpenROAD picks the count and does not log it, so the 1 that v7 reported was wrong.

Effect on results

On the project template's demos with OpenROAD 26Q4, every run passes with 0 DRCs and synthesis results are unchanged. On sky130hd, area grows by at most 0.5 % and setup slack improves on every run: the flat SRAM run from 3.00 to 3.66 ns, the three-macro assembly from 2.72 to 3.64 ns. Some runs take longer.

Closes #860, #974, #976, #975, #977, #978. Refs #896.

v8 PRs: #979, #985, #991, #995 (merged into the v8 trunk), released by #994.

What's Changed

Full Changelog: v7.4.2...v8.0.0