Universal Flow PDK Configuration Variables¶
These are variables that are to be defined by a process design kit’s
configuration files for all steps and flows. For a PDK to be compatible with
OpenLane, all non-Optional
variables must be given a value.
Like with flow configuration variables, configuration objects can freely override these values.
Note
?
indicates an optional variable, i.e., a value that does not need to be
implemented by a PDK or an SCL. OpenLane steps are expected to understand that
these values may hold a value of None
in the input configuration and
behave accordingly.
PDK-Level¶
These are variables that affect the entire PDK.
Variable Name |
Type |
Description |
Units |
---|---|---|---|
|
str |
Specifies the default standard cell library to be used under the specified PDK. Must be a valid C identifier, i.e., matches the regular expression |
|
|
str |
The power pin for the cells. |
|
|
Decimal |
The voltage of the VDD pin. |
|
|
str |
The ground pin for the cells. |
|
|
Decimal? |
A value above which wire lengths generate warnings. |
µm |
|
Dict[str, Path] |
Map of corner patterns to to technology LEF files. A corner not matched here will not be supported by OpenRCX in the default flow. |
|
|
List[Path]? |
Path(s) to GPIO pad LEF file(s). |
|
|
List[Path]? |
Path(s) to GPIO pad LEF file(s) as used for routing (?). |
|
|
List[Path]? |
Path(s) to GPIO pad Verilog models. |
|
|
List[str]? |
A list of pad cell name prefixes. |
|
|
str |
Specify the primary GDSII streamout tool for this PDK. For most open-source PDKs, that would be ‘magic’. |
|
|
Decimal? |
Defines the default maximum transition value used in Synthesis and CTS. |
ns |
|
List[str]? |
Sets estimated signal wire RC values to the average of these layers’. If you provide more than two, the averages are grouped by preferred routing direction and you must provide at least one layer for each routing direction. If unset, tools should use the average of layers between RT_MIN_LAYER and RT_MAX_LAYER. This variable will be moved to the relevant step(s) in the next version of OpenLane. |
|
|
List[str]? |
Sets estimated clock wire RC values to the average of these layers’. If you provide more than two, the averages are grouped by preferred routing direction and you must provide at least one layer for each routing direction. If unset, tools should use the average of layers between RT_MIN_LAYER and RT_MAX_LAYER. This variable will be moved to the relevant step(s) in the next version of OpenLane. |
|
|
str |
The interconnect/process/voltage/temperature corner (IPVT) to use the characterized lib files compatible with by default. |
|
|
List[str] |
A list of fully qualified IPVT (Interconnect, transistor Process, Voltage, and Temperature) timing corners on which to conduct multi-corner static timing analysis. |
|
|
Path |
A path to the a classic OpenROAD |
|
|
Decimal |
The distance between tap cell columns. |
µm |
|
str |
The metal layer on which to place horizontal IO pins, i.e., the top and bottom of the die. |
|
|
str |
The metal layer on which to place vertical IO pins, i.e., the top and bottom of the die. |
|
|
str |
The lowest metal layer to route on. |
|
|
str |
The highest metal layer to route on. |
SCL-Level¶
These are variables that affect a specific standard-cell library.
Variable Name |
Type |
Description |
Units |
---|---|---|---|
|
List[str] |
SCL-specific ground pins |
|
|
List[str] |
SCL-specific power pins |
|
|
List[str]? |
A list of cell names or wildcards of tri-state buffers. |
|
|
List[str] |
A list of cell names or wildcards of fill cells to be used in fill insertion. |
|
|
List[str] |
A list of cell names or wildcards of decap cells to be used in fill insertion. |
|
|
Dict[str, List[Path]] |
A map from corner patterns to a list of associated liberty files. Exactly one entry must match the |
|
|
List[Path] |
Path(s) to the cells’ LEF file(s). |
|
|
List[Path] |
Path(s) to the cells’ GDSII file(s). |
|
|
List[Path]? |
Path(s) to cells’ Verilog model(s) |
|
|
List[Path]? |
Path(s) to cells’ black-box Verilog model(s) |
|
|
List[Path]? |
Path(s) to cells’ SPICE model(s) |
|
|
Path |
Path to a text file containing a list of (wildcards matching) cells to be excluded from the lib file in synthesis alone. |
|
|
Path |
Path to a text file containing a list of undesirable or bad (DRC-failed or complex pinout) cells or wildcards matching cells to be excluded from synthesis AND PnR. |
|
|
Decimal |
Defines the capacitive load on the output ports. |
fF |
|
int |
The max load that the output ports can drive to be used as a constraint on Synthesis and CTS. |
cells |
|
Decimal? |
The max transition time (slew) from high to low or low to high on cell inputs in ns to be used as a constraint on Synthesis and CTS. If not provided, it is calculated at runtime as |
ns |
|
Decimal? |
The maximum capacitance constraint. If not provided, the constraint is not set in the SDC file which will fall back to the value set by the liberty file |
pF |
|
Decimal |
Specifies a value for the clock uncertainty/jitter for timing analysis. |
ns |
|
Decimal |
Specifies a value for the clock transition/slew for timing analysis. |
ns |
|
Decimal |
Specifies a derating factor to multiply the path delays with. It specifies the upper and lower ranges of timing. |
% |
|
Decimal |
Specifies the percentage of the clock period used in the input/output delays. |
% |
|
str |
The cell to drive the input ports, used in synthesis and static timing analysis, in the format |
|
|
str? |
The cell to drive the clock input ports, used in synthesis and static timing analysis, in the format |
|
|
str |
Defines the tie high cell followed by the port that implements the tie high functionality, in the format |
|
|
str |
Defines the tie high cell followed by the port that implements the tie low functionality, in the format |
|
|
str |
Defines a buffer port to be used by yosys during synthesis: in the format |
|
|
str |
Defines the cell used for tap insertion. |
|
|
str |
Defines so-called ‘end-cap’ cells- decap cells placed at either sides of a design. |
|
|
str |
Defines the primary placement site in placement as specified in the technology LEF files, to generate the placement grid. |
|
|
List[str] |
Defines a list of cells to be excluded from cell padding. |
|
|
str? |
Defines a diode cell used to fix antenna violations, in the format {name}/{port}. |