Repository navigation
Release v8.0.0
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-pdkspin-layershas no default. Every PDK used byrb pnrsets both:pin-layers: {horizontal: <layer>, vertical: <layer>}. v7 assumedmetal3/metal2.floorplan.utilizationhas no default. Set it on everypnr.yamlrun that does not setdie-areaandcore-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 withRSZ-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-channelis its minimum channel between macros and from the core edge (-min_channel_size, with pin-aware channels), andplacement.densityis its target utilisation. Deletefloorplan.macro-placement,floorplan.macro-anchorandplacement.macro-halo. Setplacement.macro-channelon 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 withfloorplan.macroslocations or use amacro-placementhook. - Hardened blocks. Harden every block again, or pass
--accept-staleto 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-bufferruns CTS with the buffers OpenROAD picks. In v7 it failed. - A platform without
routing-layersroutes on the technology's layers. In v7 it failed. - A
pdn-configmacro grid with a halo no longer failsPDN-0008on OpenROAD 26Q4, because rows are cut around macros. - A macro that overlaps a
hardplacement 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-0089says the PDK has no wire RC and names the keys that fix it. openroad_threads.effectiveis null whenthreads: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
- release: rtl_buddy 8.0.0 (merge v8 into main) by @expsg-jiacheng in #994
Full Changelog: v7.4.2...v8.0.0