3. Pre-Defined Tools#

The following are examples of pre-built tool drivers that come with SiliconCompiler which you can use for your own builds.

See the pre-built targets for examples on how these are used in conjunction with pdks, flows and libraries.

3.1. bambu#

The primary objective of the PandA project is to develop a usable framework that will enable the research of new ideas in the HW-SW Co-Design field.

The PandA framework includes methodologies supporting the research on high-level synthesis of hardware accelerators, on parallelism extraction for embedded systems, on hardware/software partitioning and mapping, on metrics for performance estimation of embedded software applications and on dynamic reconfigurable devices.

Documentation: ferrandi/PandA-bambu

Sources: ferrandi/PandA-bambu

Installation: https://panda.dei.polimi.it/?page_id=88

Setup file: bambu.py

3.1.1. convert#

Performs high level synthesis to generate a verilog output

Setup file: convert.py

3.2. bluespec#

Bluespec is a high-level hardware description language. It has a variety of advanced features including a powerful type system that can prevent errors prior to synthesis time, and its most distinguishing feature, Guarded Atomic Actions, allow you to define hardware components in a modular manner based on their invariants, and let the compiler pick a scheduler.

Documentation: B-Lang-org/bsc

Sources: B-Lang-org/bsc

Installation: B-Lang-org/bsc

Setup file: bluespec.py

3.2.1. convert#

Performs high level synthesis to generate a verilog output

Setup file: convert.py

3.3. builtin#

Builtin tools for SiliconCompiler

Setup file: builtin.py

3.3.1. concatenate#

A file concatenation pass that merges input files into a single set of outputs.

Setup file: concatenate.py

3.3.1.1. Configuration#

Keypath

Value

['tool', 'builtin', 'task', 'concatenate', 'input']

  • <design>.import_chisel0.v

  • <design>.import_c0.v

  • <design>.import_bluespec0.v

  • <design>.import_vhdl0.v

['tool', 'builtin', 'task', 'concatenate', 'output']

<design>.v

3.3.2. join#

Merges outputs from a list of input tasks.

Setup file: join.py

3.3.3. maximum#

Selects the task with the maximum metric score from a list of inputs.

Sequence of operation:

  1. Check list of input tasks to see if all metrics meets goals

  2. Check list of input tasks to find global min/max for each metric

  3. Select MAX value if all metrics are met.

  4. Normalize the min value as sel = (val - MIN) / (MAX - MIN)

  5. Return normalized value and task name

Meeting metric goals takes precedence over compute metric scores. Only goals with values set and metrics with weights set are considered in the calculation.

Setup file: maximum.py

3.3.4. minimum#

Selects the task with the minimum metric score from a list of inputs.

Sequence of operation:

  1. Check list of input tasks to see if all metrics meets goals

  2. Check list of input tasks to find global min/max for each metric

  3. Select MIN value if all metrics are met.

  4. Normalize the min value as sel = (val - MIN) / (MAX - MIN)

  5. Return normalized value and task name

Meeting metric goals takes precedence over compute metric scores. Only goals with values set and metrics with weights set are considered in the calculation.

Setup file: minimum.py

3.3.5. mux#

Selects a task from a list of inputs.

The selector criteria provided is used to create a custom function for selecting the best step/index pair from the inputs. Metrics and weights are passed in and used to select the step/index based on the minimum or maximum score depending on the ‘op’ argument from [‘flowgraph’, flow, step, index, ‘args’] in the form ‘minimum(metric)’ or ‘maximum(metric)’.

The function can be used to bypass the flows weight functions for the purpose of conditional flow execution and verification.

Setup file: mux.py

3.3.6. nop#

A no-operation that passes inputs to outputs.

Setup file: nop.py

3.3.7. verify#

Tests an assertion on an input task.

The input to this task is verified to ensure that all assertions are True. If any of the assertions fail, False is returned. Assertions are passed in using [‘flowgraph’, flow, step, index, ‘args’] in the form ‘metric==0.0’. The allowed conditional operators are: >, <, >=, <=, ==

Setup file: verify.py

3.4. chisel#

Chisel is a hardware design language that facilitates advanced circuit generation and design reuse for both ASIC and FPGA digital logic designs. Chisel adds hardware construction primitives to the Scala programming language, providing designers with the power of a modern programming language to write complex, parameterizable circuit generators that produce synthesizable Verilog.

Documentation: https://www.chisel-lang.org/docs

Sources: chipsalliance/chisel

Installation: The Chisel plugin relies on having the Scala Build Tool (sbt) installed. Instructions: https://www.scala-sbt.org/download.html.

Setup file: chisel.py

3.4.1. convert#

Performs high level synthesis to generate a verilog output

Setup file: convert.py

3.5. execute#

This tool is used to execute the output of a previous step. For example, if the flow contains a compile step which generates the next executable needed in the flow.

Setup file: execute.py

Keypath

Value

['tool', 'execute', 'exe']

:exe:

3.5.1. exec_input#

Execute the output of the previous step directly. This only works if the task receives a single file.

Setup file: exec_input.py

3.5.1.1. Configuration#

3.6. genfasm#

3.6.1. bitstream#

Generates a bitstream

Setup file: bitstream.py

3.7. ghdl#

GHDL is an open-source analyzer, compiler, simulator and (experimental) synthesizer for VHDL. It allows you to analyse and elaborate sources for generating machine code from your design. Native program execution is the only way for high speed simulation.

Documentation: https://ghdl.readthedocs.io/en/latest

Sources: ghdl/ghdl

Installation: ghdl/ghdl

Setup file: ghdl.py

3.7.1. convert#

Imports VHDL and converts it to verilog

Setup file: convert.py

3.8. icarus#

Icarus is a verilog simulator with full support for Verilog IEEE-1364. Icarus can simulate synthesizable as well as behavioral Verilog.

Documentation: https://steveicarus.github.io/iverilog/

Sources: steveicarus/iverilog

Installation: steveicarus/iverilog

Setup file: icarus.py

3.8.1. compile#

Compile the input verilog into a vvp file that can be simulated.

Setup file: compile.py

3.9. icepack#

Icepack converts an ASCII bitstream file to a .bin file for the ICE40 FPGA.

Documentation: https://clifford.at/icestorm

Sources: YosysHQ/icestorm

Installation: YosysHQ/icestorm

Setup file: icepack.py

Keypath

Value

['tool', 'icepack', 'exe']

icepack

3.9.1. bitstream#

Generate a bitstream for the ICE40 FPGA

Setup file: bitstream.py

3.10. klayout#

Klayout is a production grade viewer and editor of GDSII and Oasis data with customizable Python and Ruby interfaces.

Documentation: https://www.klayout.de

Sources: KLayout/klayout

Installation: https://www.klayout.de/build.html

Setup file: klayout.py

3.10.1. Data sources#

Package

Specifications

lambdapdk

  • Path: https://github.com/siliconcompiler/lambdapdk/archive/refs/tags/

  • Reference: v0.1.35

siliconcompiler

  • Path: python://siliconcompiler

3.10.2. export#

Generate a GDSII file from an input DEF file

Setup file: export.py

3.10.2.1. Configuration#

3.10.2.2. Variables#

Parameters

Help

[..., 'var', 'stream']

Extension to use for stream generation ((‘gds’, ‘oas’))

[..., 'var', 'timestamps']

Export GDSII with timestamps

[..., 'var', 'screenshot']

true/false: true will cause KLayout to generate a screenshot of the layout

[..., 'var', 'show_exit']

true/false: true will cause kLayout to exit when complete

[..., 'var', 'hide_layers']

List of layers to hide

[..., 'var', 'show_filepath']

File to open

[..., 'var', 'show_filetype']

File type to look for in the inputs

[..., 'var', 'show_horizontal_resolution']

Horizontal resolution in pixels

[..., 'var', 'show_vertical_resolution']

Vertical resolution in pixels

[..., 'var', 'xbins']

If greater than 1, splits the image into multiple segments along x-axis

[..., 'var', 'ybins']

If greater than 1, splits the image into multiple segments along y-axis

[..., 'var', 'margin']

Margin around design in microns

[..., 'var', 'linewidth']

Width of lines in detailed screenshots

[..., 'var', 'oversampling']

Image oversampling used in detailed screenshots

3.10.3. operations#

Perform unit operations on stream files. Currently supports:

  • rotating (rotate)

  • renaming (rename)

  • merging streams (merge)

  • adding streams together (add)

  • adding outline to top (outline)

  • swapping cells (swap)

  • adding new top cell (add_top)

  • renaming cells (rename_cell)

  • flatten

  • deleting layers

  • merging shapes

  • writing (write)

  • converting properties into text labels on design (convert_property)

To rotate:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', 'rotate')

To rename:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'rename:tool,klayout,task,operations,var,new_name')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'var', 'new_name', \
    'chip_top')

To merge streams:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'merge:tool,klayout,task,operations,file,fill_stream')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'file', 'fill_stream', \
    './fill.gds')

or to get it from the inputs to this task:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'merge:fill.gds')

To add streams:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'add:tool,klayout,task,operations,file,fill_stream')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'file', 'fill_stream', \
    './fill.gds')

or to get it from the inputs to this task:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'add:fill.gds')

To add outline:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'outline:tool,klayout,task,operations,var,outline')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'var', 'outline', \
    ['10', '1'])  # layer / purpose pair

To swap layout cells:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'swap:tool,klayout,task,operations,var,cell_swap')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'var', 'cell_swap', \
    ['dummy_ANDX2=ANDX2', 'dummy_NANDX2=NANDX2'])

To rename cells:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'rename_cell:tool,klayout,task,operations,var,rename_cell')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'var', 'rename_cell', \
    ['dummy_ANDX2=ANDX2', 'dummy_NANDX2=NANDX2'])

To add new top cell:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'add_top:tool,klayout,task,operations,var,new_name')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'var', 'new_name', \
    'chip_top')

To write out a new file:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'write:combined.gds')

To convert stream properties to text labels:

>>> chip.add('tool', 'klayout, 'task', 'operations', 'var', 'operations', \
    'convert_property:tool,klayout,task,operations,var,convert_c4_bumps')
>>> chip.set('tool', 'klayout, 'task', 'operations', 'var', 'convert_c4_bumps', \
    ['10', '2', \  # layer / purpose pair for the source of the labels
     '3' \  # stream property number
     '85', '5'])  #  (optional) destination layer / purpose pair, if not provided
                  # the source pair will be used instead.

Setup file: operations.py

3.10.3.1. Configuration#

3.10.3.2. Variables#

Parameters

Help

[..., 'var', 'stream']

Extension to use for stream generation ((‘gds’, ‘oas’))

[..., 'var', 'timestamps']

Export GDSII with timestamps

3.10.4. screenshot#

Generate a PNG file from a layout file

Setup file: screenshot.py

3.10.4.1. Configuration#

3.10.4.2. Variables#

Parameters

Help

[..., 'var', 'show_filepath']

File to open

[..., 'var', 'show_exit']

true/false: true will cause kLayout to exit when complete

[..., 'var', 'hide_layers']

List of layers to hide

[..., 'var', 'show_filetype']

File type to look for in the inputs

