You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: document FAST_SETTINGS with ORFS source references
Add detailed documentation for each FAST_SETTINGS variable by tracing
through the OpenROAD-flow-scripts TCL source to explain what OpenROAD
commands each setting controls and why disabling them speeds up builds.
- Add inline comments to FAST_SETTINGS dict in test/BUILD with per-setting
stage, description, and source file reference
- Add "Speed up your builds" section to README.md with table of settings,
abstract_stage guidance, interactive timing queries, build profiling,
and cache miss debugging
- Add new use-case entries to the index table
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: Øyvind Harboe <[email protected]>
By default, `abstract_stage` is set to `final` (the latest ORFS stage).
337
341
338
-
> **NOTE:** Abstracts can be generated starting from the `floorplan` stage, thus skipping the `synth` stage.
342
+
> **NOTE:** Abstracts can be generated starting from the `place` stage, because pin placement happens during the place stage. The legal values for `abstract_stage` are: `place`, `cts`, `grt`, `route`, `final`.
339
343
340
344
Abstracts are useful for estimating sizes of macros with long build times and checking if they fit in upper-level modules without running the full place and route flow.
341
345
@@ -365,7 +369,7 @@ orfs_flow(
365
369
366
370
### Fast floorplanning with mock abstracts
367
371
368
-
To skip place, cts, and route and create a mock abstract where you can check that macros fit at the top level, set `abstract_stage` to `floorplan`:
372
+
To skip cts and route and create a mock abstract where you can check that macros fit at the top level, set `abstract_stage` to `place`:
369
373
370
374
> **WARNING:** Although mock abstracts can speed up turnaround times, skipping place, cts, or route can lead to errors that don't exist when these stages are run.
371
375
@@ -444,6 +448,164 @@ git restore test/BUILD
444
448
bazel run @bazel-orfs//test:tag_array_64x184_floorplan gui_floorplan
445
449
```
446
450
451
+
## Speed up your builds
452
+
453
+
### Disable expensive operations for CI and development
454
+
455
+
For CI or iterative development where timing closure isn't needed, you can
456
+
disable expensive operations. The `FAST_SETTINGS` dict in [test/BUILD](test/BUILD)
457
+
shows the recommended settings:
458
+
459
+
| Setting | Stage | What it disables | Speed impact |
|`REMOVE_ABC_BUFFERS` = `"1"`| floorplan | Removes synthesis buffers instead of running `repair_timing_helper` (gate sizing, VT swapping). Without this, floorplan timing repair can run for hours. | Very high |
462
+
|`GPL_TIMING_DRIVEN` = `"0"`| place | Timing-driven global placement. Skips timing path analysis and buffer removal during placement iterations. | High |
463
+
|`GPL_ROUTABILITY_DRIVEN` = `"0"`| place | Routability-driven global placement. Skips routing congestion estimation during placement. | Moderate |
464
+
|`SKIP_CTS_REPAIR_TIMING` = `"1"`| cts | Timing repair after clock tree synthesis. Skips iterative buffer insertion, gate sizing, gate cloning, and VT swapping. Can reduce CTS from hours to minutes. | Very high |
465
+
|`SKIP_INCREMENTAL_REPAIR` = `"1"`| grt | Incremental repair during global routing. Skips two rounds of `repair_design` + `repair_timing` with incremental re-routing. | Very high |
466
+
|`SKIP_REPORT_METRICS` = `"1"`| all | Metrics reporting (`report_checks`, `report_wns`, `report_tns`, `report_power`, `report_clock_skew`) at every stage. | Moderate |
467
+
|`FILL_CELLS` = `""`| route | Fill cell insertion (`filler_placement`). Required for manufacturing but not for design exploration. | Low |
468
+
|`TAPCELL_TCL` = `""`| floorplan | Custom tap/endcap cell placement script. Falls back to simple `cut_rows`. | Low |
469
+
|`PWR_NETS_VOLTAGES` = `""`| final | IR drop analysis for power nets (`analyze_power_grid`). | Low |
470
+
|`GND_NETS_VOLTAGES` = `""`| final | IR drop analysis for ground nets (`analyze_power_grid`). | Low |
471
+
472
+
Apply these settings in your `orfs_flow()` target:
473
+
474
+
```starlark
475
+
FAST_SETTINGS= {
476
+
"FILL_CELLS": "",
477
+
"GND_NETS_VOLTAGES": "",
478
+
"GPL_ROUTABILITY_DRIVEN": "0",
479
+
"GPL_TIMING_DRIVEN": "0",
480
+
"PWR_NETS_VOLTAGES": "",
481
+
"REMOVE_ABC_BUFFERS": "1",
482
+
"SKIP_CTS_REPAIR_TIMING": "1",
483
+
"SKIP_INCREMENTAL_REPAIR": "1",
484
+
"SKIP_REPORT_METRICS": "1",
485
+
"TAPCELL_TCL": "",
486
+
}
487
+
488
+
orfs_flow(
489
+
name="my_design",
490
+
arguments=FAST_SETTINGS| {
491
+
"CORE_UTILIZATION": "40",
492
+
# ...
493
+
},
494
+
verilog_files= ["my_design.sv"],
495
+
)
496
+
```
497
+
498
+
### Set abstract_stage as early as possible
499
+
500
+
The `abstract_stage` parameter controls how far the flow runs. Setting it earlier
501
+
skips all subsequent stages:
502
+
503
+
|`abstract_stage`| Stages built | Stages skipped |
0 commit comments