GDS Flow Configuration Variables¶
This is an auto-generated reference of all GDS flow configuration variables used by the FABulous GDS generator.
These variables can be configured in the gds_config.yaml file located in either:
<project>/Tile/include/gds_config.yaml- Base configuration for all tiles<project>/Tile/<tile_name>/gds_config.yaml- Per-tile specific configuration<project>/Fabric/gds_config.yaml- Fabric-level configuration
Auto Eco Diode Insertion¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Optional |
- |
The name of lowest layer to be used in routing the clock net. |
|
Optional |
- |
The name of highest layer to be used in routing the clock net. |
|
Decimal |
0.3 |
Reduction in the routing capacity of the edges between the cells in the global routing graph for all layers. Values range from 0 to 1. 1 = most reduction, 0 = least reduction. |
|
int |
0 |
Sets the number of GCells added to the blockages boundaries from macros. A GCell is typically defined in terms of Mx routing tracks. The default GCell size is 15 M3 pitches. |
|
List |
- |
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 through 1. |
|
Optional |
- |
Diode cell padding; increases the width of diode cells during placement checks.. |
|
bool |
False |
Allow congestion during global routing |
|
int |
3 |
The maximum number of iterations for global antenna repairs. |
|
int |
50 |
The maximum number of iterations waiting for the overflow to reach the desired value. |
|
int |
10 |
The margin to over fix antenna violations. |
|
bool |
False |
Only use jumpers to fix antenna violations. Cannot be used in conjunction with GRT_ANTENNA_REPAIR_DIODE_ONLY. |
|
bool |
False |
Only use antenna diodes to fix antenna violations. Cannot be used in conjunction with GRT_ANTENNA_REPAIR_JUMPER_ONLY. |
|
bool |
True |
Specifies whether or not to run an optimize_mirroring pass whenever detailed placement happens. This pass will mirror the cells whenever possible to optimize the design. |
|
int |
500 |
Specifies how far an instance can be moved along the X-axis when finding a site where it can be placed during detailed placement. |
|
int |
100 |
Specifies how far an instance can be moved along the Y-axis when finding a site where it can be placed during detailed placement. |
|
int |
- |
Cell padding value (in sites) for detailed placement. The number will be integer divided by 2 and placed on both sides. Should be <= global placement. |
|
Optional |
- |
List of sinks to insert diodes for. |
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
str |
all |
Mode for diode insertion, options are ânoneâ, âratioâ or âallâ. âratioâ inserts diodes based on the ratio of partial to required antenna area, âallâ inserts diodes for all violating pins, ânoneâ inserts no diodes. Default is âallâ. |
Conditional Magic DRC¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
False |
A flag to choose whether labels are read with DEF files or not. From magic docs: âThe â-labelsâ option to the âdef readâ command causes each net in the NETS and SPECIALNETS sections of the DEF file to be annotated with a label having the net name as the label text.â If LVS fails, try disabling this option. |
|
bool |
False |
A flag to enable polygon subcells in magic for gds read potentially speeding up magic. From magic docs: âPut non-Manhattan polygons. This prevents interations with other polygons on the same plane and so reduces tile splitting.â |
|
bool |
True |
A flag to enable merging of connected tiles into polygons during gds write. From magic docs: âDepending on the tile geometry, this may make the output file up to four times smaller, at the cost of speed in generating the output file.â |
|
bool |
True |
If set to true, blockages in DEF files are ignored. Otherwise, they are read as sheets of metal by Magic. |
|
bool |
False |
A flag to choose whether to include GDS pointers in the generated mag files or not. |
|
Path |
- |
A path to the |
|
Path |
- |
A path to a Magic tech file which, mainly, has DRC rules. |
|
Path |
- |
A path to a PDK-specific setup file sourced by |
|
Optional |
- |
A list of pre-processed concrete views for cells. Read as a fallback for undefined cells. |
|
Optional |
- |
A list of pre-processed abstract LEF views for cells. Read as a fallback for undefined cells in scripts where cells are black-boxed. |
|
bool |
True |
Capture errors print by Magic and quit when a fatal error is encountered. Fatal errors are determined heuristically. It is not guaranteed that they are fatal errors. Hence this is function is gated by a variable. This function is needed because Magic does not throw errors. |
|
bool |
True |
A flag to choose whether to run the Magic DRC checks on GDS or not. If not, then the checks will be done on the DEF view of the design, which is a bit faster, but may be less accurate as some DEF/LEF elements are abstract. |
|
Optional |
- |
Flatten cells by name pattern on input. May be used to avoid false positive DRC errors. The strings may use standard shell-type glob patterns, with * for any length string match, ? for any single character match, \ for special characters, and [] for matching character sets or ranges. |
|
Optional |
- |
A list of pre-processed abstract LEF views for cells. They are read in before the design and act as blackboxes during DRC. |
Diodes On Ports¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Literal |
none |
Always insert diodes on ports with the specified polarities. |
|
int |
- |
Cell padding value (in sites) for global placement. Used by this step only to emit a warning if itâs 0. |
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
Optional |
- |
The name of lowest layer to be used in routing the clock net. |
|
Optional |
- |
The name of highest layer to be used in routing the clock net. |
|
Decimal |
0.3 |
Reduction in the routing capacity of the edges between the cells in the global routing graph for all layers. Values range from 0 to 1. 1 = most reduction, 0 = least reduction. |
|
int |
0 |
Sets the number of GCells added to the blockages boundaries from macros. A GCell is typically defined in terms of Mx routing tracks. The default GCell size is 15 M3 pitches. |
|
List |
- |
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 through 1. |
|
bool |
True |
Specifies whether or not to run an optimize_mirroring pass whenever detailed placement happens. This pass will mirror the cells whenever possible to optimize the design. |
|
int |
500 |
Specifies how far an instance can be moved along the X-axis when finding a site where it can be placed during detailed placement. |
|
int |
100 |
Specifies how far an instance can be moved along the Y-axis when finding a site where it can be placed during detailed placement. |
|
int |
- |
Cell padding value (in sites) for detailed placement. The number will be integer divided by 2 and placed on both sides. Should be <= global placement. |
|
str |
$^ |
A single regular expression designating nets or instances as âdonât touchâ by design repairs or resizer optimizations. |
|
Optional |
- |
A list of nets and instances as âdonât touchâ by design repairs or resizer optimizations. |
|
Optional |
- |
Resizer step-specific override for PNR_CORNERS. |
|
Optional |
- |
The desired placement density of cells. If not specified, the value will be equal to ( |
|
bool |
False |
Specifies whether the placer should run initial placement or not. |
|
Decimal |
0.25 |
Global placement initial wirelength coefficient. Decreasing the variable will modify the initial placement of the standard cells to reduce the wirelengths |
|
Optional |
- |
Sets a lower bound on the ”_k variable in the GPL algorithm. Useful if global placement diverges. See https://openroad.readthedocs.io/en/latest/main/src/gpl/README.html |
|
Optional |
- |
Sets a upper bound on the ”_k variable in the GPL algorithm. Useful if global placement diverges.See https://openroad.readthedocs.io/en/latest/main/src/gpl/README.html |
|
Decimal |
50 |
The core utilization percentage. |
|
Optional |
- |
Only applicable when PL_TIMING_DRIVEN is enabled. When the overflow is below the set value, timing-driven iterations will retain the resizer changes instead of reverting them. Allowed values are 0 to 1. If not set, a nonzero default value from OpenROAD will be used |
|
bool |
False |
Specifies whether the placer should use timing-driven placement. |
|
bool |
True |
Specifies whether the placer should use routability driven placement. |
|
Optional |
- |
Sets overflow threshold for routability mode. |
Extract PDK Info¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
Optional |
- |
Flip these sites vertically. Useful in niche alignment scenarios where single-height cells have ground at the south side and double-height cells have power at the south side, causing a short. In that situation, flipping the sites for single-height cells resolves the issue. |
|
Path |
- |
A path to the a classic OpenROAD |
|
Literal |
relative |
Sizing mode for floorplanning |
|
Decimal |
1 |
The coreâs aspect ratio (height / width). |
|
Decimal |
50 |
The core utilization percentage. |
|
Optional |
- |
Obstructions applied at floorplanning stage. Placement sites are never generated at these locations, which guarantees that it will remain empty throughout the entire flow. |
|
Optional |
- |
Soft placement blockages applied at the floorplanning stage. Areas that are soft-blocked will not be used by the initial placer, however, later phases such as buffer insertion or clock tree synthesis are still allowed to place cells in this area. |
|
Optional |
- |
Specifies a core area (i.e. die area minus margins) to be used in floorplanning. It must be paired with |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the bottom boundary. If |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the top boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the left boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the right boundary. If |
|
Optional |
- |
Explicitly specify sites other than |
Fabric¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
True |
Enables the OpenROAD.TapEndcapInsertion step. |
|
bool |
True |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. |
|
bool |
False |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
True |
Enables clock tree synthesis using the OpenROAD.CTS step. |
|
bool |
True |
Enables resizer timing optimizations after clock tree synthesis using the OpenROAD.ResizerTimingPostCTS step. |
|
bool |
False |
Enables resizer timing optimizations after global routing using the OpenROAD.ResizerTimingPostGRT step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
False |
Enables the Odb.HeuristicDiodeInsertion step. |
|
bool |
True |
Enables the OpenROAD.RepairAntennas step. |
|
bool |
True |
Enables the OpenROAD.DetailedRouting step. |
|
bool |
True |
Enables the OpenROAD.FillInsertion step. |
|
bool |
True |
Enables multi-corner static timing analysis using the OpenROAD.STAPostPNR step. |
|
bool |
True |
Enables parasitics extraction using the OpenROAD.RCX step. |
|
bool |
True |
Enables generation of an IR Drop report using the OpenROAD.IRDropReport step. |
|
bool |
True |
Enables the Netgen.LVS step. |
|
bool |
True |
Enables the Magic.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the KLayout.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the Magic.WriteLEF step. |
|
bool |
True |
Enables running the KLayout.XOR step on the two GDSII files generated by Magic and Klayout. Stream-outs for both KLayout and Magic should have already run, and the PDK must support both signoff tools. |
|
bool |
True |
Enables the Magic.DRC step. |
|
bool |
True |
Enables the KLayout.DRC step. |
|
bool |
False |
Enables the Yosys.EQY step. Not valid for VHDLClassic. |
|
bool |
True |
Enables the Verilator.Lint step and associated checker steps. Not valid for VHDLClassic. |
|
Union |
(0, 0) |
The spacing between tiles. Either a scalar (applied to both axes) or (x_spacing, y_spacing). |
|
Union |
(0, 0, 0, 0) |
The spacing around the fabric. Either a scalar (applied to all four sides) or [left, bottom, right, top]. |
|
list |
[ânomâ] |
The SPEF corners to use for the tile macros. |
|
str |
- |
The metal layer on which to place horizontally-aligned (long side parallel with the horizon) pins alongside the east and west edges of the die. |
|
str |
- |
The metal layer on which to place vertically-aligned (long side perpendicular to the horizon) pins alongside the north and south edges of the die. |
|
Decimal |
0 |
Extends the vertical io pins outside of the die by the specified units. |
|
Decimal |
0 |
Extends the horizontal io pins outside of the die by the specified units. |
|
Decimal |
2 |
A multiplier for vertical pin thickness. Base thickness is the pins layer min width. |
|
Decimal |
2 |
A multiplier for horizontal pin thickness. Base thickness is the pins layer min width. |
|
Optional |
- |
The length of the pins with a north or south orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
Optional |
- |
The length of the pins with an east or west orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
list |
- |
Path to the fabric CSV describing the tile map, parameters, and per-tile CSV locations. |
|
list |
- |
List of paths to the tile library roots. |
|
dict[str, pathlib.Path] |
None |
- |
Fabric Macro Flow¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
True |
Enables the OpenROAD.TapEndcapInsertion step. |
|
bool |
True |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. |
|
bool |
False |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
True |
Enables clock tree synthesis using the OpenROAD.CTS step. |
|
bool |
True |
Enables resizer timing optimizations after clock tree synthesis using the OpenROAD.ResizerTimingPostCTS step. |
|
bool |
False |
Enables resizer timing optimizations after global routing using the OpenROAD.ResizerTimingPostGRT step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
False |
Enables the Odb.HeuristicDiodeInsertion step. |
|
bool |
True |
Enables the OpenROAD.RepairAntennas step. |
|
bool |
True |
Enables the OpenROAD.DetailedRouting step. |
|
bool |
True |
Enables the OpenROAD.FillInsertion step. |
|
bool |
True |
Enables multi-corner static timing analysis using the OpenROAD.STAPostPNR step. |
|
bool |
True |
Enables parasitics extraction using the OpenROAD.RCX step. |
|
bool |
True |
Enables generation of an IR Drop report using the OpenROAD.IRDropReport step. |
|
bool |
True |
Enables the Netgen.LVS step. |
|
bool |
True |
Enables the Magic.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the KLayout.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the Magic.WriteLEF step. |
|
bool |
True |
Enables running the KLayout.XOR step on the two GDSII files generated by Magic and Klayout. Stream-outs for both KLayout and Magic should have already run, and the PDK must support both signoff tools. |
|
bool |
True |
Enables the Magic.DRC step. |
|
bool |
True |
Enables the KLayout.DRC step. |
|
bool |
False |
Enables the Yosys.EQY step. Not valid for VHDLClassic. |
|
bool |
True |
Enables the Verilator.Lint step and associated checker steps. Not valid for VHDLClassic. |
|
Union |
(0, 0) |
The spacing between tiles. Either a scalar (applied to both axes) or (x_spacing, y_spacing). |
|
Union |
(0, 0, 0, 0) |
The spacing around the fabric. Either a scalar (applied to all four sides) or [left, bottom, right, top]. |
|
list |
[ânomâ] |
The SPEF corners to use for the tile macros. |
|
str |
- |
The metal layer on which to place horizontally-aligned (long side parallel with the horizon) pins alongside the east and west edges of the die. |
|
str |
- |
The metal layer on which to place vertically-aligned (long side perpendicular to the horizon) pins alongside the north and south edges of the die. |
|
Decimal |
0 |
Extends the vertical io pins outside of the die by the specified units. |
|
Decimal |
0 |
Extends the horizontal io pins outside of the die by the specified units. |
|
Decimal |
2 |
A multiplier for vertical pin thickness. Base thickness is the pins layer min width. |
|
Decimal |
2 |
A multiplier for horizontal pin thickness. Base thickness is the pins layer min width. |
|
Optional |
- |
The length of the pins with a north or south orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
Optional |
- |
The length of the pins with an east or west orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
Fabric Macro Full Flow¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
True |
Enables the OpenROAD.TapEndcapInsertion step. |
|
bool |
True |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. |
|
bool |
False |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
True |
Enables clock tree synthesis using the OpenROAD.CTS step. |
|
bool |
True |
Enables resizer timing optimizations after clock tree synthesis using the OpenROAD.ResizerTimingPostCTS step. |
|
bool |
False |
Enables resizer timing optimizations after global routing using the OpenROAD.ResizerTimingPostGRT step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
False |
Enables the Odb.HeuristicDiodeInsertion step. |
|
bool |
True |
Enables the OpenROAD.RepairAntennas step. |
|
bool |
True |
Enables the OpenROAD.DetailedRouting step. |
|
bool |
True |
Enables the OpenROAD.FillInsertion step. |
|
bool |
True |
Enables multi-corner static timing analysis using the OpenROAD.STAPostPNR step. |
|
bool |
True |
Enables parasitics extraction using the OpenROAD.RCX step. |
|
bool |
True |
Enables generation of an IR Drop report using the OpenROAD.IRDropReport step. |
|
bool |
True |
Enables the Netgen.LVS step. |
|
bool |
True |
Enables the Magic.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the KLayout.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the Magic.WriteLEF step. |
|
bool |
True |
Enables running the KLayout.XOR step on the two GDSII files generated by Magic and Klayout. Stream-outs for both KLayout and Magic should have already run, and the PDK must support both signoff tools. |
|
bool |
True |
Enables the Magic.DRC step. |
|
bool |
True |
Enables the KLayout.DRC step. |
|
bool |
False |
Enables the Yosys.EQY step. Not valid for VHDLClassic. |
|
bool |
True |
Enables the Verilator.Lint step and associated checker steps. Not valid for VHDLClassic. |
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
Optional |
- |
Flip these sites vertically. Useful in niche alignment scenarios where single-height cells have ground at the south side and double-height cells have power at the south side, causing a short. In that situation, flipping the sites for single-height cells resolves the issue. |
|
Path |
- |
A path to the a classic OpenROAD |
|
Literal |
relative |
Sizing mode for floorplanning |
|
Decimal |
1 |
The coreâs aspect ratio (height / width). |
|
Decimal |
50 |
The core utilization percentage. |
|
Optional |
- |
Obstructions applied at floorplanning stage. Placement sites are never generated at these locations, which guarantees that it will remain empty throughout the entire flow. |
|
Optional |
- |
Soft placement blockages applied at the floorplanning stage. Areas that are soft-blocked will not be used by the initial placer, however, later phases such as buffer insertion or clock tree synthesis are still allowed to place cells in this area. |
|
Optional |
- |
Specifies a core area (i.e. die area minus margins) to be used in floorplanning. It must be paired with |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the bottom boundary. If |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the top boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the left boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the right boundary. If |
|
Optional |
- |
Explicitly specify sites other than |
|
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. |
|
str |
- |
The ground pin for the cells. |
|
Dict |
- |
Map of corner patterns to technology LEF files. A corner not matched here will not be supported by OpenRCX in the default flow. |
|
str |
- |
Specify the primary GDSII streamout tool for this PDK. For most open-source PDKs, that would be âmagicâ. |
|
Optional |
- |
Defines the default maximum transition value used in Synthesis and CTS. A minimum of 0.1 * CLOCK_PERIOD and this variable, if defined, is used. |
|
str |
- |
The interconnect/process/voltage/temperature corner (IPVT) to use the characterized lib files compatible with by default. |
|
List |
- |
A list of fully qualified IPVT (Interconnect, transistor Process, Voltage, and Temperature) timing corners on which to conduct multi-corner static timing analysis. |
|
str |
- |
The lowest metal layer to route on. |
|
str |
- |
The highest metal layer to route on. |
|
List |
- |
SCL-specific ground pins |
|
List |
- |
SCL-specific power pins |
|
Optional |
- |
A list of cell names or wildcards of tri-state buffers. |
|
List |
- |
A list of cell names or wildcards of fill cells to be used in fill insertion. |
|
List |
- |
A list of cell names or wildcards of decap cells to be used in fill insertion. |
|
Dict |
- |
A map from corner patterns to a list of associated liberty files. Exactly one entry must match the |
|
List |
- |
Path(s) to the cellsâ LEF file(s). |
|
List |
- |
Path(s) to the cellsâ GDSII file(s). |
|
Optional |
- |
Path(s) to cellsâ Verilog model(s) |
|
Optional |
- |
Path(s) to cellsâ black-box Verilog model(s) |
|
Optional |
- |
Path(s) to cellsâ SPICE model(s) |
|
Optional |
- |
A circuit-design language view of the standard cell library. |
|
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. |
|
int |
- |
The max load that the output ports can drive to be used as a constraint on Synthesis and CTS. |
|
Optional |
- |
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 |
|
Optional |
- |
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 |
|
Decimal |
- |
Specifies a value for the clock uncertainty/jitter for timing analysis. |
|
Decimal |
- |
Specifies a value for the clock transition/slew for timing analysis. |
|
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 |
|
Optional |
- |
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 primary placement site in placement as specified in the technology LEF files, to generate the placement grid. |
|
List |
- |
Defines a list of cells to be excluded from cell padding. |
|
Optional |
- |
Defines a diode cell used to fix antenna violations, in the format |
|
Optional |
- |
Defines the cell used for tap insertion. If not defined, steps should not attempt to insert welltap cells. |
|
Optional |
- |
Defines the so-called âend-capâ cell- class of decap cells placed at either sides of a design, if available. |
|
Path |
- |
The directory of the design. Should be set via command-line arguments or :meth: |
|
Path |
- |
The home path of all PDKs. Should be set via command-line arguments or :meth: |
|
str |
- |
The name of the top level module of the design. Must be a valid C identifier, i.e., matches the regular expression |
|
str |
sky130A |
Specifies the process design kit (PDK). Must be a valid C identifier, i.e., matches the regular expression |
|
Decimal |
10.0 |
The clock period for the design. |
|
Union |
- |
The name(s) of the designâs clock port(s). |
|
Union |
- |
The name of the net input to root clock buffer. If unset, it is presumed to be equal to CLOCK_PORT. |
|
Optional |
- |
Specifies the power nets/pins to be used when creating the power grid for the design. |
|
Optional |
- |
Specifies the ground nets/pins to be used when creating the power grid for the design. |
|
Optional |
- |
Specific die area to be used in floorplanning. Specified as a 4-corner rectangle âx0 y0 x1 y1â. |
|
Optional |
- |
Wildcards matching additional cells to exclude from both synthesis and PnR. |
|
Optional |
- |
A dictionary of Macro definition objects. See |
|
Optional |
- |
Specifies miscellaneous LEF files to be loaded indiscriminately whenever LEFs are loaded. |
|
Optional |
- |
Specifies miscellaneous Verilog models to be loaded indiscriminately during synthesis. |
|
Optional |
- |
Specifies miscellaneous SPICE models to be loaded indiscriminately whenever SPICE models are loaded. |
|
Optional |
- |
Specifies miscellaneous CDL netlists to be loaded indiscriminately whenever CDL netlists are loaded. |
|
Optional |
- |
Specifies LIB files of pre-hardened macros used in the current design, used during timing analyses (and during parasitics-based STA as a fallback). These are loaded indiscriminately for all timing corners. |
|
Optional |
- |
Specifies GDS files of pre-hardened macros used in the current design, used during tape-out. |
|
Path |
|
A fallback SDC file for when a step-specific SDC file is not defined. |
|
Optional |
- |
Path(s) to IO pad GDS file(s). |
|
Optional |
- |
Path(s) to IO pad LEF file(s). |
|
Optional |
- |
Path(s) to IO padsâ Verilog model(s) |
|
Optional |
- |
Path(s) to IO padsâ SPICE model(s) |
|
Optional |
- |
A circuit-design language view of the io pad library. |
|
Optional |
- |
A map from corner patterns to a list of associated liberty files. Exactly one entry must match the |
|
Optional |
- |
The pad corner cell. |
|
Optional |
- |
A list of pad filler cells. |
|
Optional |
- |
Name of the pad site. |
|
Optional |
- |
Name of the corner site. |
|
Optional |
- |
A dict of fake pad sites and their width and height tuple. Use this if the LEF does not include the site definitions for the IO pads. |
|
Optional |
- |
Name of the bondpad cell, if empty, bondpads wonât be placed. |
|
Optional |
- |
Width of the bondpad. |
|
Optional |
- |
Height of the bondpad. |
|
Optional |
- |
A dict of pad master names or regular expressions to their bondpad (offset_x, offset_y) tuple. |
|
Optional |
- |
Place I/O terminals for these master/pin combinations. |
|
Optional |
0 |
Distance from the padring to the die boundary. Used to account for the sealring when placing the pads. |
|
Optional |
- |
Tile optimization information dictionary or path to JSON file |
|
Fabric |
- |
Fabric configuration object |
|
Path |
- |
Path to the FABulous project directory |
|
float |
1e-06 |
Function tolerance for NLP optimizer - stops when objective change is below this value |
Generate PDN¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
bool |
False |
Enables |
|
bool |
False |
Enables adding a core ring around the design. More details on the control variables in the PDK config documentation. |
|
bool |
True |
Enables the creation of rails in the power grid. |
|
Decimal |
10 |
Sets the horizontal halo around the macros during power grid insertion. |
|
Decimal |
10 |
Sets the vertical halo around the macros during power grid insertion. |
|
bool |
True |
Controls the layers used in the power grid. If set to false, only the lower layer will be used, which is useful when hardening a macro for integrating into a larger top-level design. |
|
Decimal |
- |
The offset for the power distribution network rails for first metal layer. |
|
Decimal |
- |
The strap width for the vertical layer in generated power distribution networks. |
|
Decimal |
- |
The strap width for the horizontal layer in generated power distribution networks. |
|
Decimal |
- |
Intra-spacing (within a set) of vertical straps in generated power distribution networks. |
|
Decimal |
- |
Intra-spacing (within a set) of horizontal straps in generated power distribution networks. |
|
Decimal |
- |
Inter-distance (between sets) of vertical power straps in generated power distribution networks. |
|
Decimal |
- |
Inter-distance (between sets) of horizontal power straps in generated power distribution networks. |
|
Decimal |
- |
Initial offset for sets of vertical power straps. |
|
Decimal |
- |
Initial offset for sets of horizontal power straps. |
|
Decimal |
- |
The width for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The width for the horizontal layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The spacing for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The spacing for the horizontal layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The offset for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The offset for the horizontal layer in the core ring of generated power distribution networks. |
|
bool |
False |
If specified, the core side of the pad pins will be connected to the ring. |
|
bool |
True |
If specified, the ring shapes are allowed to be outside the die boundary. |
|
str |
- |
Defines the metal layer used for PDN rails. |
|
Decimal |
- |
Defines the width of PDN rails on the |
|
str |
- |
Defines the horizontal PDN layer. |
|
str |
- |
Defines the vertical PDN layer. |
|
Optional |
- |
Defines the horizontal PDN layer for the core ring. Falls back to |
|
Optional |
- |
Defines the vertical PDN layer for the core ring. Falls back to |
|
Literal |
core_ring |
Defines how far the stripes and rings extend. |
|
bool |
True |
If specified, the power straps will be promoted to block pins. |
|
Optional |
|
A custom PDN configuration file. If not provided, the default PDN config will be used. This default config is a custom config that differ from the librelane default. |
Global Tile Size Optimization¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Optional |
- |
Tile optimization information dictionary or path to JSON file |
|
Fabric |
- |
Fabric configuration object |
|
Path |
- |
Path to the FABulous project directory |
|
float |
1e-06 |
Function tolerance for NLP optimizer - stops when objective change is below this value |
PDN¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
False |
Enables |
|
bool |
False |
Enables adding a core ring around the design. More details on the control variables in the PDK config documentation. |
|
bool |
True |
Enables the creation of rails in the power grid. |
|
Decimal |
10 |
Sets the horizontal halo around the macros during power grid insertion. |
|
Decimal |
10 |
Sets the vertical halo around the macros during power grid insertion. |
|
bool |
True |
Controls the layers used in the power grid. If set to false, only the lower layer will be used, which is useful when hardening a macro for integrating into a larger top-level design. |
|
Decimal |
- |
The offset for the power distribution network rails for first metal layer. |
|
Decimal |
- |
The strap width for the vertical layer in generated power distribution networks. |
|
Decimal |
- |
The strap width for the horizontal layer in generated power distribution networks. |
|
Decimal |
- |
Intra-spacing (within a set) of vertical straps in generated power distribution networks. |
|
Decimal |
- |
Intra-spacing (within a set) of horizontal straps in generated power distribution networks. |
|
Decimal |
- |
Inter-distance (between sets) of vertical power straps in generated power distribution networks. |
|
Decimal |
- |
Inter-distance (between sets) of horizontal power straps in generated power distribution networks. |
|
Decimal |
- |
Initial offset for sets of vertical power straps. |
|
Decimal |
- |
Initial offset for sets of horizontal power straps. |
|
Decimal |
- |
The width for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The width for the horizontal layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The spacing for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The spacing for the horizontal layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The offset for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The offset for the horizontal layer in the core ring of generated power distribution networks. |
|
bool |
False |
If specified, the core side of the pad pins will be connected to the ring. |
|
bool |
True |
If specified, the ring shapes are allowed to be outside the die boundary. |
|
str |
- |
Defines the metal layer used for PDN rails. |
|
Decimal |
- |
Defines the width of PDN rails on the |
|
str |
- |
Defines the horizontal PDN layer. |
|
str |
- |
Defines the vertical PDN layer. |
|
Optional |
- |
Defines the horizontal PDN layer for the core ring. Falls back to |
|
Optional |
- |
Defines the vertical PDN layer for the core ring. Falls back to |
|
Literal |
core_ring |
Defines how far the stripes and rings extend. |
|
bool |
True |
If specified, the power straps will be promoted to block pins. |
|
Path |
- |
The directory of the design. Should be set via command-line arguments or :meth: |
|
Path |
- |
The home path of all PDKs. Should be set via command-line arguments or :meth: |
|
str |
- |
The name of the top level module of the design. Must be a valid C identifier, i.e., matches the regular expression |
|
str |
sky130A |
Specifies the process design kit (PDK). Must be a valid C identifier, i.e., matches the regular expression |
|
Decimal |
10.0 |
The clock period for the design. |
|
Union |
- |
The name(s) of the designâs clock port(s). |
|
Union |
- |
The name of the net input to root clock buffer. If unset, it is presumed to be equal to CLOCK_PORT. |
|
Optional |
- |
Specifies the power nets/pins to be used when creating the power grid for the design. |
|
Optional |
- |
Specifies the ground nets/pins to be used when creating the power grid for the design. |
|
Optional |
- |
Specific die area to be used in floorplanning. Specified as a 4-corner rectangle âx0 y0 x1 y1â. |
|
Optional |
- |
Wildcards matching additional cells to exclude from both synthesis and PnR. |
|
Optional |
- |
A dictionary of Macro definition objects. See |
|
Optional |
- |
Specifies miscellaneous LEF files to be loaded indiscriminately whenever LEFs are loaded. |
|
Optional |
- |
Specifies miscellaneous Verilog models to be loaded indiscriminately during synthesis. |
|
Optional |
- |
Specifies miscellaneous SPICE models to be loaded indiscriminately whenever SPICE models are loaded. |
|
Optional |
- |
Specifies miscellaneous CDL netlists to be loaded indiscriminately whenever CDL netlists are loaded. |
|
Optional |
- |
Specifies LIB files of pre-hardened macros used in the current design, used during timing analyses (and during parasitics-based STA as a fallback). These are loaded indiscriminately for all timing corners. |
|
Optional |
- |
Specifies GDS files of pre-hardened macros used in the current design, used during tape-out. |
|
Path |
|
A fallback SDC file for when a step-specific SDC file is not defined. |
|
str |
- |
The power pin for the cells. |
|
str |
- |
The ground pin for the cells. |
Round Die Area¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
Optional |
- |
Flip these sites vertically. Useful in niche alignment scenarios where single-height cells have ground at the south side and double-height cells have power at the south side, causing a short. In that situation, flipping the sites for single-height cells resolves the issue. |
|
Path |
- |
A path to the a classic OpenROAD |
|
Literal |
relative |
Sizing mode for floorplanning |
|
Decimal |
1 |
The coreâs aspect ratio (height / width). |
|
Decimal |
50 |
The core utilization percentage. |
|
Optional |
- |
Obstructions applied at floorplanning stage. Placement sites are never generated at these locations, which guarantees that it will remain empty throughout the entire flow. |
|
Optional |
- |
Soft placement blockages applied at the floorplanning stage. Areas that are soft-blocked will not be used by the initial placer, however, later phases such as buffer insertion or clock tree synthesis are still allowed to place cells in this area. |
|
Optional |
- |
Specifies a core area (i.e. die area minus margins) to be used in floorplanning. It must be paired with |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the bottom boundary. If |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the top boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the left boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the right boundary. If |
|
Optional |
- |
Explicitly specify sites other than |
Tile¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
True |
Enables the OpenROAD.TapEndcapInsertion step. |
|
bool |
True |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. |
|
bool |
False |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
True |
Enables clock tree synthesis using the OpenROAD.CTS step. |
|
bool |
True |
Enables resizer timing optimizations after clock tree synthesis using the OpenROAD.ResizerTimingPostCTS step. |
|
bool |
False |
Enables resizer timing optimizations after global routing using the OpenROAD.ResizerTimingPostGRT step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
False |
Enables the Odb.HeuristicDiodeInsertion step. |
|
bool |
True |
Enables the OpenROAD.RepairAntennas step. |
|
bool |
True |
Enables the OpenROAD.DetailedRouting step. |
|
bool |
True |
Enables the OpenROAD.FillInsertion step. |
|
bool |
True |
Enables multi-corner static timing analysis using the OpenROAD.STAPostPNR step. |
|
bool |
True |
Enables parasitics extraction using the OpenROAD.RCX step. |
|
bool |
True |
Enables generation of an IR Drop report using the OpenROAD.IRDropReport step. |
|
bool |
True |
Enables the Netgen.LVS step. |
|
bool |
True |
Enables the Magic.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the KLayout.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the Magic.WriteLEF step. |
|
bool |
True |
Enables running the KLayout.XOR step on the two GDSII files generated by Magic and Klayout. Stream-outs for both KLayout and Magic should have already run, and the PDK must support both signoff tools. |
|
bool |
True |
Enables the Magic.DRC step. |
|
bool |
True |
Enables the KLayout.DRC step. |
|
bool |
False |
Enables the Yosys.EQY step. Not valid for VHDLClassic. |
|
bool |
True |
Enables the Verilator.Lint step and associated checker steps. Not valid for VHDLClassic. |
|
bool |
False |
When is true will ignore the provided die area and use the default one instead. |
|
list |
- |
Path to the tile directory containing the tile CSV ( |
|
Optional |
- |
The side of the macro at which the external pins are placed. The pin-ordering YAML is generated from the tileâs position in the parent fabric when available, so this value is a fallback for standalone plugin tile runs. |
|
bool |
None |
False |
Tile IO Placement¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
str |
- |
The metal layer on which to place horizontally-aligned (long side parallel with the horizon) pins alongside the east and west edges of the die. |
|
str |
- |
The metal layer on which to place vertically-aligned (long side perpendicular to the horizon) pins alongside the north and south edges of the die. |
|
Decimal |
0 |
Extends the vertical io pins outside of the die by the specified units. |
|
Decimal |
0 |
Extends the horizontal io pins outside of the die by the specified units. |
|
Decimal |
2 |
A multiplier for vertical pin thickness. Base thickness is the pins layer min width. |
|
Decimal |
2 |
A multiplier for horizontal pin thickness. Base thickness is the pins layer min width. |
|
Optional |
- |
The length of the pins with a north or south orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
Optional |
- |
The length of the pins with an east or west orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
Optional |
- |
Path to a custom pin configuration file. |
|
Literal |
unmatched_design |
Controls whether to emit an error in: no situation, when pins exist in the design that do not exist in the config file, when pins exist in the config file that do not exist in the design, and both respectively. |
Tile Optimisation¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
Optional |
- |
A list of fully-qualified IPVT corners to use during PnR. If unspecified, the value for |
|
bool |
False |
If set to true, set_rc commands are echoed. Quite noisy, but may be useful for debugging. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance and capacitance values for metal layers. For each IPVT corner, a mapping for each metal layer is provided. Each mapping describes custom resistance and capacitance values. Usage of wildcards for specifying IPVT corners is allowed. Units are resistance and capacitance per unit length as defined in the first lib file. |
|
Optional |
- |
Used during PNR steps, Specific custom resistance values for via layers. For each IPVT corner, a mapping for each via layer is provided. Each mapping describes custom resistance values. Usage of wildcards for specifying IPVT corners is allowed. Via resistance is per cut/via with units asdefined in the first lib file. |
|
Optional |
- |
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. |
|
Optional |
- |
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. |
|
bool |
True |
Enables the connection of macros to the top level power grid. |
|
Optional |
- |
Specifies explicit power connections of internal macros to the top level power grid, in the format: regex matching macro instance names, power domain vdd and ground net names, and macro vdd and ground pin names |
|
bool |
True |
Enables the creation of global connections in PDN generation. |
|
Optional |
- |
Specifies the SDC file used during all implementation (PnR) steps |
|
Optional |
- |
Experimental: specifies a additional configuration .tcl file to be called during (PnR) steps. |
|
bool |
False |
Cull duplicate IPVT corners during PNR, i.e. corners that share the same set of lib files and values for LAYERS_RC and VIAS_R as another corner are not considered outside of STA. |
|
Optional |
- |
Flip these sites vertically. Useful in niche alignment scenarios where single-height cells have ground at the south side and double-height cells have power at the south side, causing a short. In that situation, flipping the sites for single-height cells resolves the issue. |
|
Path |
- |
A path to the a classic OpenROAD |
|
Literal |
relative |
Sizing mode for floorplanning |
|
Decimal |
1 |
The coreâs aspect ratio (height / width). |
|
Decimal |
50 |
The core utilization percentage. |
|
Optional |
- |
Obstructions applied at floorplanning stage. Placement sites are never generated at these locations, which guarantees that it will remain empty throughout the entire flow. |
|
Optional |
- |
Soft placement blockages applied at the floorplanning stage. Areas that are soft-blocked will not be used by the initial placer, however, later phases such as buffer insertion or clock tree synthesis are still allowed to place cells in this area. |
|
Optional |
- |
Specifies a core area (i.e. die area minus margins) to be used in floorplanning. It must be paired with |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the bottom boundary. If |
|
Decimal |
4 |
The core margin, in multiples of site heights, from the top boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the left boundary. If |
|
Decimal |
12 |
The core margin, in multiples of site widths, from the right boundary. If |
|
Optional |
- |
Explicitly specify sites other than |
|
Optional |
- |
Path to an optional override for instance placement instead of the |
|
Decimal |
10 |
Specify the horizontal halo size around macros. |
|
Decimal |
10 |
Specify the vertical halo size around macros. |
|
Optional |
- |
If specified, all rows smaller in width than this value will be removed. This helps avoid âisletsâ of cells that are hard to route and connect to PDNs. |
|
Optional |
- |
The distance between tap cell columns. Must be specified if WELLTAP_CELL is specified. |
|
Optional |
- |
Add routing obstructions to the design before PDN stage. If set to |
|
bool |
False |
Enables |
|
bool |
False |
Enables adding a core ring around the design. More details on the control variables in the PDK config documentation. |
|
bool |
True |
Enables the creation of rails in the power grid. |
|
Decimal |
10 |
Sets the horizontal halo around the macros during power grid insertion. |
|
Decimal |
10 |
Sets the vertical halo around the macros during power grid insertion. |
|
bool |
True |
Controls the layers used in the power grid. If set to false, only the lower layer will be used, which is useful when hardening a macro for integrating into a larger top-level design. |
|
Decimal |
- |
The offset for the power distribution network rails for first metal layer. |
|
Decimal |
- |
The strap width for the vertical layer in generated power distribution networks. |
|
Decimal |
- |
The strap width for the horizontal layer in generated power distribution networks. |
|
Decimal |
- |
Intra-spacing (within a set) of vertical straps in generated power distribution networks. |
|
Decimal |
- |
Intra-spacing (within a set) of horizontal straps in generated power distribution networks. |
|
Decimal |
- |
Inter-distance (between sets) of vertical power straps in generated power distribution networks. |
|
Decimal |
- |
Inter-distance (between sets) of horizontal power straps in generated power distribution networks. |
|
Decimal |
- |
Initial offset for sets of vertical power straps. |
|
Decimal |
- |
Initial offset for sets of horizontal power straps. |
|
Decimal |
- |
The width for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The width for the horizontal layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The spacing for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The spacing for the horizontal layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The offset for the vertical layer in the core ring of generated power distribution networks. |
|
Decimal |
- |
The offset for the horizontal layer in the core ring of generated power distribution networks. |
|
bool |
False |
If specified, the core side of the pad pins will be connected to the ring. |
|
bool |
True |
If specified, the ring shapes are allowed to be outside the die boundary. |
|
str |
- |
Defines the metal layer used for PDN rails. |
|
Decimal |
- |
Defines the width of PDN rails on the |
|
str |
- |
Defines the horizontal PDN layer. |
|
str |
- |
Defines the vertical PDN layer. |
|
Optional |
- |
Defines the horizontal PDN layer for the core ring. Falls back to |
|
Optional |
- |
Defines the vertical PDN layer for the core ring. Falls back to |
|
Literal |
core_ring |
Defines how far the stripes and rings extend. |
|
bool |
True |
If specified, the power straps will be promoted to block pins. |
|
Optional |
|
A custom PDN configuration file. If not provided, the default PDN config will be used. This default config is a custom config that differ from the librelane default. |
|
Optional |
- |
Add routing obstructions to the design. If set to |
|
str |
- |
The metal layer on which to place horizontally-aligned (long side parallel with the horizon) pins alongside the east and west edges of the die. |
|
str |
- |
The metal layer on which to place vertically-aligned (long side perpendicular to the horizon) pins alongside the north and south edges of the die. |
|
Decimal |
0 |
Extends the vertical io pins outside of the die by the specified units. |
|
Decimal |
0 |
Extends the horizontal io pins outside of the die by the specified units. |
|
Decimal |
2 |
A multiplier for vertical pin thickness. Base thickness is the pins layer min width. |
|
Decimal |
2 |
A multiplier for horizontal pin thickness. Base thickness is the pins layer min width. |
|
Optional |
- |
The length of the pins with a north or south orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
Optional |
- |
The length of the pins with an east or west orientation. If unspecified by a PDK, OpenROAD will use whichever is higher of the following two values: * The pin width * The minimum value satisfying the minimum area constraint given the pin width |
|
Optional |
- |
Path to a custom pin configuration file. |
|
Literal |
unmatched_design |
Controls whether to emit an error in: no situation, when pins exist in the design that do not exist in the config file, when pins exist in the config file that do not exist in the design, and both respectively. |
|
Optional |
- |
Points to the DEF file to be used as a template. |
|
Literal |
strict |
Whether to require that the pin set of the DEF template and the design should be identical. In permissive mode, pins that are in the design and not in the template will be excluded, and vice versa. |
|
bool |
False |
Whether to always copy all power pins from the DEF template to the design. |
|
Literal |
none |
Always insert diodes on ports with the specified polarities. |
|
int |
- |
Cell padding value (in sites) for global placement. Used by this step only to emit a warning if itâs 0. |
|
Optional |
- |
The name of lowest layer to be used in routing the clock net. |
|
Optional |
- |
The name of highest layer to be used in routing the clock net. |
|
Decimal |
0.3 |
Reduction in the routing capacity of the edges between the cells in the global routing graph for all layers. Values range from 0 to 1. 1 = most reduction, 0 = least reduction. |
|
int |
0 |
Sets the number of GCells added to the blockages boundaries from macros. A GCell is typically defined in terms of Mx routing tracks. The default GCell size is 15 M3 pitches. |
|
List |
- |
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 through 1. |
|
bool |
True |
Specifies whether or not to run an optimize_mirroring pass whenever detailed placement happens. This pass will mirror the cells whenever possible to optimize the design. |
|
int |
500 |
Specifies how far an instance can be moved along the X-axis when finding a site where it can be placed during detailed placement. |
|
int |
100 |
Specifies how far an instance can be moved along the Y-axis when finding a site where it can be placed during detailed placement. |
|
int |
- |
Cell padding value (in sites) for detailed placement. The number will be integer divided by 2 and placed on both sides. Should be <= global placement. |
|
str |
$^ |
A single regular expression designating nets or instances as âdonât touchâ by design repairs or resizer optimizations. |
|
Optional |
- |
A list of nets and instances as âdonât touchâ by design repairs or resizer optimizations. |
|
Optional |
- |
Resizer step-specific override for PNR_CORNERS. |
|
Optional |
- |
The desired placement density of cells. If not specified, the value will be equal to ( |
|
bool |
False |
Specifies whether the placer should run initial placement or not. |
|
Decimal |
0.25 |
Global placement initial wirelength coefficient. Decreasing the variable will modify the initial placement of the standard cells to reduce the wirelengths |
|
Optional |
- |
Sets a lower bound on the ”_k variable in the GPL algorithm. Useful if global placement diverges. See https://openroad.readthedocs.io/en/latest/main/src/gpl/README.html |
|
Optional |
- |
Sets a upper bound on the ”_k variable in the GPL algorithm. Useful if global placement diverges.See https://openroad.readthedocs.io/en/latest/main/src/gpl/README.html |
|
Optional |
- |
Only applicable when PL_TIMING_DRIVEN is enabled. When the overflow is below the set value, timing-driven iterations will retain the resizer changes instead of reverting them. Allowed values are 0 to 1. If not set, a nonzero default value from OpenROAD will be used |
|
bool |
False |
Specifies whether the placer should use timing-driven placement. |
|
bool |
True |
Specifies whether the placer should use routability driven placement. |
|
Optional |
- |
Sets overflow threshold for routability mode. |
|
Optional |
- |
Diode cell padding; increases the width of diode cells during placement checks.. |
|
bool |
False |
Allow congestion during global routing |
|
int |
3 |
The maximum number of iterations for global antenna repairs. |
|
int |
50 |
The maximum number of iterations waiting for the overflow to reach the desired value. |
|
int |
10 |
The margin to over fix antenna violations. |
|
bool |
False |
Only use jumpers to fix antenna violations. Cannot be used in conjunction with GRT_ANTENNA_REPAIR_DIODE_ONLY. |
|
bool |
False |
Only use antenna diodes to fix antenna violations. Cannot be used in conjunction with GRT_ANTENNA_REPAIR_JUMPER_ONLY. |
|
bool |
True |
Specifies whether or not to insert buffers on input ports when design repairs are run. |
|
bool |
True |
Specifies whether or not to insert buffers on input ports when design repairs are run. |
|
bool |
False |
Invokes OpenROADâs remove_buffers command to remove buffers from synthesis, which gives OpenROAD more flexibility when buffering nets. |
|
Optional |
USE_POWER_PINS |
Specifies the name of the define used to guard power and ground connections in the output Verilog header. |
|
bool |
True |
Checks for unconnected nodes in the power grid. If any exists, an error is raised at the end of the flow. |
|
Optional |
- |
A dictionary of instances to their global (non-legalized and unfixed) placement location. |
|
Optional |
- |
Attempts to keep a similar number of levels in the clock tree across non-register cells (e.g., clock-gate or inverter). |
|
Optional |
- |
Controls automatic buffer selection. To favor strong(weak) drive strength buffers use a small(large) value.The value of 100 means no derating of max cap limit |
|
Optional |
- |
This option balances latencies between macro cells and registers by inserting delay buffersThe value of 100 means all needed delay buffers are inserted |
|
Optional |
- |
Enables obstruction-aware buffering such that clock buffers are not placed on top of blockages or hard macros. This option may reduce legalizer displacement, leading to better latency, skew or timing QoR. |
|
bool |
True |
Enables pre-clustering of sinks to create one level of sub-tree before building the H-tree. Each cluster is driven by a buffer which becomes the end point of the H-tree structure. |
|
Optional |
- |
Specifies the maximum number of sinks per cluster. |
|
Optional |
- |
Specifies the maximum diameter of the sink cluster. |
|
Optional |
- |
Specifies the maximum number of sinks per cluster for the macro tree. |
|
Optional |
- |
Specifies the maximum diameter of the sink cluster for the macro tree. |
|
Decimal |
0 |
Specifies the maximum wire length on the clock net. |
|
bool |
False |
Specifies whether or not to disable post cts processing for outlier sinks. |
|
Decimal |
0 |
Specifies the distance between buffers when creating the clock tree. |
|
Optional |
- |
Clock tree synthesis step-specific override for PNR_CORNERS. |
|
str |
- |
Defines the cell inserted at the root of the clock tree. Used in CTS. |
|
List |
- |
Defines the list of clock buffer names or buffer name wildcards to be used in CTS. |
|
Optional |
- |
Overrides the maximum capacitance CTS characterization will test. If omitted, the capacitance is extracted from the lib information of the buffers in CTS_CLK_BUFFERS. |
|
Optional |
- |
Overrides the maximum transition time CTS characterization will test. If omitted, the slew is extracted from the lib information of the buffers in CTS_CLK_BUFFERS. |
|
Literal |
half |
Applies 2X spacing non-default rule to clock nets except leaf-level nets following some strategy. There are four strategy options: ânoneâ, âroot_onlyâ, âhalfâ, âfullâ. |
|
Optional |
- |
Specifies the number of threads to be used in OpenROAD Detailed Routing. If unset, this will be equal to your machineâs thread count. |
|
int |
64 |
Specifies the maximum number of optimization iterations during Detailed Routing in TritonRoute. |
|
bool |
False |
Experimental: saves an odb snapshot of the layout each routing iteration. This increases disk usage considerably but is useful for debugging. |
|
int |
3 |
The maximum number of iterations to run antenna repair. Set to a positive integer to attempt to repair antennas and then re-run DRT as appropriate. |
|
int |
10 |
The margin to over fix antenna violations. |
|
bool |
False |
Only use jumpers to fix antenna violations. Cannot be used in conjunction with DRT_ANTENNA_REPAIR_DIODE_ONLY. |
|
bool |
False |
Only use antenna diodes to fix antenna violations. Cannot be used in conjunction with DRT_ANTENNA_REPAIR_JUMPER_ONLY. |
|
Optional |
- |
Write a DRC report every N iterations. If DRT_SAVE_SNAPSHOTS is enabled, there is an implicit default value of 1. |
|
Optional |
- |
Specify non-default rules. Can be used to change the width, spacing and vias of a net. |
|
Optional |
- |
Specify which nets should be assigned to which non-default rule. The net name is a regular expression. Use â^name$â to match an exact name. |
|
bool |
True |
Checks for DRC violations after routing and exits the flow if any was found. |
|
Optional |
- |
Modules (or cells) to ignore when checking for disconnected pins. |
|
bool |
True |
Checks for disconnected instance pins after detailed routing and quits immediately if so. |
|
bool |
True |
Checks if any wire length exceeds the threshold set in the PDK. If so, an error is raised at the end of the flow. |
|
Optional |
- |
A value above which wire lengths generate warnings. |
|
int |
4 |
The number of placement sites by which the tile size reduces in each iteration. The actual reduction in DBU is this count multiplied by the PDK site dimensions. |
|
int |
1 |
The number of placement sites by which the tile size reduces in each iteration. The actual reduction in DBU is this count multiplied by the PDK site dimensions. |
|
OptMode |
balance |
Optimisation mode to use. Options are: - âfind_min_widthâ: default, finds minimal width by increasing from initial guess. - âfind_min_heightâ: finds minimal height by increasing from initial guess. - âbalanceâ: finds minimal area by starting from square bounding box and increasing alternatingly. - âno-optâ: Disable optimisation. |
|
bool |
False |
If True, antenna violations are ignored during tile optimisation. Default is False. |
Tile VHDLMacro Flow Classic¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
True |
Enables the OpenROAD.TapEndcapInsertion step. |
|
bool |
True |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. |
|
bool |
False |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
True |
Enables clock tree synthesis using the OpenROAD.CTS step. |
|
bool |
True |
Enables resizer timing optimizations after clock tree synthesis using the OpenROAD.ResizerTimingPostCTS step. |
|
bool |
False |
Enables resizer timing optimizations after global routing using the OpenROAD.ResizerTimingPostGRT step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
False |
Enables the Odb.HeuristicDiodeInsertion step. |
|
bool |
True |
Enables the OpenROAD.RepairAntennas step. |
|
bool |
True |
Enables the OpenROAD.DetailedRouting step. |
|
bool |
True |
Enables the OpenROAD.FillInsertion step. |
|
bool |
True |
Enables multi-corner static timing analysis using the OpenROAD.STAPostPNR step. |
|
bool |
True |
Enables parasitics extraction using the OpenROAD.RCX step. |
|
bool |
True |
Enables generation of an IR Drop report using the OpenROAD.IRDropReport step. |
|
bool |
True |
Enables the Netgen.LVS step. |
|
bool |
True |
Enables the Magic.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the KLayout.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the Magic.WriteLEF step. |
|
bool |
True |
Enables running the KLayout.XOR step on the two GDSII files generated by Magic and Klayout. Stream-outs for both KLayout and Magic should have already run, and the PDK must support both signoff tools. |
|
bool |
True |
Enables the Magic.DRC step. |
|
bool |
True |
Enables the KLayout.DRC step. |
|
bool |
False |
Enables the Yosys.EQY step. Not valid for VHDLClassic. |
|
bool |
True |
Enables the Verilator.Lint step and associated checker steps. Not valid for VHDLClassic. |
|
bool |
False |
When is true will ignore the provided die area and use the default one instead. |
Tile Verilog Macro Flow¶
Variable |
Type |
Default |
Description |
|---|---|---|---|
|
bool |
True |
Enables the OpenROAD.TapEndcapInsertion step. |
|
bool |
True |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. |
|
bool |
False |
Enables resizer design repair after global placement using the OpenROAD.RepairDesignPostGPL step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
True |
Enables clock tree synthesis using the OpenROAD.CTS step. |
|
bool |
True |
Enables resizer timing optimizations after clock tree synthesis using the OpenROAD.ResizerTimingPostCTS step. |
|
bool |
False |
Enables resizer timing optimizations after global routing using the OpenROAD.ResizerTimingPostGRT step. This is experimental and may result in hangs and/or extended run times. |
|
bool |
False |
Enables the Odb.HeuristicDiodeInsertion step. |
|
bool |
True |
Enables the OpenROAD.RepairAntennas step. |
|
bool |
True |
Enables the OpenROAD.DetailedRouting step. |
|
bool |
True |
Enables the OpenROAD.FillInsertion step. |
|
bool |
True |
Enables multi-corner static timing analysis using the OpenROAD.STAPostPNR step. |
|
bool |
True |
Enables parasitics extraction using the OpenROAD.RCX step. |
|
bool |
True |
Enables generation of an IR Drop report using the OpenROAD.IRDropReport step. |
|
bool |
True |
Enables the Netgen.LVS step. |
|
bool |
True |
Enables the Magic.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the KLayout.StreamOut step to generate GDSII. |
|
bool |
True |
Enables the Magic.WriteLEF step. |
|
bool |
True |
Enables running the KLayout.XOR step on the two GDSII files generated by Magic and Klayout. Stream-outs for both KLayout and Magic should have already run, and the PDK must support both signoff tools. |
|
bool |
True |
Enables the Magic.DRC step. |
|
bool |
True |
Enables the KLayout.DRC step. |
|
bool |
False |
Enables the Yosys.EQY step. Not valid for VHDLClassic. |
|
bool |
True |
Enables the Verilator.Lint step and associated checker steps. Not valid for VHDLClassic. |
|
bool |
False |
When is true will ignore the provided die area and use the default one instead. |