[..., 'var', 'show_horizontal_resolution']

Horizontal resolution in pixels

[..., 'var', 'show_vertical_resolution']

Vertical resolution in pixels

[..., 'var', 'xbins']

If greater than 1, splits the image into multiple segments along x-axis

[..., 'var', 'ybins']

If greater than 1, splits the image into multiple segments along y-axis

[..., 'var', 'margin']

Margin around design in microns

[..., 'var', 'linewidth']

Width of lines in detailed screenshots

[..., 'var', 'oversampling']

Image oversampling used in detailed screenshots

3.10.5. show#

Show a layout in kLayout

Setup file: show.py

3.10.5.1. Configuration#

3.10.5.2. Variables#

Parameters

Help

[..., 'var', 'show_filepath']

File to open

[..., 'var', 'show_exit']

true/false: true will cause kLayout to exit when complete

[..., 'var', 'hide_layers']

List of layers to hide

[..., 'var', 'show_filetype']

File type to look for in the inputs

3.11. magic#

Magic is a chip layout viewer, editor, and circuit verifier with built in DRC and LVS engines.

Documentation: http://opencircuitdesign.com/magic/userguide.html

Installation: RTimothyEdwards/magic

Sources: RTimothyEdwards/magic

Setup file: magic.py

3.11.1. Data sources#

Package

Specifications

lambdapdk

  • Path: https://github.com/siliconcompiler/lambdapdk/archive/refs/tags/

  • Reference: v0.1.35

siliconcompiler

  • Path: python://siliconcompiler

3.11.2. drc#

Perform DRC checks

Setup file: drc.py

3.11.2.1. Configuration#

3.11.3. extspice#

Extract spice netlists from a GDS file for simulation use

Setup file: extspice.py

3.11.3.1. Configuration#

3.12. montage#

ImageMagick® is a free and open-source software suite for displaying, converting, and editing raster image and vector image files. It can read and write over 200 image file formats, and can support a wide range of image manipulation operations, such as resizing, cropping, and color correction. Use the montage program to create a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more

Documentation: https://imagemagick.org/

Sources: ImageMagick/ImageMagick

Installation: ImageMagick/ImageMagick

Setup file: montage.py

3.12.1. tile#

Tiles input images into a single output image.

Notes: Need to make ensure that /etc/ImageMagick-6/policy.xml

<policy domain=”resource” name=”memory” value=”8GiB”/> <policy domain=”resource” name=”map” value=”8GiB”/> <policy domain=”resource” name=”width” value=”32KP”/> <policy domain=”resource” name=”height” value=”32KP”/> <policy domain=”resource” name=”area” value=”1GP”/> <policy domain=”resource” name=”disk” value=”8GiB”/>

This ensures there are enough resources available to generate the final image.

Setup file: tile.py

3.12.1.1. Configuration#

Keypath

Value

['tool', 'montage', 'task', 'tile', 'option']

  • inputs/<design>_X0_Y0.png
  • inputs/<design>_X1_Y0.png
  • inputs/<design>_X0_Y1.png
  • inputs/<design>_X1_Y1.png
  • -tile
  • 2x2
  • -geometry
  • +0+0
  • outputs/<design>.png

['tool', 'montage', 'task', 'tile', 'var', 'xbins']

2

['tool', 'montage', 'task', 'tile', 'var', 'ybins']

2

['tool', 'montage', 'task', 'tile', 'input']

  • <design>_X0_Y0.png

  • <design>_X0_Y1.png

  • <design>_X1_Y0.png

  • <design>_X1_Y1.png

['tool', 'montage', 'task', 'tile', 'output']

<design>.png

3.12.1.2. Variables#

Parameters

Help

[..., 'var', 'xbins']

Number of bins along the x-axis

[..., 'var', 'ybins']

Number of bins along the y-axis

3.13. netgen#

Netgen is a tool for comparing netlists. By comparing a Verilog netlist with one extracted from a circuit layout, it can be used to perform LVS verification.

Documentation: http://www.opencircuitdesign.com/netgen/

Installation: RTimothyEdwards/netgen

Sources: RTimothyEdwards/netgen

Setup file: netgen.py

3.13.1. Data sources#

Package

Specifications

siliconcompiler

  • Path: python://siliconcompiler

3.13.2. lvs#

Perform LVS on the supplied netlists

Setup file: lvs.py

3.14. nextpnr#

nextpnr is a vendor neutral FPGA place and route tool with support for the ICE40, ECP5, and Nexus devices from Lattice.

Documentation: YosysHQ/nextpnr

Sources: YosysHQ/nextpnr

Installation: YosysHQ/nextpnr

Setup file: nextpnr.py

3.14.1. apr#

Perform automated place and route on FPGAs

Setup file: apr.py

3.15. openroad#

OpenROAD is an automated physical design platform for integrated circuit design with a complete set of features needed to translate a synthesized netlist to a tapeout ready GDSII.

Documentation: https://openroad.readthedocs.io/

Sources: The-OpenROAD-Project/OpenROAD

Installation: The-OpenROAD-Project/OpenROAD

Setup file: openroad.py

3.15.1. Data sources#

Package

Specifications

lambdapdk

  • Path: https://github.com/siliconcompiler/lambdapdk/archive/refs/tags/

  • Reference: v0.1.35

siliconcompiler

  • Path: python://siliconcompiler

3.15.2. cts#

Perform clock tree synthesis and timing repair

Setup file: cts.py

3.15.2.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'cts', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'cts', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'cts', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'cts', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'cts', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'cts', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'cts', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'cts', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'cts', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'cts', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'cts', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'cts', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'cts', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'cts', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'cts', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'cts', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'cts', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'cts', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'cts', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'cts', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'cts', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'cts', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'cts', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'cts', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'cts', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'cts', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'cts', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'cts', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'cts', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'cts', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'cts', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'cts', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'cts', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'cts', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'cts', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'cts', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'cts', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'cts', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'cts', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'cts', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'cts', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'cts', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'cts', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'cts', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'cts', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'cts', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'cts', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'cts', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'cts', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'cts', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'cts', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'cts', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'cts', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'cts', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'cts', 'var', 'reports']

  • setup
  • hold
  • unconstrained
  • clock_skew
  • power
  • drv_violations
  • fmax
  • placement_density
  • routing_congestion
  • power_density
  • clock_placement
  • clock_trees
  • optimization_placement

['tool', 'openroad', 'task', 'cts', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'cts', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

['tool', 'openroad', 'task', 'cts', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,cts,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,cts,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,cts,var,ord_enable_images
  • tool,openroad,task,cts,var,ord_heatmap_bins_x
  • tool,openroad,task,cts,var,ord_heatmap_bins_y
  • tool,openroad,task,cts,var,sta_early_timing_derate
  • tool,openroad,task,cts,var,sta_late_timing_derate
  • tool,openroad,task,cts,var,sta_top_n_paths
  • tool,openroad,task,cts,var,ifp_tie_separation
  • tool,openroad,task,cts,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,cts,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,cts,var,macro_place_channel
  • tool,openroad,task,cts,var,rtlmp_enable
  • tool,openroad,task,cts,var,pdn_enable
  • tool,openroad,task,cts,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,cts,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,cts,var,pad_global_place
  • tool,openroad,task,cts,var,gpl_routability_driven
  • tool,openroad,task,cts,var,gpl_timing_driven
  • tool,openroad,task,cts,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,cts,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,cts,var,pad_detail_place
  • tool,openroad,task,cts,var,dpl_max_displacement
  • tool,openroad,task,cts,var,dpl_disallow_one_site
  • tool,openroad,task,cts,var,dpo_enable
  • tool,openroad,task,cts,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,cts,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,cts,var,cts_distance_between_buffers
  • tool,openroad,task,cts,var,cts_cluster_diameter
  • tool,openroad,task,cts,var,cts_cluster_size
  • tool,openroad,task,cts,var,cts_balance_levels
  • tool,openroad,task,cts,var,cts_obstruction_aware
  • tool,openroad,task,cts,var,rsz_setup_slack_margin
  • tool,openroad,task,cts,var,rsz_hold_slack_margin
  • tool,openroad,task,cts,var,rsz_slew_margin
  • tool,openroad,task,cts,var,rsz_cap_margin
  • tool,openroad,task,cts,var,rsz_buffer_inputs
  • tool,openroad,task,cts,var,rsz_buffer_outputs
  • tool,openroad,task,cts,var,rsz_skip_pin_swap
  • tool,openroad,task,cts,var,rsz_skip_gate_cloning
  • tool,openroad,task,cts,var,rsz_repair_tns
  • tool,openroad,task,cts,var,grt_use_pin_access
  • tool,openroad,task,cts,var,grt_overflow_iter
  • tool,openroad,task,cts,var,grt_macro_extension
  • tool,openroad,task,cts,var,grt_allow_congestion
  • tool,openroad,task,cts,var,grt_allow_overflow
  • tool,openroad,task,cts,var,grt_signal_min_layer
  • tool,openroad,task,cts,var,grt_signal_max_layer
  • tool,openroad,task,cts,var,grt_clock_min_layer
  • tool,openroad,task,cts,var,grt_clock_max_layer
  • tool,openroad,task,cts,var,ant_iterations
  • tool,openroad,task,cts,var,ant_margin
  • tool,openroad,task,cts,var,ant_check
  • tool,openroad,task,cts,var,ant_repair
  • tool,openroad,task,cts,var,drt_disable_via_gen
  • tool,openroad,task,cts,var,drt_via_repair_post_route
  • tool,openroad,task,cts,var,fin_add_fill
  • tool,openroad,task,cts,file,opensta_generic_sdc

['tool', 'openroad', 'task', 'cts', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'cts', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'cts', 'threads']

2

3.15.2.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'reports']

list of reports and images to generate

3.15.2.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.3. dfm#

Design for manufacturing step will insert fill if specified

Setup file: dfm.py

3.15.3.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'dfm', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'dfm', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'dfm', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'dfm', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'dfm', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'dfm', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'dfm', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'dfm', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'dfm', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'dfm', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'dfm', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'dfm', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'dfm', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'dfm', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'dfm', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'dfm', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'dfm', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'dfm', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'dfm', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'dfm', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'dfm', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'dfm', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'dfm', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'dfm', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'dfm', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'dfm', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'dfm', 'var', 'reports']

  • setup
  • hold
  • unconstrained
  • clock_skew
  • power
  • drv_violations
  • fmax
  • placement_density
  • routing_congestion
  • power_density
  • clock_placement
  • clock_trees
  • optimization_placement

