-
Notifications
You must be signed in to change notification settings - Fork 504
Expand file tree
/
Copy pathvariables.yaml
More file actions
1606 lines (1606 loc) · 47.6 KB
/
Copy pathvariables.yaml
File metadata and controls
1606 lines (1606 loc) · 47.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
---
GENERATE_ARTIFACTS_ON_FAILURE:
description: >
For instance Bazel needs artifacts (.odb and .rpt files) on a failure to
allow the user to save hours on re-running the failed step locally, but when
working with a Makefile flow, it is more natural to fail the step and leave
the user to manually inspect the logs and artifacts directly via the file
system.
Set to 1 to change the behavior to generate artifacts upon failure to e.g.
do a global route. The exit code will still be non-zero on all other
failures that aren't covered by the "useful to inspect the artifacts on
failure" use-case.
Example: just like detailed routing, a global route that fails with
congestion, is not a build failure(as in exit code non-zero), it is a
successful(as in zero exit code) global route that produce reports
detailing the problem.
Detailed route will not proceed, if there is global routing congestion
This allows build systems, such as bazel, to create artifacts for global and
detailed route, even if the operation had problems, without having know
about the semantics between global and detailed route.
Considering that global and detailed route can run for a long time and use a
lot of memory, this allows inspecting results on a laptop for a build that
ran on a server.
default: 0
TNS_END_PERCENT:
description: >
Default TNS_END_PERCENT value for post CTS timing repair. Try fixing all
violating endpoints by default (reduce to 5% for runtime).
Specifies how many percent of violating paths to fix [0-100]. Worst path
will always be fixed.
default: 100
stages:
- place
- cts
- floorplan
- grt
ROUTING_LAYER_ADJUSTMENT:
default: 0.5
description: >
Adjusts routing layer capacities to manage congestion and
improve detailed routing. High values ease detailed routing
but risk excessive detours and long global routing times,
while low values reduce global routing failure but can
complicate detailed routing.
The global routing running time normally reduces
dramatically (entirely design specific, but going from hours to
minutes has been observed) when the value is
low (such as 0.10).
Sometimes, global routing will succeed with lower values and
fail with higher values. Exploring results with different
values can help shed light on the problem. Start with
a too low value, such as 0.10, and bisect
to value that works by doing multiple global routing runs.
As a last resort, `make global_route_issue` and using
the tools/OpenROAD/etc/whittle.py can be useful to debug
global routing errors. If there is something specific that is
impossible to route, such as a clock line over a macro, global
routing will terminate with DRC errors routes that could
have been routed were it not for the specific impossible routes.
whittle.py should weed out the possible routes and leave
a minimal failing case that pinpoints the problem.
stages:
- floorplan
- place
- grt
- route
- final
RECOVER_POWER:
description: >
Specifies how many percent of paths with positive slacks can be slowed for
power savings [0-100].
default: 0
SKIP_INCREMENTAL_REPAIR:
default: 0
description: >
Skip incremental repair in global route.
stages:
- grt
DETAILED_METRICS:
description: >
If set, then calls report_metrics prior to repair operations in the CTS
and global route stages
default: 0
stages:
- cts
- grt
CORE_UTILIZATION:
description: |
The core utilization percentage (0-100).
stages:
- floorplan
tunable: 1
type: float
CORE_AREA:
description: >
The core area specified as a list of lower-left and upper-right corners in
microns
(X1 Y1 X2 Y2).
stages:
- floorplan
tunable: 1
REPORT_CLOCK_SKEW:
description: >
Report clock skew as part of reporting metrics, starting at CTS, before which
there is no clock skew.
This metric can be quite time-consuming, so it can be useful to disable.
stages:
- cts
- grt
- route
- final
default: 1
SKIP_REPORT_METRICS:
description: >
If set to 1, then metrics, report_metrics does nothing. Useful to speed up
builds.
stages:
- floorplan
- place
- cts
- grt
- route
- final
default: 0
PROCESS:
description: |
Technology node or process in use.
CORNER:
description: >
PVT corner library selection. Only available for ASAP7 and GF180 PDKs.
CORNERS:
description: >
List of timing corner names for multi-corner analysis (e.g. "slow fast").
When set, liberty files are loaded per corner using uppercase
<CORNER>_LIB_FILES environment variables (e.g. corner "slow" reads
SLOW_LIB_FILES) and timing models are generated per corner.
stages:
- All stages
TECH_LEF:
description: >
A technology LEF file of the PDK that includes all relevant information
regarding metal layers, vias, and spacing requirements.
SC_LEF:
description: |
Path to technology standard cell LEF file.
GDS_FILES:
description: |
Path to platform GDS files.
LIB_FILES:
description: >
A Liberty file of the standard cell library with PVT characterization,
input and output characteristics, timing and power definitions for each
cell.
LIB_MODEL:
description: >
Selects between NLDM and CCS timing models for the ASAP7 platform.
Valid values: NLDM (default), CCS. Used in
flow/platforms/asap7/config.mk to pick the LIB_DIR subdirectory and
accumulate the corresponding $(CORNER)_$(LIB_MODEL)_LIB_FILES list,
and in flow/scripts/load.tcl to gate CCS-specific Tcl branches.
default: NLDM
PLATFORM_TCL:
description: |
Specifies a Tcl script with commands to run before loading design.
DONT_USE_CELLS:
description: |
Dont use cells eases pin access in detailed routing.
SYNTH_GUT:
description: >
Load design and remove all internal logic before doing synthesis. This is
useful when creating a mock .lef abstract that has a smaller area than the
amount of logic would allow. bazel-orfs uses this to mock SRAMs, for
instance.
stages:
- synth
default: 0
SYNTH_HIERARCHICAL:
description: |
Enable to Synthesis hierarchically, otherwise considered flat synthesis.
stages:
- synth
default: 0
SYNTH_MEMORY_MAX_BITS:
description: >
Maximum number of bits for memory synthesis.
Ideally, real RAM or realistic fakeram should be used for RAMs
much larger than 1024 bits.
To temporarily ignore the RAM concerns and investigate other
aspects of the design, consider setting `SYNTH_MOCK_LARGE_MEMORIES=1`,
or adjusting `SYNTH_MEMORY_MAX_BITS`.
default: 4096
stages:
- synth
SYNTH_MOCK_LARGE_MEMORIES:
description: >
Reduce Yosys inferred memories larger than SYNTH_MEMORY_MAX_BITS to 1 row.
Yosys will generally infer memories from behavioral Verilog code, whether
the memories are in standalone modules or instantiated within some
larger module.
fakeram and empty Verilog memories(blackboxes) of memories will not
be inferred memories by Yosys and are therefore not affected by
this variable.
This is useful and convenient to separate the concern of instantiating
and placing memories from investigating other issues with a design,
though it comes at the expense of the increased accuracy that using
realistic fakemem would provide.
Memories with a single 1 row will of course have unrealistically good
timing and area characteristics, but timing will still correctly terminate
in a register.
Large port memories, typically register files, will still have the
retain a lot of the port logic that can be useful to investigate issues.
This can be especially useful during development of designs where the
behavioral model comes first and suitable memories are matched up
when the design RTL is stable.
A typical use case would be Chisel which will generate a behavioral model
for a memories with the required clocks, ports, etc. in addition to a
computer readable file with the specification of the memories that
is used to
[automatically](https://chipyard.readthedocs.io/en/stable/Tools/Barstools.html/)
match up suitable memory macros later in the flow.
During an architectural screening study, a large range of memory
configurations can be investigated quickly with this option,
without getting bogged down in the concern of how to realize the
memories in silicon for emphemral RTL configurations that exist
only long enough to run through the ORFS flow to create a table
of some characteristics of a design configuration.
default: 0
stages:
- synth
SYNTH_KEEP_MOCKED_MEMORIES:
description: >
When `SYNTH_MOCK_LARGE_MEMORIES=1`, setting this to 1,
will keep mocked memories (not flattening them).
This preserves some of the access logic complexity and
avoids optimizations outside of the mocked memory.
default: 1
stages:
- synth
SYNTH_HDL_FRONTEND:
description: >
Select an alternative language frontend to ingest the design. Available option
is "slang". If the variable is empty, design is read with the Yosys read_verilog
command.
stages:
- synth
SLANG_PLUGIN_PATH:
description: >
Path to the slang plugin for Yosys. This can be a full path to a
custom-built plugin (e.g. for Bazel builds) or just the plugin name.
default: slang
stages:
- synth
SYNTH_SLANG_ARGS:
description: >
Additional arguments passed to the slang frontend during synthesis.
stages:
- synth
default: ""
SYNTH_BLACKBOXES:
description: >
List of cells treated as a black box by Yosys. With Bazel, this can be used
to run synthesis in parallel for the large modules of the design.
Non-existant modules are ignored silently, useful when listing modules
statically, even if modules come and go dynamically.
stages:
- synth
SYNTH_CHECKPOINT:
description: >
Path to a Yosys RTLIL checkpoint to read in place of the default
canonicalization checkpoint at the start of synth.tcl.
Intended for parallel synthesis flows that reuse a checkpoint taken after
coarse synthesis and `keep_hierarchy` have already been decided, so each
partition skips that common prefix.
Leave unset for the normal flow.
stages:
- synth
SYNTH_SKIP_KEEP:
description: >
Only meaningful together with SYNTH_CHECKPOINT. When set, signals that
the supplied checkpoint is still canonical RTLIL (coarse synth and
`keep_hierarchy` have not been run yet), so synth.tcl runs the full
coarse+fine synthesis flattened.
When unset and SYNTH_CHECKPOINT is used, synth.tcl assumes the
checkpoint already has coarse synth + `keep_hierarchy` done and
resumes from `coarse:fine`.
stages:
- synth
default: 0
SYNTH_NETLIST_FILES:
description: >
Skips synthesis and uses the supplied netlist files. If the netlist files
contains duplicate modules, which can happen when using hierarchical
synthesis on indvidual netlist files and combining here,
subsequent modules are silently ignored and only the first module is used.
stages:
- synth
SYNTH_CANONICALIZE_TCL:
description: >
Specifies a Tcl script with commands to run as part of the synth
canonicalize step.
stages:
- synth
SYNTH_RETIME_MODULES:
description: >
*This is an experimental option and may cause adverse effects.*
*No effort has been made to check if the retimed RTL is logically equivalent
to the non-retimed RTL.*
List of modules to apply automatic retiming to. These modules must not get
dissolved and as such they should either be the top module or be included
in SYNTH_KEEP_MODULES.
The main use case is to quickly identify if performance can be improved by
manually retiming the input RTL.
Retiming will treat module ports like register endpoints/startpoints.
The objective function of retiming isn't informed by SDC, even the clock
period is ignored. As such, retiming will optimize for best delay
at potentially high register number cost. Automatic retiming can produce
suboptimal results as its timing model is crude and it doesn't find the
optimal distribution of registers on long pipelines. See OR discussion # 8080.
stages:
- synth
SYNTH_REPEATABLE_BUILD:
description: >
License to prune anything that makes builds less repeatable, typically
used with Bazel to ensure that builds are bit-for-bit identical so that
caching works optimally.
Removes debug information that encodes paths, timestamps, etc.
stages:
- synth
default: 0
SYNTH_INSBUF:
description: >
Insert input buffers on top-level input ports during synthesis.
Useful to disable when doing parallel synthesis and
concatenating netlists later as we're generating netlists
of submodules.
stages:
- synth
default: 1
DFF_MAP_FILE:
description: |
Optional mapping file supplied to Yosys to map D flip-flops
stages:
- synth
LATCH_MAP_FILE:
description: |
Optional mapping file supplied to Yosys to map latches
stages:
- synth
CLKGATE_MAP_FILE:
description: |
Optional mapping file supplied to Yosys to map clock gating cells
stages:
- synth
ADDER_MAP_FILE:
description: |
Optional mapping file supplied to Yosys to map adders
stages:
- synth
TIEHI_CELL_AND_PORT:
description: >
Tie high cells used in Yosys synthesis to replace a logical 1 in the
Netlist.
stages:
- synth
- floorplan
TIELO_CELL_AND_PORT:
description: |
Tie low cells used in Yosys synthesis to replace a logical 0 in the Netlist.
stages:
- synth
- floorplan
TIE_SEPARATION:
description: |
Distance separating tie high/low instances from the load.
stages:
- floorplan
default: 0
UNSET_ABC9_BOX_CELLS:
description: |
List of cells to unset the abc9_box attribute on
stages:
- synth
EARLY_SIZING_CAP_RATIO:
description: |
Ratio between the input pin capacitance and the output pin load during initial gate sizing.
stages:
- place
MIN_BUF_CELL_AND_PORTS:
description: |
Used to insert a buffer cell to pass through wires. Used in synthesis.
stages:
- synth
ABC_CLOCK_PERIOD_IN_PS:
description: >
Clock period to be used by STA during synthesis. Default value read from
`constraint.sdc`.
stages:
- synth
ABC_DRIVER_CELL:
description: |
Default driver cell used during ABC synthesis.
stages:
- synth
ABC_LOAD_IN_FF:
description: |
During synthesis set_load value used.
stages:
- synth
SYNTH_MINIMUM_KEEP_SIZE:
description: >
For hierarchical synthesis, we keep modules of larger area than given by
this variable and flatten smaller modules.
The area unit used is the size of a basic nand2 gate from the
platform's standard cell library. The default value is platform specific.
stages:
- synth
default: 0
SYNTH_WRAPPED_OPERATORS:
description: >
Synthesize multiple architectural options for each arithmetic operator in the
design. These options are available for switching among in later stages of
the flow.
stages:
- All stages
SYNTH_WRAPPED_ADDERS:
description: >
Specify the adder modules that can be used for synthesis, separated by commas.
The default adder module is determined by the first element of this variable.
stages:
- synth
SYNTH_WRAPPED_MULTIPLIERS:
description: >
Specify the multiplier modules that can be used for synthesis, separated by commas.
The default multiplier module is determined by the first element of this variable.
stages:
- synth
SWAP_ARITH_OPERATORS:
description: >
Improve timing QoR by swapping ALU and MULT arithmetic operators.
stages:
- All stages
FLOORPLAN_DEF:
description: |
Use the DEF file to initialize floorplan. Mutually exclusive with FOOTPRINT or DIE_AREA/CORE_AREA or CORE_UTILIZATION.
stages:
- floorplan
- place
DONT_BUFFER_PORTS:
description: >
Do not buffer input/output ports during floorplanning.
stages:
- place
default: 0
BUFFER_PORTS_ARGS:
description: >
Specify arguments to the buffer_ports call during placement. Only used if DONT_BUFFER_PORTS=0.
stages:
- place
REMOVE_ABC_BUFFERS:
description: >
Remove abc buffers from the netlist. If timing repair in floorplanning is
taking too long, use a SETUP/HOLD_SLACK_MARGIN to terminate timing repair early
instead of using REMOVE_ABC_BUFFERS or set SKIP_LAST_GASP=1.
stages:
- floorplan
deprecated: 1
default: 0
BALANCE_ROWS:
description: |
Balance rows during placement.
stages:
- place
default: 0
ADDITIONAL_SITES:
description: >
Passed as -additional_sites to initialize_floorplan.
stages:
- floorplan
PLACE_SITE:
description: |
Placement site for core cells defined in the technology LEF file.
stages:
- floorplan
type: string
tunable: 1
LAYER_PARASITICS_FILE:
description: |
Path to per layer parasitics file. Defaults to $(PLATFORM_DIR)/setRC.tcl.
type: string
TAPCELL_TCL:
description: |
Path to Endcap and Welltie cells file.
stages:
- floorplan
MACRO_PLACEMENT_TCL:
description: |
Specifies the path of a TCL file on how to place macros manually.
The user may choose to place just some of the macros in the design.
The macro placer will handle the remaining unplaced macros.
stages:
- floorplan
MACRO_PLACE_HALO:
description: >
Horizontal/vertical halo around macros (microns). Used by automatic macro
placement.
stages:
- floorplan
MACRO_BLOCKAGE_HALO:
description: >
Distance beyond the edges of a macro that will also be covered by the
blockage generated for that macro.
Note that the default macro blockage halo comes from the largest of the
specified MACRO_PLACE_HALO x or y values. This variable overrides that
calculation.
stages:
- floorplan
PDN_TCL:
description: >
File path which has a set of power grid policies used by pdn to be applied
to the design, such as layers to use, stripe width and spacing to generate
the actual metal straps.
stages:
- floorplan
MAKE_TRACKS:
description: |
Tcl file that defines add routing tracks to a floorplan.
stages:
- floorplan
IO_CONSTRAINTS:
description: |
File path to the IO constraints .tcl file. Also used for manual placement.
stages:
- floorplan
IO_PLACER_H:
description: >
A list of metal layers on which the I/O pins are placed horizontally (top and
bottom
of the die).
stages:
- place
IO_PLACER_V:
description: >
A list of metal layers on which the I/O pins are placed vertically (sides of the
die).
stages:
- place
GUI_TIMING:
description: >
Load timing information when opening GUI. For large designs, this can be
quite time consuming. Useful to disable when investigating non-timing
aspects like floorplan, placement, routing, etc.
default: 1
FILL_CELLS:
description: >
Fill cells are used to fill empty sites. If not set or empty, fill cell
insertion is skipped.
stages:
- route
TAP_CELL_NAME:
description: |
Name of the cell to use in tap cell insertion.
CELL_PAD_IN_SITES_GLOBAL_PLACEMENT:
description: >
Cell padding on both sides in site widths to ease routability during global
placement.
stages:
- place
- floorplan
default: 0
type: int
tunable: 1
DETAIL_PLACEMENT_ARGS:
description: >
Specify arguments to the detailed_placement call during placement.
stages:
- place
CELL_PAD_IN_SITES_DETAIL_PLACEMENT:
description: >
Cell padding on both sides in site widths to ease routability in detail
placement.
stages:
- place
- cts
- grt
default: 0
type: int
tunable: 1
PLACE_PINS_ARGS:
description: |
Arguments to place_pins
stages:
- place
PLACE_DENSITY:
description: >
The desired average placement density of cells: 1.0 = dense, 0.0 = widely spread.
The intended effort is also communicated by this parameter. Use a low value for
faster builds and higher value for better quality of results.
If a too low value is used, the placer will not be able to place all cells and
a recommended minimum placement density can be found in the logs.
A too high value can lead to excessive runtimes, even timeouts and subtle failures
in the flow after placement, such as in CTS or global routing when timing repair
fails.
The default is platform specific.
stages:
- floorplan
- place
PLACE_DENSITY_LB_ADDON:
description: >
Check the lower boundary of the PLACE_DENSITY and add
PLACE_DENSITY_LB_ADDON if it exists.
stages:
- floorplan
- place
tunable: 1
type: float
REPAIR_PDN_VIA_LAYER:
description: |
Remove power grid vias which generate DRC violations after detailed routing.
GLOBAL_PLACEMENT_ARGS:
description: >
Use additional tuning parameters during global placement other than default
args defined in global_place.tcl.
stages:
- place
ENABLE_DPO:
description: |
Enable detail placement with improve_placement feature.
default: 1
DPO_MAX_DISPLACEMENT:
description: |
Specifies how far an instance can be moved when optimizing.
default: 5 1
DPL_USE_OLD_DIAMOND:
description: |
Use the former diamond search legalizer for detailed placement instead of the default negotiation legalizer.
default: 0
stages:
- place
- cts
- grt
GPL_TIMING_DRIVEN:
description: |
Specifies whether the placer should use timing driven placement.
stages:
- place
default: 1
GPL_ROUTABILITY_DRIVEN:
description: |
Specifies whether the placer should use routability driven placement.
stages:
- place
default: 1
GPL_KEEP_OVERFLOW:
description: >
Passed as -keep_resize_below_overflow to global_placement.
Only used when GPL_TIMING_DRIVEN is enabled.
stages:
- place
MIN_PLACE_STEP_COEF:
description: >
Sets the minimum phi coefficient (pcof_min / µ_k Lower Bound) for global
placement optimization. This parameter controls the step size lower bound
in the RePlAce Nesterov optimization algorithm. Lower values may improve
convergence but can increase runtime.
Valid range: 0.95-1.05
default: 0.95
stages:
- place
tunable: 1
type: float
MAX_PLACE_STEP_COEF:
description: >
Sets the maximum phi coefficient (pcof_max / µ_k Upper Bound) for global
placement optimization. This parameter controls the step size upper bound
in the RePlAce Nesterov optimization algorithm. Higher values allow more
aggressive optimization but may risk divergence.
Valid range: 1.00-1.20
default: 1.05
stages:
- place
tunable: 1
type: float
CAP_MARGIN:
description: >
Specifies a capacitance margin when fixing max capacitance violations. This
option allows you to overfix.
tunable: 1
SLEW_MARGIN:
description: >
Specifies a slew margin when fixing max slew violations. This option allows
you to overfix.
tunable: 1
CTS_ARGS:
description: |
Override `clock_tree_synthesis` arguments.
stages:
- cts
CTS_SNAPSHOTS:
description: |
Create ODB/SDC files at different stages of CTS.
stages:
- cts
default: 0
HOLD_SLACK_MARGIN:
description: >
Specifies a time margin for the slack when fixing hold violations.
This option allows you to overfix or underfix (negative value, terminate
retiming before 0 or positive slack).
floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0 (default hold slack margin).
This avoids overrepair in floorplan for hold by default, but allows skipping
hold repair using a negative HOLD_SLACK_MARGIN.
Exiting timing repair early is useful in exploration where
the .sdc has a fixed clock period at the design's target clock period and where
HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair (extremely long running
times) when exploring different parameter settings.
When an ideal clock is used, that is before CTS,
a clock insertion delay of 0 is used in timing paths. This creates
a mismatch between macros that have a .lib file from after CTS, when
the clock is propagated. To mitigate this, OpenSTA will use subtract
the clock insertion delay of macros when calculating timing with ideal
clock. Provided that min_clock_tree_path
and max_clock_tree_path are in the .lib file, which is the case for
macros built with OpenROAD. This is less accurate than if OpenROAD had
created a placeholder clock tree for timing estimation purposes
prior to CTS.
There will inevitably be inaccuracies in the timing calculation prior
to CTS. Use a slack margin that is low enough, even negative, to
avoid overrepair. Inaccuracies in the timing prior to CTS can also
lead to underrepair, but there no obvious and simple way to avoid
underrapir in these cases.
Overrepair can lead to excessive runtimes in repair or too much buffering
being added, which can present itself as congestion of hold cells or
buffer cells.
Another use of SETUP/HOLD_SLACK_MARGIN is design parameter exploration
when trying to find the minimum clock period for a design.
The SDC_FILE for a design can be quite complicated and instead of
modifying the clock period in the SDC_FILE, which can be non-trivial,
the clock period can be fixed at the target frequency and the
SETUP/HOLD_SLACK_MARGIN can be swept to find a plausible
current minimum clock period.
stages:
- cts
- floorplan
- grt
default: 0
SETUP_SLACK_MARGIN:
description: |
Specifies a time margin for the slack when fixing setup violations.
This option allows you to overfix or underfix(negative value, terminate
retiming before 0 or positive slack).
See HOLD_SLACK_MARGIN for more details.
stages:
- cts
- floorplan
- grt
default: 0
tunable: 1
SETUP_MOVE_SEQUENCE:
description: >
Passed as -sequence to repair_timing. This should be a string of move
keywords separated by commas.
stages:
- cts
- floorplan
- grt
SKIP_GATE_CLONING:
description: >
Do not use gate cloning transform to fix timing violations (default: use
gate cloning).
stages:
- cts
- floorplan
- grt
SKIP_LAST_GASP:
description: >
Do not use last gasp optimization to fix timing violations (default: use
gate last gasp).
stages:
- cts
- floorplan
- grt
SKIP_BUFFER_REMOVAL:
description: >
Passed as -skip_buffer_removal to repair_timing. Do not remove buffers
as a transform to fix timing violations (default: allow buffer removal).
stages:
- cts
- floorplan
- grt
SKIP_PIN_SWAP:
description: >
Do not use pin swapping as a transform to fix timing violations (default:
use pin swapping).
stages:
- cts
- floorplan
- grt
SKIP_VT_SWAP:
description: >
Do not perform VT swap to improve QoR (default: do VT swap).
stages:
- cts
- floorplan
- grt
SKIP_CRIT_VT_SWAP:
description: >
Do not perform VT swap on critical cells to improve QoR (default: do critical
VT swap).
This is an additional VT swap on critical cells that remain near the end of setup
fixing.
If SKIP_VT_SWAP is set to 1, this also disables critical cell VT swap.
stages:
- cts
- floorplan
- grt
SKIP_CTS_REPAIR_TIMING:
description: >
Skipping CTS repair, which can take a long time, can be useful in
architectural exploration or when getting CI up and running.
stages:
- cts
default: 0
SKIP_REPAIR_TIE_FANOUT:
description: >
Skip repair_tie_fanout at floorplan step.
stages:
- floorplan
default: 0
MIN_ROUTING_LAYER:
description: |
The lowest metal layer name to be used in routing.
stages:
- floorplan
- place
- grt
- route
- final
MAX_ROUTING_LAYER:
description: |
The highest metal layer name to be used in routing.
stages:
- floorplan
- place
- grt
- route
- final
MIN_CLK_ROUTING_LAYER:
description: >
The lowest metal layer name to be used for clock-net routing in global
routing. Used in flow/platforms/*/fastroute.tcl as the lower bound of
`set_routing_layers -clock`. Typically higher than MIN_ROUTING_LAYER so
clock nets prefer the upper, lower-RC layers. No `stages:` list because
floorplan.tcl also `source`s the platform fastroute.tcl.
VIA_IN_PIN_MIN_LAYER:
description: >
Passed as -via_in_pin_bottom_layer to pin_access and detailed_route.
stages:
- grt
- route
VIA_IN_PIN_MAX_LAYER:
description: >
Passed as -via_in_pin_top_layer to pin_access and detailed_route.
stages:
- grt
- route
DETAILED_ROUTE_ARGS:
description: |
Add additional arguments for debugging purposes during detail route.
stages:
- route
DISABLE_VIA_GEN:
description: >
Passed as -disable_via_gen to detailed_route.
stages:
- route
MACRO_EXTENSION:
description: |
Sets the number of GCells added to the blockages boundaries from macros.
DETAILED_ROUTE_END_ITERATION:
description: >
Maximum number of iterations.
default: 64
stages:
- route
OR_K:
description: >
Passed as -or_k to detailed routing.
stages:
- route
OR_SEED:
description: >
Passed as -or_seed to detailed routing.
stages:
- route
RCX_RULES:
description: |
RC Extraction rules file path.
SET_RC_TCL:
description: |
Metal & Via RC definition file path.
FILL_CONFIG:
description: |
JSON rule file for metal fill during chip finishing.
KLAYOUT_TECH_FILE:
description: |
A mapping from LEF/DEF to GDS using the KLayout tool.
IR_DROP_LAYER:
description: |
Default metal layer to report IR drop.
PLATFORM:
required: true
description: |
Specifies process design kit or technology node to be used.
DESIGN_NAME:
required: true
description: |
The name of the top-level module of the design.
VERILOG_FILES:
required: true
description: >
The path to the design Verilog/SystemVerilog files providing a description
of modules.
stages:
- synth
VERILOG_DEFINES:
description: >
Preprocessor defines passed to the language frontend.
Example: `-D HPDCACHE_ASSERT_OFF`
stages:
- synth
SDC_FILE:
required: true
description: |
The path to design constraint (SDC) file.
stages:
- synth
SDC_GUT:
description: >
Load design and remove all internal logic before doing synthesis. This is
useful when creating a mock .lef abstract that has a smaller area than the
amount of logic would allow. bazel-orfs uses this to mock SRAMs, for
instance.
stages:
- synth
ADDITIONAL_FILES:
description: |
Additional files to be added to `make issue` archive.
ADDITIONAL_LEFS:
description: >
Hardened macro LEF view files listed here. The LEF information of the
macros is immutable and used throughout all stages. Stored in the .odb file.
ADDITIONAL_LIBS:
description: >
Hardened macro library files listed here. The library information is
immutable and used throughout all stages. Not stored in the .odb file.
ADDITIONAL_GDS:
description: |
Hardened macro GDS files listed here.
stages:
- final
VERILOG_INCLUDE_DIRS:
description: |
Specifies the include directories for the Verilog input files.
stages:
- synth
DESIGN_NICKNAME:
description: >
DESIGN_NICKNAME just changes the directory name that ORFS outputs to be
DESIGN_NICKNAME instead of DESIGN_NAME in case DESIGN_NAME is unwieldy or
conflicts with a different design.
ABC_AREA:
description: |
Strategies for Yosys ABC synthesis: Area/Speed. Default ABC_SPEED.
stages:
- synth
default: 0
PWR_NETS_VOLTAGES:
description: |
Used for IR Drop calculation.
stages:
- final
GND_NETS_VOLTAGES:
description: |
Used for IR Drop calculation.
stages:
- final
BLOCKS:
description: >
Blocks used as hard macros in a hierarchical flow. Do note that you have to
specify block-specific inputs file in the directory mentioned by Makefile.
CDL_FILES:
description: |
Insert additional Circuit Description Language (`.cdl`) netlist files.
DFF_LIB_FILE:
description: >
Single Liberty file for flip-flop technology mapping (dfflibmap) during
synthesis. Takes precedence over DFF_MAP_FILE when set.
stages:
- synth
SYNTH_KEEP_MODULES: