PDK Configuration Variables¶
These variables are defined by PDK configuration files to support the OpenLane flow and its steps.
All these variables (unless marked optional) are defined by the PDK, but some may also be overriden by a user configuration.
Note
Any examples provided are for the sky130A
PDK.
User-Modifiable¶
These values may be modified by the user configuration and the included values should be considered “defaults.”
Variable |
Description |
---|---|
|
Defines the rail offset for met1 used in PDN. |
|
The spacing between horizontal power/ground pair |
|
The spacing between vertical power/ground pair |
|
The offset of the vertical power stripes on the metal layer 5 in the power distribution network |
|
The pitch of the vertical power stripes on the metal layer 4 in the power distribution network |
|
The offset of the horizontal power stripes on the metal layer 5 in the power distribution network |
|
The pitch of the horizontal power stripes on the metal layer 5 in the power distribution network |
|
Defines the strap width for the vertical layer used in PDN. |
|
Defines the strap width for the horizontal layer used in PDN. |
|
Defines the vertical width for the vertical layer used to create the core ring in the PDN. |
|
Defines the horizontal width for the horizontal layer used to create the core ring in the PDN. |
|
Defines the spacing for the vertical layer used to create the core ring in the PDN. |
|
Defines the spacing for the horizontal layer used to create the core ring in the PDN. |
|
Defines the offset for the vertical layer used to create the core ring in the PDN. |
|
Defines the offset for the horizontal layer used to create the core ring in the PDN. |
|
Layer-specific reductions in the routing capacity of the edges between the cells in the global routing graph, delimited by commas. Values range from 0 to 1. |
|
The lowest metal layer to route on. |
|
The highest metal layer to route on. |
|
A value in microns above which wire lengths generate warnings, and, if |
Static¶
These variables should really not be modified unless you absolutely know what you’re doing.
Variable |
Description |
---|---|
|
Defines the unit distance microns. Used during floorplanning for proper def file generation. |
|
Defines the power pin of the cells. |
|
Defines the ground pin of the cells. |
|
Points to the path of the tracks file. Used by the floorplanner to generate tracks |
|
Points to the path of the tech lef used for minimum corner extraction. (Optional) |
|
Points to the path of the tech lef used for nominal corner extraction. |
|
Points to the path of the tech lef used for maximum corner extraction. (Optional) |
|
A list of paths to the cells lef views. Recommended to use wild card to catch all the files as follows: |
|
A list of paths to the cells GDSII views. Recommended to use wild card to catch all the files as follows: |
|
Points to the magic tech file which mainly has drc rules. |
|
Points to the klayout tech file (.lyt). |
|
Points to the klayout properties file (.lyp). |
|
Points to klayout deflef layer map file (.map). |
|
A space separated layers list to ignore during klayout xor check. |
|
A path to KLayout DRC runset. |
|
Options availble to KLayout DRC runset. They vary from one PDK to another. |
|
Points to the magicrc file that is sourced while running magic in the flow. |
|
A list of the pads lef views. For example: |
|
A list of pad cells name prefixes. |
|
Points to the setup file for netgen(lvs), that can exclude certain cells etc.. |
|
The distance between tapcell columns. Used in floorplanning in tapcell insertion. |
|
The metal layer used in estimate parastics for clock signals. |
|
The metal layer used in estimate parastics for data (non-clock) signals. |
|
The metal layer on which to place the io pins horizontally (top and bottom of the die). |
|
The metal layer on which to place the io pins vertically (sides of the die) |
|
The horizontal distance between two tapcell columns |
|
OpenRCX rules at the minimum corner. (Optional) |
|
OpenRCX rules at the nominal corner. |
|
OpenRCX rules at the maximum corner. (Optional) |
|
**Deprecated: Use |
SCL-specific variables¶
This section defines the necessary variables to configure a standard cell library for use with OpenLane.
Modifiable¶
These values may be modified by the user configuration and the included values should be considered “defaults.”
Variable |
Description |
---|---|
|
Defines the maximum slew (transition) value in ns. |
|
Defines the maximum fanout for a single output in the design. |
|
Defines the capacitive load on the output ports in fF. |
|
Defines the maximum capacitance for clock tree synthesis in the design in pF. |
|
Cell padding value (in sites) for global placement. |
|
Defines the number of sites to pad the cells with during detailed placement. This value should not be higher than |
|
Defines the cells to exclude from padding for both detailed placement. |
|
Specifies the file that contains the don’t-use-cell-list to be excluded from the liberty file during synthesis. See this section for more information. |
|
Specifies the file that contains the don’t-use-cell-list to be excluded from the liberty file during synthesis and timing optimizations. See this section for more information. |
|
Defines the upper layer used in PDN. |
|
Defines the lower layer used in PDN. |
|
Defines the rail layer used in PDN. |
|
Defines the rail width for the rail layer used in PDN. |
|
A pointer for the file containing the latch mapping for yosys. (Optional) |
|
A pointer for the file containing the tri-state buffer mapping for yosys. (Optional) |
|
A pointer for the file containing the carry-select adder mapping for Yosys. (Optional) |
|
A pointer for the file containing the ripple-carry adder mapping for Yosys. (Optional) |
|
A pointer for the file containing the full adder mapping for Yosys. (Optional) |
|
Deprecated: Use |
|
Removed: Use |
Static¶
These variables should really not be modified unless you absolutely know what you’re doing.
Variable |
Description |
---|---|
|
Points to the lib file used during synthesis. |
|
Points to the lib file, corresponding to the slowest corner, for max delay calculation during STA. |
|
Points to the lib file, corresponding to the fastest corner, for min delay calculation during STA. |
|
Points to the lib file for typical delay calculation during STA. |
|
Points to the lib file for used for dff mapping. If not specified, |
|
Defines the main site used by the cells. Used during floorplanning to generate the rows. |
|
Defines the main site width. Used during floorplanning to generate the rows. |
|
Defines the main site height. Used during floorplanning to generate the rows. |
|
Defines the tapcell to be used in tapcell insertion. |
|
Defines the decapcell. Inserted during floorplanning at the sides of the design. |
|
The cell to drive the input ports, used in synthesis and static timing analysis. |
|
The name of the |
|
An alternative cell with which to drive clock inputs. Can be left empty, where the SDC script will use |
|
The name of the SYNTH_CLK_DRIVING_CELL output pin. Can be left empty, where the SDC script will use |
|
Defines the buffer, followed by its input port and output port to be used by |
|
Defines the tie high cell followed by the port that implements the tie high functionality. Used in synthesis. |
|
Defines the tie low cell followed by the port that implements the tie high functionality. Used in synthesis. |
|
Prefix of tristate cells. Used with SYNTH_CHECKS_ALLOW_TRISTATE. |
|
Defines the fill cell. Used in fill insertion. Can use a wild card to define a class of cells. Example |
|
Defines the decap cell used for fill insertion. Can use a wild card to define a class of cells. Example |
|
Defines the |
|
Defines the diode cell to be used during antenna violations fix step. |
|
Defines the cell inserted at the root of the clock tree. Used in CTS. |
|
Defines the list of clock buffers to be used in CTS. |
|
Defines power pins of stdcells. Used in PDN. |
|
Defines ground pins of stdcells. Used in PDN. |
|
A directory of Circuit Validity Checker (CVC) scripts for the relevant PDK. Must contain the following set of files: |
|
A pointer for the cdl view of the SCL. |
|
A comma separated list specifying capacitance and resistance per layer. Variable should be provided in the following format. |
|
A comma separated list specifying capacitance -only- of vias. Variable should be provided in the following format. |
Tracks Info File¶
The tracks files defines the metal layers pitches and offsets. This information should be extracted from the PDK’s tech lef. The file should be an EOL-delimited set of lines formatted as follows:
<layer name> X|Y <offset> <pitch>
DRC Exclude Cells File¶
Some cells may be excluded from PnR entirely- due to hard-to-access pin shapes and/or the cells simply being invalid (DRC violations.)
Note
For sky130, the “lpflow” cells were also excluded because the flow is unable to handle them properly and create a keep-alive power (KAPWR) supply.
The file is formatted as an EOL-delimited list of cell names (wildcards and the like not supported.)
No Synthesis Cells File¶
Some cells may be furtherexcluded from synthesis, for reasons including but not limited to the following:
Excluded from PnR, i.e., part of the DRC Exclude Cells.
Clock Buffers: They are balanced and may introduce too much of a delay when not used for clock trees as part of CTS.
Cells without default mapping: Cannot be used by Yosys.
Smaller cell sizes: Prevents under-estimating the required floorplan. The resizer may later choose to use them.
The file is formatted as an EOL-delimited list of cell names (wildcards and the like not supported.)
All cells excluded from PnR are also excluded from Synthesis.