['tool', 'openroad', 'task', 'dfm', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'dfm', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

['tool', 'openroad', 'task', 'dfm', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,dfm,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,dfm,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,dfm,var,ord_enable_images
  • tool,openroad,task,dfm,var,ord_heatmap_bins_x
  • tool,openroad,task,dfm,var,ord_heatmap_bins_y
  • tool,openroad,task,dfm,var,sta_early_timing_derate
  • tool,openroad,task,dfm,var,sta_late_timing_derate
  • tool,openroad,task,dfm,var,sta_top_n_paths
  • tool,openroad,task,dfm,var,ifp_tie_separation
  • tool,openroad,task,dfm,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,dfm,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,dfm,var,macro_place_channel
  • tool,openroad,task,dfm,var,rtlmp_enable
  • tool,openroad,task,dfm,var,pdn_enable
  • tool,openroad,task,dfm,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,dfm,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,dfm,var,pad_global_place
  • tool,openroad,task,dfm,var,gpl_routability_driven
  • tool,openroad,task,dfm,var,gpl_timing_driven
  • tool,openroad,task,dfm,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,dfm,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,dfm,var,pad_detail_place
  • tool,openroad,task,dfm,var,dpl_max_displacement
  • tool,openroad,task,dfm,var,dpl_disallow_one_site
  • tool,openroad,task,dfm,var,dpo_enable
  • tool,openroad,task,dfm,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,dfm,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,dfm,var,cts_distance_between_buffers
  • tool,openroad,task,dfm,var,cts_cluster_diameter
  • tool,openroad,task,dfm,var,cts_cluster_size
  • tool,openroad,task,dfm,var,cts_balance_levels
  • tool,openroad,task,dfm,var,cts_obstruction_aware
  • tool,openroad,task,dfm,var,rsz_setup_slack_margin
  • tool,openroad,task,dfm,var,rsz_hold_slack_margin
  • tool,openroad,task,dfm,var,rsz_slew_margin
  • tool,openroad,task,dfm,var,rsz_cap_margin
  • tool,openroad,task,dfm,var,rsz_buffer_inputs
  • tool,openroad,task,dfm,var,rsz_buffer_outputs
  • tool,openroad,task,dfm,var,rsz_skip_pin_swap
  • tool,openroad,task,dfm,var,rsz_skip_gate_cloning
  • tool,openroad,task,dfm,var,rsz_repair_tns
  • tool,openroad,task,dfm,var,grt_use_pin_access
  • tool,openroad,task,dfm,var,grt_overflow_iter
  • tool,openroad,task,dfm,var,grt_macro_extension
  • tool,openroad,task,dfm,var,grt_allow_congestion
  • tool,openroad,task,dfm,var,grt_allow_overflow
  • tool,openroad,task,dfm,var,grt_signal_min_layer
  • tool,openroad,task,dfm,var,grt_signal_max_layer
  • tool,openroad,task,dfm,var,grt_clock_min_layer
  • tool,openroad,task,dfm,var,grt_clock_max_layer
  • tool,openroad,task,dfm,var,ant_iterations
  • tool,openroad,task,dfm,var,ant_margin
  • tool,openroad,task,dfm,var,ant_check
  • tool,openroad,task,dfm,var,ant_repair
  • tool,openroad,task,dfm,var,drt_disable_via_gen
  • tool,openroad,task,dfm,var,drt_via_repair_post_route
  • tool,openroad,task,dfm,var,fin_add_fill
  • tool,openroad,task,dfm,file,opensta_generic_sdc

['tool', 'openroad', 'task', 'dfm', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'dfm', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'dfm', 'threads']

2

3.15.3.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'reports']

list of reports and images to generate

3.15.3.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.4. export#

Generate abstract views (LEF), timing libraries (liberty files), circuit descriptions (CDL), and parasitic annotation files (SPEF)

Setup file: export.py

3.15.4.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'export', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'export', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'export', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'export', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'export', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'export', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'export', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'export', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'export', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'export', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'export', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'export', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'export', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'export', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'export', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'export', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'export', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'export', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'export', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'export', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'export', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'export', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'export', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'export', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'export', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'export', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'export', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'export', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'export', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'export', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'export', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'export', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'export', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'export', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'export', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'export', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'export', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'export', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'export', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'export', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'export', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'export', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'export', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'export', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'export', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'export', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'export', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'export', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'export', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'export', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'export', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'export', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'export', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'export', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'export', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'export', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'export', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'export', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'export', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'export', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'export', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'export', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'export', 'var', 'write_cdl']

false

['tool', 'openroad', 'task', 'export', 'var', 'write_spef']

true

['tool', 'openroad', 'task', 'export', 'var', 'use_spef']

true

['tool', 'openroad', 'task', 'export', 'var', 'write_liberty']

true

['tool', 'openroad', 'task', 'export', 'var', 'write_sdf']

true

['tool', 'openroad', 'task', 'export', 'var', 'reports']

  • setup
  • hold
  • unconstrained
  • clock_skew
  • power
  • drv_violations
  • fmax
  • placement_density
  • routing_congestion
  • power_density
  • ir_drop
  • clock_placement
  • clock_trees
  • optimization_placement

['tool', 'openroad', 'task', 'export', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'export', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

  • <design>.typical.spef

  • <design>.lef

  • <design>.slow.lib

  • <design>.fast.lib

  • <design>.typical.lib

  • <design>.slow.sdf

  • <design>.fast.sdf

  • <design>.typical.sdf

['tool', 'openroad', 'task', 'export', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,export,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,export,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,export,var,ord_enable_images
  • tool,openroad,task,export,var,ord_heatmap_bins_x
  • tool,openroad,task,export,var,ord_heatmap_bins_y
  • tool,openroad,task,export,var,sta_early_timing_derate
  • tool,openroad,task,export,var,sta_late_timing_derate
  • tool,openroad,task,export,var,sta_top_n_paths
  • tool,openroad,task,export,var,ifp_tie_separation
  • tool,openroad,task,export,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,export,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,export,var,macro_place_channel
  • tool,openroad,task,export,var,rtlmp_enable
  • tool,openroad,task,export,var,pdn_enable
  • tool,openroad,task,export,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,export,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,export,var,pad_global_place
  • tool,openroad,task,export,var,gpl_routability_driven
  • tool,openroad,task,export,var,gpl_timing_driven
  • tool,openroad,task,export,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,export,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,export,var,pad_detail_place
  • tool,openroad,task,export,var,dpl_max_displacement
  • tool,openroad,task,export,var,dpl_disallow_one_site
  • tool,openroad,task,export,var,dpo_enable
  • tool,openroad,task,export,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,export,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,export,var,cts_distance_between_buffers
  • tool,openroad,task,export,var,cts_cluster_diameter
  • tool,openroad,task,export,var,cts_cluster_size
  • tool,openroad,task,export,var,cts_balance_levels
  • tool,openroad,task,export,var,cts_obstruction_aware
  • tool,openroad,task,export,var,rsz_setup_slack_margin
  • tool,openroad,task,export,var,rsz_hold_slack_margin
  • tool,openroad,task,export,var,rsz_slew_margin
  • tool,openroad,task,export,var,rsz_cap_margin
  • tool,openroad,task,export,var,rsz_buffer_inputs
  • tool,openroad,task,export,var,rsz_buffer_outputs
  • tool,openroad,task,export,var,rsz_skip_pin_swap
  • tool,openroad,task,export,var,rsz_skip_gate_cloning
  • tool,openroad,task,export,var,rsz_repair_tns
  • tool,openroad,task,export,var,grt_use_pin_access
  • tool,openroad,task,export,var,grt_overflow_iter
  • tool,openroad,task,export,var,grt_macro_extension
  • tool,openroad,task,export,var,grt_allow_congestion
  • tool,openroad,task,export,var,grt_allow_overflow
  • tool,openroad,task,export,var,grt_signal_min_layer
  • tool,openroad,task,export,var,grt_signal_max_layer
  • tool,openroad,task,export,var,grt_clock_min_layer
  • tool,openroad,task,export,var,grt_clock_max_layer
  • tool,openroad,task,export,var,ant_iterations
  • tool,openroad,task,export,var,ant_margin
  • tool,openroad,task,export,var,ant_check
  • tool,openroad,task,export,var,ant_repair
  • tool,openroad,task,export,var,drt_disable_via_gen
  • tool,openroad,task,export,var,drt_via_repair_post_route
  • tool,openroad,task,export,var,fin_add_fill
  • tool,openroad,task,export,file,opensta_generic_sdc
  • tool,openroad,task,export,var,write_cdl
  • tool,openroad,task,export,var,write_spef
  • tool,openroad,task,export,var,use_spef
  • pdk,asap7,pexmodel,openroad-openrcx,10M,typical
  • tool,openroad,task,export,var,write_liberty
  • tool,openroad,task,export,var,write_sdf

['tool', 'openroad', 'task', 'export', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'export', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'export', 'threads']

1

3.15.4.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'write_cdl']

true/false, when true enables writing the CDL file for the design

[..., 'var', 'write_spef']

true/false, when true enables writing the SPEF file for the design

[..., 'var', 'use_spef']

true/false, when true enables reading in SPEF files.

[..., 'var', 'write_liberty']

true/false, when true enables writing the liberty timing model for the design

[..., 'var', 'write_sdf']

true/false, when true enables writing the SDF timing model for the design

[..., 'var', 'reports']

list of reports and images to generate

3.15.4.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.5. floorplan#

Perform floorplanning, pin placements, macro placements and power grid generation

Setup file: floorplan.py

3.15.5.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'floorplan', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'floorplan', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'floorplan', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'floorplan', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'floorplan', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'floorplan', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'floorplan', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'floorplan', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'floorplan', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'floorplan', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'floorplan', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'floorplan', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'floorplan', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'floorplan', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'floorplan', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'floorplan', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'floorplan', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'floorplan', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'floorplan', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'floorplan', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'floorplan', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'floorplan', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'floorplan', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'floorplan', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'floorplan', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'floorplan', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'floorplan', 'var', 'reports']

  • setup
  • unconstrained
  • power

['tool', 'openroad', 'task', 'floorplan', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'floorplan', 'file', 'sc_pin_constraint']

tools/_common/tcl/sc_pin_constraints.tcl, siliconcompiler

