Environment Variables for the OpenROAD Flow Scripts#
Environment variables are used in the OpenROAD flow to define various
platform, design and tool specific variables to allow finer control and
user overrides at various flow stages. These are defined in the
config.mk
file located in the platform and design specific directories.
General variables for all stages#
Variable |
Description |
---|---|
|
If set to 1, then metrics, report_metrics does nothing. Useful to speed up builds. |
Platform#
These variables must be defined in the platform specific config file
located in the OpenROAD-flow-scripts directory of
./flow/platforms/<PLATFORM>/config.mk
Note: The variable PLATFORM_DIR
is set by default based on the PLATFORM
variable. For OpenROAD Flow Scripts we have the following public platforms:
sky130hd
sky130hs
nangate45
asap7
Platform Specific Environment Variables#
The table below lists the complete set of variables used in each of the public platforms supported by the OpenROAD flow.
Note:
= indicates default definition assigned by the tool
?= indicates that the variable value may be reassigned with design
config.mk
Configuration Variable |
sky130hd |
sky130hs |
nangate45 |
asap7 |
gf180 |
---|---|---|---|---|---|
Library Setup |
|||||
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
Synthesis |
|||||
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
?= |
?= |
?= |
?= |
?= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
?= |
?= |
?= |
?= |
?= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
Floorplan |
|||||
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
= |
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
?= |
|
= |
= |
= |
= |
?= |
|
= |
= |
= |
= |
?= |
Placement |
|||||
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
?= |
|
= |
= |
= |
= |
= |
Clock Tree Synthesis |
|||||
|
= |
= |
= |
= |
= |
|
N/A |
N/A |
N/A |
= |
= |
|
= |
= |
= |
= |
= |
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
|
|
?= |
?= |
?= |
?= |
?= |
|
?= |
?= |
?= |
?= |
?= |
Routing |
|||||
|
= |
= |
= |
= |
= |
|
= |
= |
= |
= |
?= |
|
= |
= |
= |
= |
?= |
|
= |
= |
= |
= |
= |
|
?= |
?= |
?= |
?= |
?= |
Library Setup#
Variable |
Description |
---|---|
|
Technology node or process in use. |
|
Library to select based on corner BC/TC/WC. |
|
A technology LEF file of the PDK that includes all relevant information regarding metal layers, vias, and spacing requirements. |
|
Path to technology standard cell LEF file. |
|
Path to platform GDS files. |
|
A Liberty file of the standard cell library with PVT characterization, input and output characteristics, timing and power definitions for each cell. |
|
Dont use cells eases pin access in detailed routing. |
Synthesis#
Variable |
Description |
---|---|
|
Enable to Synthesis hierarchically, otherwise considered flat synthesis. |
|
List of latches treated as a black box by Yosys. |
|
List of cells for gating clock treated as a black box by Yosys. |
|
List of adders treated as a black box by Yosys. |
|
Tie high cells used in Yosys synthesis to replace a logical 1 in the Netlist. |
|
Tie low cells used in Yosys synthesis to replace a logical 0 in the Netlist. |
|
Used to insert a buffer cell to pass through wires. Used in synthesis. |
|
Clock period to be used by STA during synthesis. Default value read from |
|
Default driver cell used during ABC synthesis. |
|
During synthesis set_load value used. |
|
For hierarchical synthesis, we ungroup modules of size given by this variable. |
Floorplan#
Variable |
Description |
---|---|
|
Use the DEF file to initialize floorplan. |
|
Placement site for core cells defined in the technology LEF file. |
|
Path to Endcap and Welltie cells file. |
|
Enable the Hierarchical RTLMP flow. By default it is disabled. |
|
Specifies keep out distance from macro, in X and Y, to standard cell row. |
|
Specifies the path of a file on how to place certain macros manually using read_macro_placement. |
|
Specifies the path of a TCL file on how to place certain macros manually. |
|
horizontal/vertical halo around macros (microns). Used by automatic macro placement. |
|
horizontal/vertical channel width between macros (microns). Used by automatic macro placement when |
|
Blockage width overridden from default calculation. |
|
File path which has a set of power grid policies used by |
|
Tcl file that defines add routing tracks to a floorplan. |
|
The metal layer on which to place the I/O pins horizontally (top and bottom of the die). |
|
The metal layer on which to place the I/O pins vertically (sides of the die). |
|
Skip loading timing for a faster GUI load. |
Placement#
Variable |
Description |
---|---|
|
Skip the initial non-IO based global placement if IO constraints are present. |
|
Cell padding on both sides in site widths to ease routability during global placement. |
|
Cell padding on both sides in site widths to ease routability in detail placement. |
|
The desired placement density of cells. It reflects how spread the cells would be on the core area. 1.0 = closely dense. 0.0 = widely spread. |
|
Check the lower boundary of the PLACE_DENSITY and add PLACE_DENSITY_LB_ADDON if it exists. |
|
Remove power grid vias which generate DRC violations after detailed routing. |
|
Use additional tuning parameters during global placement other than default args defined in gloabl_place.tcl. |
|
Enable detail placement with improve_placement feature. |
|
Specifies how far an instance can be moved when optimizing. |
|
Specifies whether the placer should use timing driven placement. |
|
Specifies whether the placer should use routability driven placement. |
|
Specifies a capacitance margin when fixing max capacitance violations. This option allow you to overfix. |
|
Specifies a slew margin when fixing max slew violations. This option allow you to overfix. |
Clock Tree Synthesis (CTS)#
Variable |
Description |
---|---|
|
Override |
|
The buffer cell used in the clock tree. |
|
Fill cells are used to fill empty sites. |
|
Specifies a time margin for the slack when fixing hold violations. This option allow you to overfix. |
|
Specifies a time margin for the slack when fixing setup violations. |
|
Do not use gate cloning transform to fix timing violations (default: use gate cloning) |
|
Do not use pin swapping as a transform to fix timing violations (default: use pin swapping) |
|
Specifies how many percent of violating paths to fix [0-100]. Worst path will always be fixed |
|
Enable running equivalence checks with to verify logical correctness of repair_timing |
|
String patterns directly passed to write_verilog -remove_cells <> for equivalence checks |
|
Skipping CTS repair, which can take a long time, can be useful in architectural exploration or when getting CI up and running |
Routing#
Variable |
Description |
---|---|
|
The lowest metal layer name to be used in routing. |
|
The highest metal layer name to be used in routing. |
|
Add additional arguments for debugging purpose during detail route. |
|
Sets the number of GCells added to the blockages boundaries from macros. |
|
Specifies how many percent of paths with positive slacks can be slowed for power savings [0-100]. |
Extraction#
Variable |
Description |
---|---|
|
RC Extraction rules file path. |
|
Metal & Via RC definition file path. |
|
JSON rule file for metal fill during chip finishing. |
|
A mapping from LEF/DEF to GDS using the KLayout tool. |
|
Default metal layer to report IR drop. |
Design Specific Configuration Variables#
Required Variables#
Following minimum design variables must be defined in the design configuration
file for each design located in the OpenROAD-flow-scripts directory of
./flow/designs/<PLATFORM>/<DESIGN_NAME>/config.mk
Variable |
Description |
---|---|
|
Specifies process design kit or technology node to be used. |
|
The name of the top-level module of the design. |
|
The path to the design Verilog files. |
|
The path to design constraint (SDC) file. |
Optional Variables#
These are optional variables that may be over-ridden/appended with
default value from the platform config.mk
by defining in the design
configuration file.
Synthesis#
Variable |
Description |
---|---|
|
Hardened macro LEF view files listed here. |
|
Hardened macro library files listed here. |
|
Hardened macro GDS files listed here. |
|
Specifies the include directories for the Verilog input files. |
|
PVT corner library selection. Only available for ASAP7 and GF180 PDK. |
|
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 difference design. |
|
Strategies for Yosys ABC synthesis: Area/Speed. Default ABC_SPEED. |
|
Used for IR Drop calculation. |
|
Used for IR Drop calculation. |
|
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 |
|
Insert additional Circuit Description Language ( |
|
Technology mapping liberty files for flip-flops. |
|
Set liberty files as |
|
Mark modules to keep from getting removed in flattening. |
|
Optional synthesis variables for yosys. |
|
Apply toplevel params (if exist). |
Floorplan#
Variable |
Description |
---|---|
|
The core utilization percentage (0-100). Overrides |
|
The core aspect ratio (height / width). This values is ignored if |
|
The margin between the core area and die area, in multiples of SITE heights. The margin is applied to each side. This variable is ignored if |
|
The die area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2). This variable is ignored if |
|
The core area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2). This variable is ignored if |
|
Enable re-synthesis for area reclaim. |
|
Enable re-synthesis for timing optimization. |
|
Set macro halo for x-direction. Only available for ASAP7 PDK. |
|
Set macro halo for y-direction. Only available for ASAP7 PDK. |
Placement#
Variable |
Description |
---|---|
|
The wrapper file that replace existing macros with their wrapped version. |
Clock Tree Synthesis#
Variable |
Description |
---|---|
|
Distance (in microns) between buffers. |
|
Maximum diameter (in microns) of sink cluster. Default 20. |
|
Maximum number of sinks per cluster. Default 50. |
Routing#
Variable |
Description |
---|---|
|
Specifies a Tcl scripts with commands to run before FastRoute. |
GDS Streamout#
Variable |
Description |
---|---|
|
Whether to perform metal density filling. Default 0 (=off). |
|
Seal macro to place around the design. |