['tool', 'openroad', 'task', 'floorplan', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

['tool', 'openroad', 'task', 'floorplan', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,floorplan,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,floorplan,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,floorplan,var,ord_enable_images
  • tool,openroad,task,floorplan,var,ord_heatmap_bins_x
  • tool,openroad,task,floorplan,var,ord_heatmap_bins_y
  • tool,openroad,task,floorplan,var,sta_early_timing_derate
  • tool,openroad,task,floorplan,var,sta_late_timing_derate
  • tool,openroad,task,floorplan,var,sta_top_n_paths
  • tool,openroad,task,floorplan,var,ifp_tie_separation
  • tool,openroad,task,floorplan,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,floorplan,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,floorplan,var,macro_place_channel
  • tool,openroad,task,floorplan,var,rtlmp_enable
  • tool,openroad,task,floorplan,var,pdn_enable
  • tool,openroad,task,floorplan,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,floorplan,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,floorplan,var,pad_global_place
  • tool,openroad,task,floorplan,var,gpl_routability_driven
  • tool,openroad,task,floorplan,var,gpl_timing_driven
  • tool,openroad,task,floorplan,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,floorplan,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,floorplan,var,pad_detail_place
  • tool,openroad,task,floorplan,var,dpl_max_displacement
  • tool,openroad,task,floorplan,var,dpl_disallow_one_site
  • tool,openroad,task,floorplan,var,dpo_enable
  • tool,openroad,task,floorplan,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,floorplan,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,floorplan,var,cts_distance_between_buffers
  • tool,openroad,task,floorplan,var,cts_cluster_diameter
  • tool,openroad,task,floorplan,var,cts_cluster_size
  • tool,openroad,task,floorplan,var,cts_balance_levels
  • tool,openroad,task,floorplan,var,cts_obstruction_aware
  • tool,openroad,task,floorplan,var,rsz_setup_slack_margin
  • tool,openroad,task,floorplan,var,rsz_hold_slack_margin
  • tool,openroad,task,floorplan,var,rsz_slew_margin
  • tool,openroad,task,floorplan,var,rsz_cap_margin
  • tool,openroad,task,floorplan,var,rsz_buffer_inputs
  • tool,openroad,task,floorplan,var,rsz_buffer_outputs
  • tool,openroad,task,floorplan,var,rsz_skip_pin_swap
  • tool,openroad,task,floorplan,var,rsz_skip_gate_cloning
  • tool,openroad,task,floorplan,var,rsz_repair_tns
  • tool,openroad,task,floorplan,var,grt_use_pin_access
  • tool,openroad,task,floorplan,var,grt_overflow_iter
  • tool,openroad,task,floorplan,var,grt_macro_extension
  • tool,openroad,task,floorplan,var,grt_allow_congestion
  • tool,openroad,task,floorplan,var,grt_allow_overflow
  • tool,openroad,task,floorplan,var,grt_signal_min_layer
  • tool,openroad,task,floorplan,var,grt_signal_max_layer
  • tool,openroad,task,floorplan,var,grt_clock_min_layer
  • tool,openroad,task,floorplan,var,grt_clock_max_layer
  • tool,openroad,task,floorplan,var,ant_iterations
  • tool,openroad,task,floorplan,var,ant_margin
  • tool,openroad,task,floorplan,var,ant_check
  • tool,openroad,task,floorplan,var,ant_repair
  • tool,openroad,task,floorplan,var,drt_disable_via_gen
  • tool,openroad,task,floorplan,var,drt_via_repair_post_route
  • tool,openroad,task,floorplan,var,fin_add_fill
  • tool,openroad,task,floorplan,file,opensta_generic_sdc
  • input,netlist,verilog
  • tool,openroad,task,floorplan,file,sc_pin_constraint

['tool', 'openroad', 'task', 'floorplan', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'floorplan', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'floorplan', 'threads']

2

3.15.5.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'reports']

list of reports and images to generate

3.15.5.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to insert the padring

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

[..., 'file', 'sc_pin_constraint']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.6. physyn#

Not implemented yet

Setup file: physyn.py

3.15.6.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'physyn', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'physyn', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'physyn', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'physyn', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'physyn', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'physyn', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'physyn', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'physyn', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'physyn', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'physyn', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'physyn', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'physyn', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'physyn', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'physyn', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'physyn', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'physyn', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'physyn', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'physyn', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'physyn', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'physyn', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'physyn', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'physyn', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'physyn', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'physyn', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'physyn', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'physyn', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'physyn', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'physyn', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

['tool', 'openroad', 'task', 'physyn', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,physyn,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,physyn,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,physyn,var,ord_enable_images
  • tool,openroad,task,physyn,var,ord_heatmap_bins_x
  • tool,openroad,task,physyn,var,ord_heatmap_bins_y
  • tool,openroad,task,physyn,var,sta_early_timing_derate
  • tool,openroad,task,physyn,var,sta_late_timing_derate
  • tool,openroad,task,physyn,var,sta_top_n_paths
  • tool,openroad,task,physyn,var,ifp_tie_separation
  • tool,openroad,task,physyn,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,physyn,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,physyn,var,macro_place_channel
  • tool,openroad,task,physyn,var,rtlmp_enable
  • tool,openroad,task,physyn,var,pdn_enable
  • tool,openroad,task,physyn,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,physyn,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,physyn,var,pad_global_place
  • tool,openroad,task,physyn,var,gpl_routability_driven
  • tool,openroad,task,physyn,var,gpl_timing_driven
  • tool,openroad,task,physyn,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,physyn,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,physyn,var,pad_detail_place
  • tool,openroad,task,physyn,var,dpl_max_displacement
  • tool,openroad,task,physyn,var,dpl_disallow_one_site
  • tool,openroad,task,physyn,var,dpo_enable
  • tool,openroad,task,physyn,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,physyn,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,physyn,var,cts_distance_between_buffers
  • tool,openroad,task,physyn,var,cts_cluster_diameter
  • tool,openroad,task,physyn,var,cts_cluster_size
  • tool,openroad,task,physyn,var,cts_balance_levels
  • tool,openroad,task,physyn,var,cts_obstruction_aware
  • tool,openroad,task,physyn,var,rsz_setup_slack_margin
  • tool,openroad,task,physyn,var,rsz_hold_slack_margin
  • tool,openroad,task,physyn,var,rsz_slew_margin
  • tool,openroad,task,physyn,var,rsz_cap_margin
  • tool,openroad,task,physyn,var,rsz_buffer_inputs
  • tool,openroad,task,physyn,var,rsz_buffer_outputs
  • tool,openroad,task,physyn,var,rsz_skip_pin_swap
  • tool,openroad,task,physyn,var,rsz_skip_gate_cloning
  • tool,openroad,task,physyn,var,rsz_repair_tns
  • tool,openroad,task,physyn,var,grt_use_pin_access
  • tool,openroad,task,physyn,var,grt_overflow_iter
  • tool,openroad,task,physyn,var,grt_macro_extension
  • tool,openroad,task,physyn,var,grt_allow_congestion
  • tool,openroad,task,physyn,var,grt_allow_overflow
  • tool,openroad,task,physyn,var,grt_signal_min_layer
  • tool,openroad,task,physyn,var,grt_signal_max_layer
  • tool,openroad,task,physyn,var,grt_clock_min_layer
  • tool,openroad,task,physyn,var,grt_clock_max_layer
  • tool,openroad,task,physyn,var,ant_iterations
  • tool,openroad,task,physyn,var,ant_margin
  • tool,openroad,task,physyn,var,ant_check
  • tool,openroad,task,physyn,var,ant_repair
  • tool,openroad,task,physyn,var,drt_disable_via_gen
  • tool,openroad,task,physyn,var,drt_via_repair_post_route
  • tool,openroad,task,physyn,var,fin_add_fill
  • tool,openroad,task,physyn,file,opensta_generic_sdc

['tool', 'openroad', 'task', 'physyn', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'physyn', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'physyn', 'threads']

2

3.15.6.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

3.15.6.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.7. place#

Perform global and detail placements along with design violation repairs

Setup file: place.py

3.15.7.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'place', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'place', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'place', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'place', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'place', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'place', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'place', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'place', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'place', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'place', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'place', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'place', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'place', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'place', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'place', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'place', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'place', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'place', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'place', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'place', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'place', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'place', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'place', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'place', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'place', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'place', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'place', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'place', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'place', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'place', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'place', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'place', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'place', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'place', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'place', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'place', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'place', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'place', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'place', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'place', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'place', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'place', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'place', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'place', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'place', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'place', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'place', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'place', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'place', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'place', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'place', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'place', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'place', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'place', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'place', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'place', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'place', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'place', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'place', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'place', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'place', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'place', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'place', 'var', 'reports']

  • setup
  • unconstrained
  • power
  • drv_violations
  • fmax
  • placement_density
  • routing_congestion
  • power_density
  • optimization_placement

['tool', 'openroad', 'task', 'place', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'place', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

['tool', 'openroad', 'task', 'place', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,place,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,place,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,place,var,ord_enable_images
  • tool,openroad,task,place,var,ord_heatmap_bins_x
  • tool,openroad,task,place,var,ord_heatmap_bins_y
  • tool,openroad,task,place,var,sta_early_timing_derate
  • tool,openroad,task,place,var,sta_late_timing_derate
  • tool,openroad,task,place,var,sta_top_n_paths
  • tool,openroad,task,place,var,ifp_tie_separation
  • tool,openroad,task,place,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,place,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,place,var,macro_place_channel
  • tool,openroad,task,place,var,rtlmp_enable
  • tool,openroad,task,place,var,pdn_enable
  • tool,openroad,task,place,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,place,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,place,var,pad_global_place
  • tool,openroad,task,place,var,gpl_routability_driven
  • tool,openroad,task,place,var,gpl_timing_driven
  • tool,openroad,task,place,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,place,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,place,var,pad_detail_place
  • tool,openroad,task,place,var,dpl_max_displacement
  • tool,openroad,task,place,var,dpl_disallow_one_site
  • tool,openroad,task,place,var,dpo_enable
  • tool,openroad,task,place,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,place,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,place,var,cts_distance_between_buffers
  • tool,openroad,task,place,var,cts_cluster_diameter
  • tool,openroad,task,place,var,cts_cluster_size
  • tool,openroad,task,place,var,cts_balance_levels
  • tool,openroad,task,place,var,cts_obstruction_aware
  • tool,openroad,task,place,var,rsz_setup_slack_margin
  • tool,openroad,task,place,var,rsz_hold_slack_margin
  • tool,openroad,task,place,var,rsz_slew_margin
  • tool,openroad,task,place,var,rsz_cap_margin
  • tool,openroad,task,place,var,rsz_buffer_inputs
  • tool,openroad,task,place,var,rsz_buffer_outputs
  • tool,openroad,task,place,var,rsz_skip_pin_swap
  • tool,openroad,task,place,var,rsz_skip_gate_cloning
  • tool,openroad,task,place,var,rsz_repair_tns
  • tool,openroad,task,place,var,grt_use_pin_access
  • tool,openroad,task,place,var,grt_overflow_iter
  • tool,openroad,task,place,var,grt_macro_extension
  • tool,openroad,task,place,var,grt_allow_congestion
  • tool,openroad,task,place,var,grt_allow_overflow
  • tool,openroad,task,place,var,grt_signal_min_layer
  • tool,openroad,task,place,var,grt_signal_max_layer
  • tool,openroad,task,place,var,grt_clock_min_layer
  • tool,openroad,task,place,var,grt_clock_max_layer
  • tool,openroad,task,place,var,ant_iterations
  • tool,openroad,task,place,var,ant_margin
  • tool,openroad,task,place,var,ant_check
  • tool,openroad,task,place,var,ant_repair
  • tool,openroad,task,place,var,drt_disable_via_gen
  • tool,openroad,task,place,var,drt_via_repair_post_route
  • tool,openroad,task,place,var,fin_add_fill
  • tool,openroad,task,place,file,opensta_generic_sdc

['tool', 'openroad', 'task', 'place', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'place', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'place', 'threads']

2

3.15.7.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'reports']

list of reports and images to generate

3.15.7.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.8. rcx_bench#

Helper method for configs specific to extraction tasks.

Setup file: rcx_bench.py

3.15.8.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'rcx_bench', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'rcx_bench', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'rcx_bench', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'libtype']

7p5t

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'max_layer']

M7

['tool', 'openroad', 'task', 'rcx_bench', 'var', 'bench_length']

100

['tool', 'openroad', 'task', 'rcx_bench', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'rcx_bench', 'output']

  • <design>.def

  • <design>.vg

['tool', 'openroad', 'task', 'rcx_bench', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,rcx_bench,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,rcx_bench,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,rcx_bench,var,ord_enable_images
  • tool,openroad,task,rcx_bench,var,ord_heatmap_bins_x
  • tool,openroad,task,rcx_bench,var,ord_heatmap_bins_y
  • tool,openroad,task,rcx_bench,var,sta_early_timing_derate
  • tool,openroad,task,rcx_bench,var,sta_late_timing_derate
  • tool,openroad,task,rcx_bench,var,sta_top_n_paths
  • tool,openroad,task,rcx_bench,var,ifp_tie_separation
  • tool,openroad,task,rcx_bench,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,rcx_bench,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,rcx_bench,var,macro_place_channel
  • tool,openroad,task,rcx_bench,var,rtlmp_enable
  • tool,openroad,task,rcx_bench,var,pdn_enable
  • tool,openroad,task,rcx_bench,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,rcx_bench,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,rcx_bench,var,pad_global_place
  • tool,openroad,task,rcx_bench,var,gpl_routability_driven
  • tool,openroad,task,rcx_bench,var,gpl_timing_driven
  • tool,openroad,task,rcx_bench,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,rcx_bench,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,rcx_bench,var,pad_detail_place
  • tool,openroad,task,rcx_bench,var,dpl_max_displacement
  • tool,openroad,task,rcx_bench,var,dpl_disallow_one_site
  • tool,openroad,task,rcx_bench,var,dpo_enable
  • tool,openroad,task,rcx_bench,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,rcx_bench,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,rcx_bench,var,cts_distance_between_buffers
  • tool,openroad,task,rcx_bench,var,cts_cluster_diameter
  • tool,openroad,task,rcx_bench,var,cts_cluster_size
  • tool,openroad,task,rcx_bench,var,cts_balance_levels
  • tool,openroad,task,rcx_bench,var,cts_obstruction_aware
  • tool,openroad,task,rcx_bench,var,rsz_setup_slack_margin
  • tool,openroad,task,rcx_bench,var,rsz_hold_slack_margin
  • tool,openroad,task,rcx_bench,var,rsz_slew_margin
  • tool,openroad,task,rcx_bench,var,rsz_cap_margin
  • tool,openroad,task,rcx_bench,var,rsz_buffer_inputs
  • tool,openroad,task,rcx_bench,var,rsz_buffer_outputs
  • tool,openroad,task,rcx_bench,var,rsz_skip_pin_swap
  • tool,openroad,task,rcx_bench,var,rsz_skip_gate_cloning
  • tool,openroad,task,rcx_bench,var,rsz_repair_tns
  • tool,openroad,task,rcx_bench,var,grt_use_pin_access
  • tool,openroad,task,rcx_bench,var,grt_overflow_iter
  • tool,openroad,task,rcx_bench,var,grt_macro_extension
  • tool,openroad,task,rcx_bench,var,grt_allow_congestion
  • tool,openroad,task,rcx_bench,var,grt_allow_overflow
  • tool,openroad,task,rcx_bench,var,grt_signal_min_layer
  • tool,openroad,task,rcx_bench,var,grt_signal_max_layer
  • tool,openroad,task,rcx_bench,var,grt_clock_min_layer
  • tool,openroad,task,rcx_bench,var,grt_clock_max_layer
  • tool,openroad,task,rcx_bench,var,ant_iterations
  • tool,openroad,task,rcx_bench,var,ant_margin
  • tool,openroad,task,rcx_bench,var,ant_check
  • tool,openroad,task,rcx_bench,var,ant_repair
  • tool,openroad,task,rcx_bench,var,drt_disable_via_gen
  • tool,openroad,task,rcx_bench,var,drt_via_repair_post_route
  • tool,openroad,task,rcx_bench,var,fin_add_fill
  • tool,openroad,task,rcx_bench,file,opensta_generic_sdc
  • tool,openroad,task,rcx_bench,var,libtype
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • tool,openroad,task,rcx_bench,var,max_layer
  • tool,openroad,task,rcx_bench,var,bench_length

['tool', 'openroad', 'task', 'rcx_bench', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'rcx_bench', 'script']

sc_rcx.tcl

['tool', 'openroad', 'task', 'rcx_bench', 'threads']

1

3.15.8.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'libtype']

Library type used to select the lef file

[..., 'var', 'max_layer']

Maximum layer to generate extraction bench for

[..., 'var', 'bench_length']

Length of bench wires

3.15.8.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.9. rcx_extract#

Helper method for configs specific to extraction tasks.

Setup file: rcx_extract.py

3.15.9.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'rcx_extract', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'rcx_extract', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'rcx_extract', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'rcx_extract', 'var', 'libtype']

7p5t

['tool', 'openroad', 'task', 'rcx_extract', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'rcx_extract', 'input']

  • <design>.def

  • <design>.corner.spef

['tool', 'openroad', 'task', 'rcx_extract', 'output']

<design>.corner.rcx

['tool', 'openroad', 'task', 'rcx_extract', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,rcx_extract,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,rcx_extract,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,rcx_extract,var,ord_enable_images
  • tool,openroad,task,rcx_extract,var,ord_heatmap_bins_x
  • tool,openroad,task,rcx_extract,var,ord_heatmap_bins_y
  • tool,openroad,task,rcx_extract,var,sta_early_timing_derate
  • tool,openroad,task,rcx_extract,var,sta_late_timing_derate
  • tool,openroad,task,rcx_extract,var,sta_top_n_paths
  • tool,openroad,task,rcx_extract,var,ifp_tie_separation
  • tool,openroad,task,rcx_extract,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,rcx_extract,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,rcx_extract,var,macro_place_channel
  • tool,openroad,task,rcx_extract,var,rtlmp_enable
  • tool,openroad,task,rcx_extract,var,pdn_enable
  • tool,openroad,task,rcx_extract,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,rcx_extract,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,rcx_extract,var,pad_global_place
  • tool,openroad,task,rcx_extract,var,gpl_routability_driven
  • tool,openroad,task,rcx_extract,var,gpl_timing_driven
  • tool,openroad,task,rcx_extract,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,rcx_extract,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,rcx_extract,var,pad_detail_place
  • tool,openroad,task,rcx_extract,var,dpl_max_displacement
  • tool,openroad,task,rcx_extract,var,dpl_disallow_one_site
  • tool,openroad,task,rcx_extract,var,dpo_enable
  • tool,openroad,task,rcx_extract,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,rcx_extract,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,rcx_extract,var,cts_distance_between_buffers
  • tool,openroad,task,rcx_extract,var,cts_cluster_diameter
  • tool,openroad,task,rcx_extract,var,cts_cluster_size
  • tool,openroad,task,rcx_extract,var,cts_balance_levels
  • tool,openroad,task,rcx_extract,var,cts_obstruction_aware
  • tool,openroad,task,rcx_extract,var,rsz_setup_slack_margin
  • tool,openroad,task,rcx_extract,var,rsz_hold_slack_margin
  • tool,openroad,task,rcx_extract,var,rsz_slew_margin
  • tool,openroad,task,rcx_extract,var,rsz_cap_margin
  • tool,openroad,task,rcx_extract,var,rsz_buffer_inputs
  • tool,openroad,task,rcx_extract,var,rsz_buffer_outputs
  • tool,openroad,task,rcx_extract,var,rsz_skip_pin_swap
  • tool,openroad,task,rcx_extract,var,rsz_skip_gate_cloning
  • tool,openroad,task,rcx_extract,var,rsz_repair_tns
  • tool,openroad,task,rcx_extract,var,grt_use_pin_access
  • tool,openroad,task,rcx_extract,var,grt_overflow_iter
  • tool,openroad,task,rcx_extract,var,grt_macro_extension
  • tool,openroad,task,rcx_extract,var,grt_allow_congestion
  • tool,openroad,task,rcx_extract,var,grt_allow_overflow
  • tool,openroad,task,rcx_extract,var,grt_signal_min_layer
  • tool,openroad,task,rcx_extract,var,grt_signal_max_layer
  • tool,openroad,task,rcx_extract,var,grt_clock_min_layer
  • tool,openroad,task,rcx_extract,var,grt_clock_max_layer
  • tool,openroad,task,rcx_extract,var,ant_iterations
  • tool,openroad,task,rcx_extract,var,ant_margin
  • tool,openroad,task,rcx_extract,var,ant_check
  • tool,openroad,task,rcx_extract,var,ant_repair
  • tool,openroad,task,rcx_extract,var,drt_disable_via_gen
  • tool,openroad,task,rcx_extract,var,drt_via_repair_post_route
  • tool,openroad,task,rcx_extract,var,fin_add_fill
  • tool,openroad,task,rcx_extract,file,opensta_generic_sdc
  • tool,openroad,task,rcx_extract,var,libtype
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • tool,openroad,task,rcx_extract,var,corner

['tool', 'openroad', 'task', 'rcx_extract', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'rcx_extract', 'script']

sc_rcx.tcl

['tool', 'openroad', 'task', 'rcx_extract', 'threads']

1

3.15.9.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'libtype']

Library type used to select the lef file

[..., 'var', 'corner']

Parasitic corner to generate RCX file for

3.15.9.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.10. route#

Performs filler insertion, global routing, antenna repair, and detailed routing

Setup file: route.py

3.15.10.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'route', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'route', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'route', 'option']

-exit -metrics reports/metrics.json

['tool', 'openroad', 'task', 'route', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'route', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'route', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'route', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'route', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'route', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'route', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'route', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'route', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'route', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'route', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'route', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'route', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'route', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'route', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'route', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'route', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'route', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'route', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'route', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'route', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'route', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'route', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'route', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'route', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'route', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'route', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'route', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'route', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'route', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'route', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'route', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'route', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'route', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'route', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'route', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'route', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'route', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'route', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'route', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'route', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'route', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'route', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'route', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'route', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'route', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'route', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'route', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'route', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'route', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'route', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'route', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'route', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'route', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'route', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'route', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'route', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'route', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'route', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'route', 'var', 'reports']

  • setup
  • hold
  • unconstrained
  • clock_skew
  • power
  • drv_violations
  • fmax
  • placement_density
  • routing_congestion
  • power_density
  • clock_placement
  • clock_trees
  • optimization_placement

['tool', 'openroad', 'task', 'route', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'route', 'output']

  • <design>.sdc

  • <design>.vg

  • <design>.def

  • <design>.odb

['tool', 'openroad', 'task', 'route', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,route,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,route,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,route,var,ord_enable_images
  • tool,openroad,task,route,var,ord_heatmap_bins_x
  • tool,openroad,task,route,var,ord_heatmap_bins_y
  • tool,openroad,task,route,var,sta_early_timing_derate
  • tool,openroad,task,route,var,sta_late_timing_derate
  • tool,openroad,task,route,var,sta_top_n_paths
  • tool,openroad,task,route,var,ifp_tie_separation
  • tool,openroad,task,route,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,route,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,route,var,macro_place_channel
  • tool,openroad,task,route,var,rtlmp_enable
  • tool,openroad,task,route,var,pdn_enable
  • tool,openroad,task,route,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,route,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,route,var,pad_global_place
  • tool,openroad,task,route,var,gpl_routability_driven
  • tool,openroad,task,route,var,gpl_timing_driven
  • tool,openroad,task,route,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,route,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,route,var,pad_detail_place
  • tool,openroad,task,route,var,dpl_max_displacement
  • tool,openroad,task,route,var,dpl_disallow_one_site
  • tool,openroad,task,route,var,dpo_enable
  • tool,openroad,task,route,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,route,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,route,var,cts_distance_between_buffers
  • tool,openroad,task,route,var,cts_cluster_diameter
  • tool,openroad,task,route,var,cts_cluster_size
  • tool,openroad,task,route,var,cts_balance_levels
  • tool,openroad,task,route,var,cts_obstruction_aware
  • tool,openroad,task,route,var,rsz_setup_slack_margin
  • tool,openroad,task,route,var,rsz_hold_slack_margin
  • tool,openroad,task,route,var,rsz_slew_margin
  • tool,openroad,task,route,var,rsz_cap_margin
  • tool,openroad,task,route,var,rsz_buffer_inputs
  • tool,openroad,task,route,var,rsz_buffer_outputs
  • tool,openroad,task,route,var,rsz_skip_pin_swap
  • tool,openroad,task,route,var,rsz_skip_gate_cloning
  • tool,openroad,task,route,var,rsz_repair_tns
  • tool,openroad,task,route,var,grt_use_pin_access
  • tool,openroad,task,route,var,grt_overflow_iter
  • tool,openroad,task,route,var,grt_macro_extension
  • tool,openroad,task,route,var,grt_allow_congestion
  • tool,openroad,task,route,var,grt_allow_overflow
  • tool,openroad,task,route,var,grt_signal_min_layer
  • tool,openroad,task,route,var,grt_signal_max_layer
  • tool,openroad,task,route,var,grt_clock_min_layer
  • tool,openroad,task,route,var,grt_clock_max_layer
  • tool,openroad,task,route,var,ant_iterations
  • tool,openroad,task,route,var,ant_margin
  • tool,openroad,task,route,var,ant_check
  • tool,openroad,task,route,var,ant_repair
  • tool,openroad,task,route,var,drt_disable_via_gen
  • tool,openroad,task,route,var,drt_via_repair_post_route
  • tool,openroad,task,route,var,fin_add_fill
  • tool,openroad,task,route,file,opensta_generic_sdc

['tool', 'openroad', 'task', 'route', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'route', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'route', 'threads']

2

3.15.10.2. Variables#

Parameters

Help

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'reports']

list of reports and images to generate

3.15.10.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.11. screenshot#

Generate a PNG file from a layout file

Setup file: screenshot.py

3.15.11.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'screenshot', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'screenshot', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'screenshot', 'option']

-exit -metrics reports/metrics.json -no_init -gui

['tool', 'openroad', 'task', 'screenshot', 'var', 'show_filepath']

<path>

['tool', 'openroad', 'task', 'screenshot', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'screenshot', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'screenshot', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'screenshot', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'screenshot', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'screenshot', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'screenshot', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'screenshot', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'screenshot', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'screenshot', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'screenshot', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'screenshot', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'screenshot', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'screenshot', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'screenshot', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'screenshot', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'screenshot', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'screenshot', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'screenshot', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'screenshot', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'screenshot', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'screenshot', 'var', 'show_exit']

true

['tool', 'openroad', 'task', 'screenshot', 'var', 'show_vertical_resolution']

1024

['tool', 'openroad', 'task', 'screenshot', 'var', 'include_report_images']

false

['tool', 'openroad', 'task', 'screenshot', 'var', 'reports']

  • placement_density
  • routing_congestion
  • power_density
  • ir_drop
  • clock_placement
  • clock_trees
  • optimization_placement

['tool', 'openroad', 'task', 'screenshot', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'screenshot', 'output']

<design>.png

['tool', 'openroad', 'task', 'screenshot', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,screenshot,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,screenshot,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,screenshot,var,ord_enable_images
  • tool,openroad,task,screenshot,var,ord_heatmap_bins_x
  • tool,openroad,task,screenshot,var,ord_heatmap_bins_y
  • tool,openroad,task,screenshot,var,sta_early_timing_derate
  • tool,openroad,task,screenshot,var,sta_late_timing_derate
  • tool,openroad,task,screenshot,var,sta_top_n_paths
  • tool,openroad,task,screenshot,var,ifp_tie_separation
  • tool,openroad,task,screenshot,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,screenshot,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,screenshot,var,macro_place_channel
  • tool,openroad,task,screenshot,var,rtlmp_enable
  • tool,openroad,task,screenshot,var,pdn_enable
  • tool,openroad,task,screenshot,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,screenshot,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,screenshot,var,pad_global_place
  • tool,openroad,task,screenshot,var,gpl_routability_driven
  • tool,openroad,task,screenshot,var,gpl_timing_driven
  • tool,openroad,task,screenshot,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,screenshot,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,screenshot,var,pad_detail_place
  • tool,openroad,task,screenshot,var,dpl_max_displacement
  • tool,openroad,task,screenshot,var,dpl_disallow_one_site
  • tool,openroad,task,screenshot,var,dpo_enable
  • tool,openroad,task,screenshot,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,screenshot,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,screenshot,var,cts_distance_between_buffers
  • tool,openroad,task,screenshot,var,cts_cluster_diameter
  • tool,openroad,task,screenshot,var,cts_cluster_size
  • tool,openroad,task,screenshot,var,cts_balance_levels
  • tool,openroad,task,screenshot,var,cts_obstruction_aware
  • tool,openroad,task,screenshot,var,rsz_setup_slack_margin
  • tool,openroad,task,screenshot,var,rsz_hold_slack_margin
  • tool,openroad,task,screenshot,var,rsz_slew_margin
  • tool,openroad,task,screenshot,var,rsz_cap_margin
  • tool,openroad,task,screenshot,var,rsz_buffer_inputs
  • tool,openroad,task,screenshot,var,rsz_buffer_outputs
  • tool,openroad,task,screenshot,var,rsz_skip_pin_swap
  • tool,openroad,task,screenshot,var,rsz_skip_gate_cloning
  • tool,openroad,task,screenshot,var,rsz_repair_tns
  • tool,openroad,task,screenshot,var,grt_use_pin_access
  • tool,openroad,task,screenshot,var,grt_overflow_iter
  • tool,openroad,task,screenshot,var,grt_macro_extension
  • tool,openroad,task,screenshot,var,grt_allow_congestion
  • tool,openroad,task,screenshot,var,grt_allow_overflow
  • tool,openroad,task,screenshot,var,grt_signal_min_layer
  • tool,openroad,task,screenshot,var,grt_signal_max_layer
  • tool,openroad,task,screenshot,var,grt_clock_min_layer
  • tool,openroad,task,screenshot,var,grt_clock_max_layer
  • tool,openroad,task,screenshot,var,ant_iterations
  • tool,openroad,task,screenshot,var,ant_margin
  • tool,openroad,task,screenshot,var,ant_check
  • tool,openroad,task,screenshot,var,ant_repair
  • tool,openroad,task,screenshot,var,drt_disable_via_gen
  • tool,openroad,task,screenshot,var,drt_via_repair_post_route
  • tool,openroad,task,screenshot,var,fin_add_fill
  • tool,openroad,task,screenshot,file,opensta_generic_sdc
  • tool,openroad,task,screenshot,var,show_filepath

['tool', 'openroad', 'task', 'screenshot', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'screenshot', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'screenshot', 'threads']

2

3.15.11.2. Variables#

Parameters

Help

[..., 'var', 'show_filepath']

Task script variables specified as key value pairs. Variable names and value types must match the name and type of task and reference script consuming the variable.

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'show_exit']

Task script variables specified as key value pairs. Variable names and value types must match the name and type of task and reference script consuming the variable.

[..., 'var', 'show_vertical_resolution']

Task script variables specified as key value pairs. Variable names and value types must match the name and type of task and reference script consuming the variable.

[..., 'var', 'include_report_images']

true/false, include the images in reports/

[..., 'var', 'reports']

list of reports and images to generate

3.15.11.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.15.12. show#

Show a design in openroad

Setup file: show.py

3.15.12.1. Configuration#

Keypath

Value

['tool', 'openroad', 'task', 'show', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'openroad', 'task', 'show', 'regex', 'errors']

^\[ERROR

['tool', 'openroad', 'task', 'show', 'option']

-metrics reports/metrics.json -no_init -gui

['tool', 'openroad', 'task', 'show', 'var', 'show_filepath']

<path>

['tool', 'openroad', 'task', 'show', 'var', 'ord_abstract_lef_bloat_factor']

10

['tool', 'openroad', 'task', 'show', 'var', 'ord_abstract_lef_bloat_layers']

true

['tool', 'openroad', 'task', 'show', 'var', 'ord_enable_images']

true

['tool', 'openroad', 'task', 'show', 'var', 'ord_heatmap_bins_x']

16

['tool', 'openroad', 'task', 'show', 'var', 'ord_heatmap_bins_y']

16

['tool', 'openroad', 'task', 'show', 'var', 'sta_early_timing_derate']

0.0

['tool', 'openroad', 'task', 'show', 'var', 'sta_late_timing_derate']

0.0

['tool', 'openroad', 'task', 'show', 'var', 'sta_top_n_paths']

10

['tool', 'openroad', 'task', 'show', 'var', 'power_corner']

typical

['tool', 'openroad', 'task', 'show', 'var', 'ifp_tie_separation']

0

['tool', 'openroad', 'task', 'show', 'var', 'ifp_snap_strategy']

site

['tool', 'openroad', 'task', 'show', 'var', 'macro_place_halo']

  • 10
  • 10

['tool', 'openroad', 'task', 'show', 'var', 'macro_place_channel']

  • 12
  • 12

['tool', 'openroad', 'task', 'show', 'var', 'rtlmp_enable']

false

['tool', 'openroad', 'task', 'show', 'var', 'pdn_enable']

true

['tool', 'openroad', 'task', 'show', 'var', 'psm_enable']

true

['tool', 'openroad', 'task', 'show', 'var', 'place_density']

0.60

['tool', 'openroad', 'task', 'show', 'var', 'pad_global_place']

0

['tool', 'openroad', 'task', 'show', 'var', 'gpl_routability_driven']

true

['tool', 'openroad', 'task', 'show', 'var', 'gpl_timing_driven']

true

['tool', 'openroad', 'task', 'show', 'var', 'gpl_uniform_placement_adjustment']

0.00

['tool', 'openroad', 'task', 'show', 'var', 'gpl_enable_skip_io']

true

['tool', 'openroad', 'task', 'show', 'var', 'pad_detail_place']

0

['tool', 'openroad', 'task', 'show', 'var', 'dpl_max_displacement']

0

['tool', 'openroad', 'task', 'show', 'var', 'dpl_disallow_one_site']

false

['tool', 'openroad', 'task', 'show', 'var', 'dpo_enable']

true

['tool', 'openroad', 'task', 'show', 'var', 'dpo_max_displacement']

0

['tool', 'openroad', 'task', 'show', 'var', 'cts_clock_buffer']

BUFx4_ASAP7_75t_R

['tool', 'openroad', 'task', 'show', 'var', 'cts_distance_between_buffers']

60

['tool', 'openroad', 'task', 'show', 'var', 'cts_cluster_diameter']

100

['tool', 'openroad', 'task', 'show', 'var', 'cts_cluster_size']

30

['tool', 'openroad', 'task', 'show', 'var', 'cts_balance_levels']

true

['tool', 'openroad', 'task', 'show', 'var', 'cts_obstruction_aware']

true

['tool', 'openroad', 'task', 'show', 'var', 'rsz_setup_slack_margin']

0.0

['tool', 'openroad', 'task', 'show', 'var', 'rsz_hold_slack_margin']

0.0

['tool', 'openroad', 'task', 'show', 'var', 'rsz_slew_margin']

0.0

['tool', 'openroad', 'task', 'show', 'var', 'rsz_cap_margin']

0.0

['tool', 'openroad', 'task', 'show', 'var', 'rsz_buffer_inputs']

false

['tool', 'openroad', 'task', 'show', 'var', 'rsz_buffer_outputs']

false

['tool', 'openroad', 'task', 'show', 'var', 'rsz_skip_pin_swap']

true

['tool', 'openroad', 'task', 'show', 'var', 'rsz_skip_gate_cloning']

true

['tool', 'openroad', 'task', 'show', 'var', 'rsz_repair_tns']

100

['tool', 'openroad', 'task', 'show', 'var', 'grt_use_pin_access']

false

['tool', 'openroad', 'task', 'show', 'var', 'grt_overflow_iter']

100

['tool', 'openroad', 'task', 'show', 'var', 'grt_macro_extension']

0

['tool', 'openroad', 'task', 'show', 'var', 'grt_allow_congestion']

false

['tool', 'openroad', 'task', 'show', 'var', 'grt_allow_overflow']

false

['tool', 'openroad', 'task', 'show', 'var', 'grt_signal_min_layer']

M2

['tool', 'openroad', 'task', 'show', 'var', 'grt_signal_max_layer']

M7

['tool', 'openroad', 'task', 'show', 'var', 'grt_clock_min_layer']

M2

['tool', 'openroad', 'task', 'show', 'var', 'grt_clock_max_layer']

M7

['tool', 'openroad', 'task', 'show', 'var', 'ant_iterations']

3

['tool', 'openroad', 'task', 'show', 'var', 'ant_margin']

0

['tool', 'openroad', 'task', 'show', 'var', 'ant_check']

true

['tool', 'openroad', 'task', 'show', 'var', 'ant_repair']

true

['tool', 'openroad', 'task', 'show', 'var', 'drt_disable_via_gen']

false

['tool', 'openroad', 'task', 'show', 'var', 'drt_via_repair_post_route']

false

['tool', 'openroad', 'task', 'show', 'var', 'fin_add_fill']

true

['tool', 'openroad', 'task', 'show', 'var', 'pex_corners']

typical

['tool', 'openroad', 'task', 'show', 'var', 'show_exit']

false

['tool', 'openroad', 'task', 'show', 'file', 'opensta_generic_sdc']

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

['tool', 'openroad', 'task', 'show', 'require']

  • asic,logiclib
  • option,stackup
  • library,asap7sc7p5t_rvt,asic,site,7p5t
  • pdk,asap7,aprtech,openroad,10M,7p5t,lef
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm
  • library,asap7sc7p5t_rvt,output,10M,lef
  • pdk,asap7,var,openroad,rclayer_signal,10M
  • pdk,asap7,var,openroad,rclayer_clock,10M
  • pdk,asap7,var,openroad,pin_layer_horizontal,10M
  • pdk,asap7,var,openroad,pin_layer_vertical,10M
  • tool,openroad,task,show,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,show,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,show,var,ord_enable_images
  • tool,openroad,task,show,var,ord_heatmap_bins_x
  • tool,openroad,task,show,var,ord_heatmap_bins_y
  • tool,openroad,task,show,var,sta_early_timing_derate
  • tool,openroad,task,show,var,sta_late_timing_derate
  • tool,openroad,task,show,var,sta_top_n_paths
  • tool,openroad,task,show,var,ifp_tie_separation
  • tool,openroad,task,show,var,ifp_snap_strategy
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_halo
  • tool,openroad,task,show,var,macro_place_halo
  • library,asap7sc7p5t_rvt,option,var,openroad_macro_place_channel
  • tool,openroad,task,show,var,macro_place_channel
  • tool,openroad,task,show,var,rtlmp_enable
  • tool,openroad,task,show,var,pdn_enable
  • tool,openroad,task,show,var,psm_enable
  • library,asap7sc7p5t_rvt,option,var,openroad_place_density
  • tool,openroad,task,show,var,place_density
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_global_place
  • tool,openroad,task,show,var,pad_global_place
  • tool,openroad,task,show,var,gpl_routability_driven
  • tool,openroad,task,show,var,gpl_timing_driven
  • tool,openroad,task,show,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,show,var,gpl_enable_skip_io
  • library,asap7sc7p5t_rvt,option,var,openroad_pad_detail_place
  • tool,openroad,task,show,var,pad_detail_place
  • tool,openroad,task,show,var,dpl_max_displacement
  • tool,openroad,task,show,var,dpl_disallow_one_site
  • tool,openroad,task,show,var,dpo_enable
  • tool,openroad,task,show,var,dpo_max_displacement
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_clock_buffer
  • tool,openroad,task,show,var,cts_clock_buffer
  • library,asap7sc7p5t_rvt,option,var,openroad_cts_distance_between_buffers
  • tool,openroad,task,show,var,cts_distance_between_buffers
  • tool,openroad,task,show,var,cts_cluster_diameter
  • tool,openroad,task,show,var,cts_cluster_size
  • tool,openroad,task,show,var,cts_balance_levels
  • tool,openroad,task,show,var,cts_obstruction_aware
  • tool,openroad,task,show,var,rsz_setup_slack_margin
  • tool,openroad,task,show,var,rsz_hold_slack_margin
  • tool,openroad,task,show,var,rsz_slew_margin
  • tool,openroad,task,show,var,rsz_cap_margin
  • tool,openroad,task,show,var,rsz_buffer_inputs
  • tool,openroad,task,show,var,rsz_buffer_outputs
  • tool,openroad,task,show,var,rsz_skip_pin_swap
  • tool,openroad,task,show,var,rsz_skip_gate_cloning
  • tool,openroad,task,show,var,rsz_repair_tns
  • tool,openroad,task,show,var,grt_use_pin_access
  • tool,openroad,task,show,var,grt_overflow_iter
  • tool,openroad,task,show,var,grt_macro_extension
  • tool,openroad,task,show,var,grt_allow_congestion
  • tool,openroad,task,show,var,grt_allow_overflow
  • tool,openroad,task,show,var,grt_signal_min_layer
  • tool,openroad,task,show,var,grt_signal_max_layer
  • tool,openroad,task,show,var,grt_clock_min_layer
  • tool,openroad,task,show,var,grt_clock_max_layer
  • tool,openroad,task,show,var,ant_iterations
  • tool,openroad,task,show,var,ant_margin
  • tool,openroad,task,show,var,ant_check
  • tool,openroad,task,show,var,ant_repair
  • tool,openroad,task,show,var,drt_disable_via_gen
  • tool,openroad,task,show,var,drt_via_repair_post_route
  • tool,openroad,task,show,var,fin_add_fill
  • tool,openroad,task,show,file,opensta_generic_sdc
  • tool,openroad,task,show,var,show_filepath

['tool', 'openroad', 'task', 'show', 'refdir']

tools/openroad/scripts, siliconcompiler

['tool', 'openroad', 'task', 'show', 'script']

sc_apr.tcl

['tool', 'openroad', 'task', 'show', 'threads']

2

3.15.12.2. Variables#

Parameters

Help

[..., 'var', 'show_filepath']

Task script variables specified as key value pairs. Variable names and value types must match the name and type of task and reference script consuming the variable.

[..., 'var', 'debug_level']

list of “tool key level” to enable debugging of OpenROAD

[..., 'var', 'ord_abstract_lef_bloat_factor']

Factor to apply when writing the abstract lef

[..., 'var', 'ord_abstract_lef_bloat_layers']

true/false, fill all layers when writing the abstract lef

[..., 'var', 'ord_enable_images']

true/false, enable generating images of the design at the end of the task

[..., 'var', 'ord_heatmap_bins_x']

number of X bins to use for heatmap image generation

[..., 'var', 'ord_heatmap_bins_y']

number of Y bins to use for heatmap image generation

[..., 'var', 'sta_early_timing_derate']

timing derating factor to use for hold corners

[..., 'var', 'sta_late_timing_derate']

timing derating factor to use for setup corners

[..., 'var', 'sta_top_n_paths']

number of paths to report timing for

[..., 'var', 'power_corner']

corner to use for power analysis

[..., 'var', 'sdc_buffer']

buffer cell to use when auto generating timing constraints

[..., 'var', 'ifp_tie_separation']

maximum distance between tie high/low cells in microns

[..., 'var', 'ifp_snap_strategy']

Snapping strategy to use when placing macros. Allowed values: none, site, manufacturing_grid

[..., 'var', 'ppl_arguments']

additional arguments to pass along to the pin placer.

[..., 'var', 'macro_place_halo']

macro halo to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'macro_place_channel']

macro channel to use when performing automated macro placement ([x, y] in microns)

[..., 'var', 'rtlmp_enable']

true/false, enables the RTLMP macro placement

[..., 'var', 'rtlmp_min_instances']

minimum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_max_instances']

maximum number of instances to use while clustering for macro placement

[..., 'var', 'rtlmp_min_macros']

minimum number of macros to use while clustering for macro placement

[..., 'var', 'rtlmp_max_macros']

maximum number of macros to use while clustering for macro placement

[..., 'var', 'pdn_enable']

true/false, when true enables power grid generation

[..., 'var', 'psm_enable']

true/false, when true enables IR drop analysis

[..., 'var', 'psm_skip_nets']

list of nets to skip power grid analysis on

[..., 'var', 'place_density']

global placement density (0.0 - 1.0)

[..., 'var', 'pad_global_place']

global placement cell padding in number of sites

[..., 'var', 'gpl_routability_driven']

true/false, when true global placement will consider the routability of the design

[..., 'var', 'gpl_timing_driven']

true/false, when true global placement will consider the timing performance of the design

[..., 'var', 'gpl_uniform_placement_adjustment']

percent of remaining area density to apply above uniform density (0.00 - 0.99)

[..., 'var', 'gpl_enable_skip_io']

true/false, when enabled a global placement is performed without considering the impact of the pin placements

[..., 'var', 'pad_detail_place']

detailed placement cell padding in number of sites

[..., 'var', 'dpl_max_displacement']

maximum cell movement in detailed placement in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'dpl_disallow_one_site']

true/false, disallow single site gaps in detail placement

[..., 'var', 'dpo_enable']

true/false, when true the detailed placement optimization will be performed

[..., 'var', 'dpo_max_displacement']

maximum cell movement in detailed placement optimization in microns, 0 will result in the tool default maximum displacement

[..., 'var', 'cts_clock_buffer']

buffer to use during clock tree synthesis

[..., 'var', 'cts_distance_between_buffers']

maximum distance between buffers during clock tree synthesis in microns

[..., 'var', 'cts_cluster_diameter']

clustering distance to use during clock tree synthesis in microns

[..., 'var', 'cts_cluster_size']

number of instances in a cluster to use during clock tree synthesis

[..., 'var', 'cts_balance_levels']

perform level balancing in clock tree synthesis

[..., 'var', 'cts_obstruction_aware']

make clock tree synthesis aware of obstructions

[..., 'var', 'rsz_setup_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_hold_slack_margin']

specifies the margin to apply when performing setup repair in library timing units

[..., 'var', 'rsz_slew_margin']

specifies the amount of margin to apply to max slew repairs in percent (0 - 100)

[..., 'var', 'rsz_cap_margin']

specifies the amount of margin to apply to max capacitance repairs in percent (0 - 100)

[..., 'var', 'rsz_buffer_inputs']

true/false, when true enables adding buffers to the input ports

[..., 'var', 'rsz_buffer_outputs']

true/false, when true enables adding buffers to the output ports

[..., 'var', 'rsz_skip_pin_swap']

true/false, skip pin swap optimization

[..., 'var', 'rsz_skip_gate_cloning']

true/false, skip gate cloning optimization

[..., 'var', 'rsz_repair_tns']

percentage of violating nets to attempt to repair (0 - 100)

[..., 'var', 'grt_use_pin_access']

true/false, when true perform pin access before global routing

[..., 'var', 'grt_overflow_iter']

maximum number of iterations to use in global routing when attempting to solve overflow

[..., 'var', 'grt_macro_extension']

macro extension distance in number of gcells, this can be useful when the detailed router needs additional space to avoid DRCs

[..., 'var', 'grt_allow_congestion']

true/false, when true allow global routing to finish with congestion

[..., 'var', 'grt_allow_overflow']

true/false, when true allow global routing to finish with overflow

[..., 'var', 'grt_signal_min_layer']

minimum layer to use for global routing of signals

[..., 'var', 'grt_signal_max_layer']

maximum layer to use for global routing of signals

[..., 'var', 'grt_clock_min_layer']

minimum layer to use for global routing of clock nets

[..., 'var', 'grt_clock_max_layer']

maximum layer to use for global routing of clock nets

[..., 'var', 'ant_iterations']

maximum number of repair iterations to use during antenna repairs

[..., 'var', 'ant_margin']

adds a margin to the antenna ratios (0 - 100)

[..., 'var', 'ant_check']

true/false, flag to indicate whether to check for antenna violations

[..., 'var', 'ant_repair']

true/false, flag to indicate whether to repair antenna violations

[..., 'var', 'drt_disable_via_gen']

true/false, when true turns off via generation in detailed router and only uses the specified tech vias

[..., 'var', 'drt_process_node']

when set this specifies to the detailed router the specific process node

[..., 'var', 'drt_via_in_pin_bottom_layer']

TODO

[..., 'var', 'drt_via_in_pin_top_layer']

TODO

[..., 'var', 'drt_repair_pdn_vias']

TODO

[..., 'var', 'drt_via_repair_post_route']

true/false, when true performs a via ripup step after detailed routing to remove power vias that are causing DRC violations

[..., 'var', 'detailed_route_default_via']

list of default vias to use for detail routing

[..., 'var', 'detailed_route_unidirectional_layer']

list of layers to treat as unidirectional regardless of what the tech lef specifies

[..., 'var', 'fin_add_fill']

true/false, when true enables adding fill, if enabled by the PDK, to the design

[..., 'var', 'pex_corners']

list of parasitic extraction corners to use

[..., 'var', 'show_exit']

Task script variables specified as key value pairs. Variable names and value types must match the name and type of task and reference script consuming the variable.

3.15.12.3. Files#

Parameters

Help

[..., 'file', 'global_connect']

list of files to use for specifying global connections

[..., 'file', 'ifp_tapcell']

tap cell insertion script

[..., 'file', 'padring']

script to generate a padring using ICeWall in OpenROAD

[..., 'file', 'ppl_constraints']

script constrain pin placement

[..., 'file', 'pdn_config']

list of files to use for power grid generation

[..., 'file', 'parasitics']

file used to specify the parasitics for estimation

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.16. opensta#

OpenSTA is a gate level static timing verifier.

Documentation: The-OpenROAD-Project/OpenSTA

Sources: The-OpenROAD-Project/OpenSTA

Installation: The-OpenROAD-Project/OpenSTA (also installed with OpenROAD)

Setup file: __init__.py

3.16.1. Data sources#

Package

Specifications

lambdapdk

  • Path: https://github.com/siliconcompiler/lambdapdk/archive/refs/tags/

  • Reference: v0.1.35

siliconcompiler

  • Path: python://siliconcompiler

3.16.2. report_libraries#

Report information about the timing libraries.

Setup file: report_libraries.py

3.16.2.1. Configuration#

Keypath

Value

['tool', 'opensta', 'task', 'report_libraries', 'regex', 'warnings']

^\[WARNING|^Warning

['tool', 'opensta', 'task', 'report_libraries', 'regex', 'errors']

^\[ERROR

['tool', 'opensta', 'task', 'report_libraries', 'require']

  • asic,logiclib
  • library,asap7sc7p5t_rvt,output,slow,nldm
  • library,asap7sc7p5t_rvt,output,fast,nldm
  • library,asap7sc7p5t_rvt,output,typical,nldm

['tool', 'opensta', 'task', 'report_libraries', 'refdir']

tools/opensta/scripts, siliconcompiler

['tool', 'opensta', 'task', 'report_libraries', 'script']

sc_report_libraries.tcl

['tool', 'opensta', 'task', 'report_libraries', 'threads']

2

3.16.3. timing#

Generate a static timing reports.

Setup file: timing.py

3.16.3.1. Configuration#

3.16.3.2. Variables#

Parameters

Help

[..., 'var', 'top_n_paths']

number of paths to report timing for

[..., 'var', 'timing_mode']

timing mode to use

3.16.3.3. Files#

Parameters

Help

[..., 'file', 'opensta_generic_sdc']

Paths to user supplied files mapped to keys. Keys and filetypes must match what’s expected by the task/reference script consuming the file.

3.17. slang#

slang is a software library that provides various components for lexing, parsing, type checking, and elaborating SystemVerilog code. It comes with an executable tool that can compile and lint any SystemVerilog project, but it is also intended to be usable as a front end for synthesis tools, simulators, linters, code editors, and refactoring tools.

Documentation: https://sv-lang.com/

Sources: MikePopoloski/slang

Installation: https://sv-lang.com/building.html

Setup file: __init__.py

3.17.1. lint#

3.17.1.1. Configuration#

3.18. surelog#

Surelog is a SystemVerilog pre-processor, parser, elaborator, and UHDM compiler that provides IEEE design and testbench C/C++ VPI and a Python AST API.

Documentation: chipsalliance/Surelog

Sources: chipsalliance/Surelog

Installation: chipsalliance/Surelog

Setup file: __init__.py

Keypath

Value

['tool', 'surelog', 'exe']

surelog

['tool', 'surelog', 'path']

/home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/envs/stable/lib/python3.11/site-packages/surelog/bin, [None]

['tool', 'surelog', 'vswitch']

--version

['tool', 'surelog', 'version']

>=1.51

3.18.1. parse#

Import verilog files

Setup file: parse.py

3.19. sv2v#

sv2v converts SystemVerilog (IEEE 1800-2017) to Verilog (IEEE 1364-2005), with an emphasis on supporting synthesizable language constructs. The primary goal of this project is to create a completely free and open-source tool for converting SystemVerilog to Verilog. While methods for performing this conversion already exist, they generally either rely on commercial tools, or are limited in scope.

Documentation: zachjs/sv2v

Sources: zachjs/sv2v

Installation: zachjs/sv2v

Setup file: sv2v.py

3.19.1. convert#

Convert SystemVerilog to verilog

Setup file: convert.py

3.20. verilator#

Verilator is a free and open-source software tool which converts Verilog (a hardware description language) to a cycle-accurate behavioral model in C++ or SystemC.

All Verilator tasks may consume input either from a single pickled Verilog file (inputs/<design>.v) generated by a preceding task, or if that file does not exist, through the following keypaths:

For all tasks, this driver runs Verilator using the -sv switch to enable parsing a subset of SystemVerilog features.

Documentation: https://verilator.org/guide/latest

Sources: verilator/verilator

Installation: https://verilator.org/guide/latest/install.html

Setup file: verilator.py

3.20.1. Data sources#

Package

Specifications

lambdapdk

  • Path: https://github.com/siliconcompiler/lambdapdk/archive/refs/tags/

  • Reference: v0.1.35

3.20.2. compile#

Compiles Verilog and C/C++ sources into an executable. In addition to the standard RTL inputs, this task reads C/C++ sources from ['input', 'hll', 'c']. Outputs an executable in outputs/<design>.vexe.

Setup file: compile.py

3.20.2.1. Configuration#

3.20.2.2. Variables#

Parameters

Help

[..., 'var', 'enable_assert']

true/false, when true assertions are enabled in Verilator.

[..., 'var', 'mode']

defines compilation mode for Verilator. Valid options are ‘cc’ for C++, or ‘systemc’ for SystemC.

[..., 'var', 'trace']

if true, enables trace generation.

[..., 'var', 'trace_type']

specifies type of wave file to create when [trace] is set. Valid options are ‘vcd’ or ‘fst’. Defaults to ‘vcd’.

[..., 'var', 'cflags']

flags to provide to the C++ compiler invoked by Verilator

[..., 'var', 'ldflags']

flags to provide to the linker invoked by Verilator

[..., 'var', 'pins_bv']

controls datatypes used to represent SystemC inputs/outputs. See –pins-bv in Verilator docs for more info.

3.20.2.3. Files#

Parameters

Help

[..., 'file', 'config']

Verilator configuration file

3.20.3. lint#

Lints Verilog source. Results of linting can be programmatically queried using errors/warnings metrics.

Setup file: lint.py

3.20.3.1. Configuration#

3.20.3.2. Variables#

Parameters

Help

[..., 'var', 'enable_assert']

true/false, when true assertions are enabled in Verilator.

3.20.3.3. Files#

Parameters

Help

[..., 'file', 'config']

Verilator configuration file

3.20.4. parse#

Lints Verilog source. Results of linting can be programmatically queried using errors/warnings metrics.

Setup file: parse.py

3.20.4.1. Configuration#

3.20.4.2. Variables#

Parameters

Help

[..., 'var', 'enable_assert']

true/false, when true assertions are enabled in Verilator.

3.20.4.3. Files#

Parameters

Help

[..., 'file', 'config']

Verilator configuration file

3.21. vivado#

Vivado is an FPGA programming tool suite from Xilinx used to program Xilinx devices.

Documentation: https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vivado.html

Setup file: vivado.py

3.21.1. Data sources#

Package

Specifications

siliconcompiler_data

  • Path: git+https://github.com/siliconcompiler/siliconcompiler

  • Reference: v0.28.2