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

File: __init__.py

3.1.1. convert#

Mixin task for tools that drive ccache, pointing it at the tool cache.

Verilator’s verilated.mk sets OBJCACHE ?= ccache and invokes it unconditionally, so every C++ build it drives shells out to ccache whether or not anyone asked for it – including the ones a tool starts on its own behalf, the way bambu does when it simulates. Left to itself ccache writes to ~/.cache/ccache: outside [option,cachedir], so nothing SiliconCompiler manages ever sees it, and not among the volumes mounted into a task container, so a containerised build starts from a cold cache every single time. Task.cachedir is inside the mounted cache directory and is shared across designs, which is the whole point of a compiler cache. ccache creates the directory itself and enforces its own size cap, so there is nothing to set up and nothing to collect.

Intended to be used via multiple inheritance alongside a concrete task class, and listed first: the check below reads the environment the rest of the chain assembled, so it has to run last.

File: convert.py

3.1.1.1. Methods#

ConvertTask.add_bambu_cnoparse(path: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a C file bambu compiles for co-simulation but does not synthesize.

Parameters:
  • path – Path(s) to the C file(s).

  • dataroot – The dataroot used to resolve relative paths.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

  • clobber – If True, replaces the list instead of appending to it.

ConvertTask.add_bambu_fileinputdata(path: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a file the specification refers to, such as an IP’s Verilog source.

Parameters:
  • path – Path(s) to the file(s).

  • dataroot – The dataroot used to resolve relative paths.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

  • clobber – If True, replaces the list instead of appending to it.

ConvertTask.add_bambu_testbenchfileset(library: str, fileset: str, clobber: bool = False) → None[source]#

Adds a fileset holding the testbench to simulate against.

The fileset carries either a testbench XML or a C/C++ file whose main() calls the top-level function; the MLIR front ends emit one of the latter alongside the kernel. Its files are kept out of the sources bambu synthesizes, so the testbench can sit in a fileset the project selected without being compiled into the design.

Parameters:
  • library – Name of the library owning the fileset.

  • fileset – Name of the fileset.

  • clobber – If True, overwrites the existing list. Defaults to False.

ConvertTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ConvertTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ConvertTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ConvertTask.set_bambu_compiler(compiler: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the front end compiler bambu reads its inputs with.

bambu bundles several clang front ends and picks one by name, e.g. I386_CLANG16. Which one matters for LLVM IR input: it has to be new enough to parse the IR the front end produced.

Parameters:
  • compiler – The compiler name. An empty string leaves bambu to pick.

  • step – The step to associate with this setting. Defaults to None.

  • index – The index to associate with this setting. Defaults to None.

ConvertTask.set_bambu_componentslibrary(value: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables exporting Bambu’s standard RTL components as a separate library.

Parameters:
  • value – True to export the components library.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

ConvertTask.set_bambu_constraintsfile(path: str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None) → None[source]#

Sets the Bambu constraints XML.

Parameters:
  • path – Path to the constraints XML.

  • dataroot – The dataroot used to resolve relative paths.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

ConvertTask.set_bambu_experimentalsetup(setup: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the Bambu experimental setup.

An experimental setup is a named preset of the optimization and scheduling options bambu synthesizes with; BAMBU-BALANCED-MP is the one the SODA Synthesizer uses.

Parameters:
  • setup – The setup name. An empty string leaves bambu on its default.

  • step – The step to associate with this setting. Defaults to None.

  • index – The index to associate with this setting. Defaults to None.

ConvertTask.set_bambu_memorychannels(channels: int, step: str | None = None, index: str | None = None) → None[source]#

Sets the number of memory channels for the Bambu synthesizer.

This method configures the ‘memorychannels’ variable within the Bambu tool flow. It’s used to specify the number of independent memory channels the synthesized hardware should have.

Parameters:
  • channels – The number of memory channels to configure.

  • step – The specific synthesis step to which this setting applies. If None, it applies globally. Defaults to None.

  • index – The index for the step, used if a step can have multiple configurations. Defaults to None.

ConvertTask.set_bambu_memorypolicy(policy: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the Bambu memory allocation policy.

The policy decides how the kernel’s arrays are mapped onto memory, which is the choice that most changes what the generated RTL looks like: the default NO_BRAM leaves them in external memory the accelerator reads through its channels, while ALL_BRAM puts them in block RAM inside it.

Parameters:
  • policy – The policy name.

  • step – The step to associate with this setting. Defaults to None.

  • index – The index to associate with this setting. Defaults to None.

ConvertTask.set_bambu_printdot(value: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables dumping the tool’s internal graphs as graphviz .dot files.

Parameters:
  • value – True to dump the graphs.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

ConvertTask.set_bambu_simulate(value: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables simulating the generated RTL.

Simulation is what produces the cycle counts; without it bambu reports its area and timing estimates only. It needs a testbench, so setting this without one is an error rather than a silent no-op.

Parameters:
  • value – Whether to simulate.

  • step – The step to associate with this setting. Defaults to None.

  • index – The index to associate with this setting. Defaults to None.

ConvertTask.set_bambu_simulator(simulator: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the simulator bambu drives.

Parameters:
  • simulator – One of ‘modelsim’, ‘xsim’ or ‘verilator’. bambu names these in upper case on its command line; the conversion happens on the way out.

  • step – The step to associate with this setting. Defaults to None.

  • index – The index to associate with this setting. Defaults to None.

ConvertTask.set_bambu_technologyfile(path: str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None) → None[source]#

Sets the Bambu technology XML.

Parameters:
  • path – Path to the technology XML, e.g. an IP’s module library.

  • dataroot – The dataroot used to resolve relative paths.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

ConvertTask.set_bambu_verilatorparallel(threads: int, step: str | None = None, index: str | None = None) → None[source]#

Sets how many threads verilator simulates with.

Only reaches the command line when ‘simulator’ is verilator, which is the only simulator bambu passes this to.

Parameters:
  • threads – Thread count, or 0 to emit the bare flag and let verilator decide.

  • step – The specific synthesis step to which this setting applies.

  • index – The specific index of the step.

3.1.1.2. Variables#

Parameters

Type

Help

[...,var,cnoparse]

[file]

C files bambu links into the testbench but does not synthesize, passed as –C-no-parse. Used by IP integration for the co-simulation half of an instrumentation IP.

[...,var,compiler]

str

Front end compiler bambu uses to read its inputs (e.g. I386_CLANG16). Empty leaves bambu to pick one.

[...,var,componentslibrary]

bool

export Bambu’s standard RTL components as a separate library, which IP integration needs so the bound-in components resolve.

[...,var,constraintsfile]

file

Bambu constraints XML, the second positional input in ‘bambu <source> [constraints] [technology]’.

[...,var,experimentalsetup]

str

Bambu experimental setup, which selects the preset of optimizations and scheduling options to synthesize with (e.g. BAMBU-BALANCED-MP). Empty leaves bambu on its own default.

[...,var,fileinputdata]

[file]

extra files the specification refers to, passed as –file-input-data. For IP integration these are the Verilog sources of the components bound in from the technology XML.

[...,var,memorychannels]

int<1..>

Number of memory channels available

[...,var,memorypolicy]

str

Bambu memory allocation policy, which decides how the kernel’s arrays are mapped onto memory (e.g. NO_BRAM, ALL_BRAM, EXT_PIPELINED_BRAM).

[...,var,printdot]

bool

dump the tool’s internal graphs as graphviz .dot files. Useful for seeing what the scheduler and binder did, and verbose enough that it is off by default.

[...,var,simulate]

bool

simulate the generated RTL. This is what produces the cycle counts; without it bambu reports area and timing estimates only. Needs a testbench.

[...,var,simulator]

enum

simulator bambu drives when ‘simulate’ is set. Allowed values: modelsim, verilator, xsim

[...,var,technologyfile]

file

Bambu technology XML describing modules to bind against, the third positional input. This is what an instrumentation IP’s module library is.

[...,var,testbench_fileset]

[(str,str)]

filesets holding the testbench to simulate against: either a testbench XML, or a C/C++ file whose main() calls the top-level function. Its files are excluded from the sources bambu synthesizes, so the testbench can live in a fileset the project has selected.

[...,var,verilatorparallel]

int<0..>

threads verilator simulates with, when ‘simulator’ is verilator. 0 emits the bare flag and lets verilator choose.

3.1.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str bambu

[...,output]

[file]

top.v

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,bambu,task,convert,var,componentslibrary
  • tool,bambu,task,convert,var,memorychannels
  • tool,bambu,task,convert,var,memorypolicy
  • tool,bambu,task,convert,var,printdot
  • tool,bambu,task,convert,var,simulate

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,componentslibrary]

bool False

[...,var,memorychannels]

int<1..> 1

[...,var,memorypolicy]

str NO_BRAM

[...,var,printdot]

bool False

[...,var,simulate]

bool False

[...,var,simulator]

enum verilator

[...,var,verilatorparallel]

int<0..> 0

[...,version]

[str] >=2024.03

[...,vswitch]

[str] --version

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

File: __init__.py

3.2.1. convert#

A schema class that defines the parameters and methods for a single task in a compilation flow.

This class provides the framework for setting up, running, and post-processing a tool. It includes methods for managing executables, versions, runtime arguments, and file I/O.

File: convert.py

3.2.1.1. Configuration#

Keypath

Type

Value

[...,exe]

str bsc

[...,output]

[file]
  • top.v

  • top.dot

[...,require]

{str}
  • option,design
  • option,fileset

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=2021.07

[...,vswitch]

[str] -v

3.3. builtin#

Builtin tools for SiliconCompiler

File: __init__.py

3.3.1. join#

Merges outputs from a list of input tasks.

File: join.py

3.3.1.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.2. 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.

File: maximum.py

3.3.2.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.3. 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.

File: minimum.py

3.3.3.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.4. 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.

File: mux.py

3.3.4.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.5. nop#

A no-operation that passes inputs to outputs.

File: nop.py

3.3.5.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.6. 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: >, <, >=, <=, ==

File: verify.py

3.3.6.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.7. importfiles#

A built-in task to import (copy) files and directories.

This task provides a mechanism to copy specified files and directories from their source locations into the current task’s output directory (outputs/), making them available for subsequent steps in the tool flow.

File: importfiles.py

3.3.7.1. Methods#

ImportFilesTask.add_import_dir(directory: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds one or more directories to the list of items to import.

Parameters:
  • directory (Union[List[Union[str, Path]], str, Path]) – The path(s) to the directory/directories to be imported.

  • dataroot (Optional[str]) – The dataroot to use for resolving relative paths. If None, the active dataroot is used. Defaults to None.

  • step (Optional[str]) – The step to associate this directory with. Defaults to the current step.

  • index (Optional[str]) – The index to associate this directory with. Defaults to the current index.

  • clobber (bool) – If True, existing directory entries for the specified step/index will be overwritten. If False, the new directory/directories will be appended. Defaults to False.

ImportFilesTask.add_import_file(file: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds one or more files to the list of items to import.

Parameters:
  • file (Union[List[Union[str, Path]], str, Path]) – The path(s) to the file(s) to be imported.

  • dataroot (Optional[str]) – The dataroot to use for resolving relative paths. If None, the active dataroot is used. Defaults to None.

  • step (Optional[str]) – The step to associate this file with. Defaults to the current step.

  • index (Optional[str]) – The index to associate this file with. Defaults to the current index.

  • clobber (bool) – If True, existing file entries for the specified step/index will be overwritten. If False, the new file(s) will be appended. Defaults to False.

3.3.7.2. Variables#

Parameters

Type

Help

[...,var,dir]

[dir]

input directories to import

[...,var,file]

[file]

input files to import

3.3.7.3. Configuration#

Keypath

Type

Value

[...,output]

[file]
  • import.txt

  • directory

[...,require]

{str}
  • tool,builtin,task,importfiles,var,dir
  • tool,builtin,task,importfiles,var,file

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,dir]

[dir]

/directory

[...,var,file]

[file]

import.txt

3.3.8. filter#

A task for filtering files based on specified glob patterns.

This task determines which files to “keep” from a given set of inputs, passing only those that match the criteria to the outputs.

File: filter.py

3.3.8.1. Methods#

FilterTask.add_filter_keep(keep: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds one or more glob patterns for files to keep.

Parameters:
  • keep (Union[List[str], str]) – A single glob pattern or a list of glob patterns to identify which files should be kept.

  • step (Optional[str], optional) – The specific workflow step to apply this filter to. Defaults to None.

  • index (Optional[str], optional) – The specific index within the step to apply this filter to. Defaults to None.

  • clobber (bool, optional) – If True, existing ‘keep’ patterns are overwritten with the new value(s). If False, the new patterns are appended to the existing list. Defaults to False.

3.3.8.2. Variables#

Parameters

Type

Help

[...,var,keep]

[str]

Glob of files to keep

3.3.8.3. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.v

[...,output]

[file]

<top>.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

3.3.9. wait#

A wait task that stalls the flow until all inputs are available.

File: wait.py

3.3.9.1. Methods#

static Wait.serialize_tool_tasks(flowgraph: Flowgraph, tool_name: str) → None[source]#

Adds wait tasks between nodes of the same tool that could execute in parallel.

This method inserts Wait task nodes between nodes that use the same tool, but only when those nodes could execute in parallel (i.e., there’s no dependency path between them). This ensures that tool instances don’t execute in parallel, while avoiding unnecessary wait tasks for nodes that already have a dependency relationship.

The method modifies the flowgraph in-place by:

  1. Finding all nodes that use the specified tool

  2. For each pair of tool nodes with no dependency path, inserting a wait task

  3. Using naming convention: {target_step}.wait (named after the node being delayed)

Parameters:
  • flowgraph – The flowgraph to modify.

  • tool_name (str) – The name of the tool (e.g., ‘openroad’, ‘yosys’). All nodes using this tool will be serialized.

Raises:

ValueError – If the flowgraph is invalid or tool_name is empty.

Example

>>> flow = Flowgraph("myflow")
>>> flow.node("place1", openroad.Place, index=0)
>>> flow.node("syn", yosys.Syn, index=0)
>>> flow.node("place2", openroad.Place, index=1)
>>> flow.edge("place1", "syn")
>>> flow.edge("syn", "place2")
>>> Wait.serialize_tool_tasks(flow, "openroad")
>>> # No wait task added - place1 and place2 already have a dependency path

3.3.9.2. Configuration#

Keypath

Type

Value

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

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.

File: __init__.py

3.4.1. convert#

A schema class that defines the parameters and methods for a single task in a compilation flow.

This class provides the framework for setting up, running, and post-processing a tool. It includes methods for managing executables, versions, runtime arguments, and file I/O.

File: convert.py

3.4.1.1. Methods#

ConvertTask.add_chisel_argument(argument: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds arguments for the chisel build.

Parameters:
  • argument (Union[str, List[str]]) – The argument(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

ConvertTask.set_chisel_application(application: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the application name of the chisel program.

Parameters:
  • application (str) – The application name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ConvertTask.set_chisel_targetdir(targetdir: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the output target directory name.

Parameters:
  • targetdir (str) – The target directory name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.4.1.2. Data root#

Root

Specifications

chisel-tool

  • Path: python://siliconcompiler/tools/chisel

3.4.1.3. Variables#

Parameters

Type

Help

[...,var,application]

str

Application name of the chisel program

[...,var,argument]

[str]

Arguments for the chisel build

[...,var,targetdir]

str

Output target directory name

3.4.1.4. Configuration#

Keypath

Type

Value

[...,exe]

str sbt

[...,output]

[file]

top.v

[...,refdir]

[dir]

template, chisel-tool

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,chisel,task,convert,var,targetdir

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,targetdir]

str chisel-output

[...,version]

[str] >=1.5.5

[...,vswitch]

[str] --version

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.

File: __init__.py

3.5.1. exec_input#

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

File: exec_input.py

3.5.1.1. Configuration#

Keypath

Type

Value

[...,input]

[file]

<top>.exe

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

3.6. genfasm#

Generate a FSAM file from the output of VPR

Documentation: https://docs.verilogtorouting.org/en/latest/utils/fasm/

Sources: verilog-to-routing/vtr-verilog-to-routing

File: __init__.py

3.6.1. bitstream#

Generates a bitstream

File: bitstream.py

3.6.1.1. Methods#

BitstreamTask.auto_constraints_file()[source]#

3.6.1.2. Variables#

Parameters

Type

Help

[...,var,enable_images]

bool

true/false generate images of the design at the end of the task

[...,var,enable_timing_analysis]

bool

enable timing analysis

[...,var,router_lookahead]

enum

The lookahead the router will use to estimate cost. Allowed values: classic, compressed_map, extended_map, map, simple

[...,var,timing_paths]

int<1..>

number of timing paths to report

[...,var,timing_report_type]

enum

level of detail for timing reports: vpr –timing_report_detail. Allowed values: aggregated, debug, detailed, netlist

3.6.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str genfasm

[...,input]

[file]
  • top.route

  • top.blif

  • top.net

  • top.place

[...,output]

[file]

top.fasm

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] ^Warning

[...,require]

{str}
  • library,z1000,tool,vpr,archfile
  • library,z1000,tool,vpr,channelwidth
  • library,z1000,tool,vpr,clock_model
  • library,z1000,tool,vpr,devicecode
  • library,z1000,tool,vpr,graphfile
  • library,z1000,tool,vpr,router_lookahead
  • tool,genfasm,task,bitstream,var,enable_timing_analysis
  • tool,genfasm,task,bitstream,var,timing_paths
  • tool,genfasm,task,bitstream,var,timing_report_type

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,enable_images]

bool True

[...,var,enable_timing_analysis]

bool False

[...,var,timing_paths]

int<1..> 20

[...,var,timing_report_type]

enum aggregated

[...,version]

[str] >=v8.0.0-15021

[...,vswitch]

[str] --version

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

File: __init__.py

3.7.1. convert#

Imports VHDL and converts it to verilog

File: convert.py

3.7.1.1. Methods#

ConvertTask.set_ghdl_usefsynopsys(value: bool, step: str | None = None, index: str | None = None)[source]#

Adds the -fsynopsys flag to the GHDL command.

Parameters:
  • value (bool) – Whether to add the flag.

  • step (str, optional) – The step to associate with this setting.

  • index (str, optional) – The index to associate with this setting.

ConvertTask.set_ghdl_uselatches(value: bool, step: str | None = None, index: str | None = None)[source]#

Adds the –latches flag to the GHDL command.

Parameters:
  • value (bool) – Whether to add the flag.

  • step (str, optional) – The step to associate with this setting.

  • index (str, optional) – The index to associate with this setting.

ConvertTask.set_usefsynopsys(value: bool)[source]#

Deprecated: use set_ghdl_usefsynopsys instead.

ConvertTask.set_uselatches(value: bool)[source]#

Deprecated: use set_ghdl_uselatches instead.

3.7.1.2. Variables#

Parameters

Type

Help

[...,var,use_fsynopsys]

bool

add the -fsynopsys flag

[...,var,use_latches]

bool

add the –latches flag

3.7.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str ghdl

[...,output]

[file]

top.v

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,ghdl,task,convert,var,use_fsynopsys
  • tool,ghdl,task,convert,var,use_latches

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum output

[...,stdout,suffix]

str v

[...,threads]

int<1..> 1

[...,var,use_fsynopsys]

bool False

[...,var,use_latches]

bool False

[...,version]

[str] >=4.0.0-dev

[...,vswitch]

[str] --version

3.8. graphviz#

Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains.

File: __init__.py

3.8.1. show#

Show a graphviz dot file

File: show.py

3.8.1.1. Methods#

ShowTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ShowTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ShowTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ShowTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ShowTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ShowTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ShowTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ShowTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ShowTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ShowTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ShowTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ShowTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ShowTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

3.8.1.2. Variables#

Parameters

Type

Help

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

3.8.1.3. Configuration#

Keypath

Type

Value

[...,output]

[file]

top.png

[...,require]

{str}
  • tool,graphviz,task,show,var,showexit
  • tool,graphviz,task,show,var,showfilepath
  • tool,graphviz,task,show,var,showfiletype

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,showexit]

bool False

[...,var,showfiletype]

str xdot

3.8.2. screenshot#

Generate a screenshot of a dot file

File: screenshot.py

3.8.2.1. Methods#

ScreenshotTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ScreenshotTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ScreenshotTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ScreenshotTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ScreenshotTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ScreenshotTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ScreenshotTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ScreenshotTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ScreenshotTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ScreenshotTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ScreenshotTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ScreenshotTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ScreenshotTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

3.8.2.2. Variables#

Parameters

Type

Help

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

3.8.2.3. Configuration#

Keypath

Type

Value

[...,output]

[file]

top.png

[...,require]

{str}
  • tool,graphviz,task,screenshot,var,showexit
  • tool,graphviz,task,screenshot,var,showfilepath
  • tool,graphviz,task,screenshot,var,showfiletype

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,showexit]

bool True

[...,var,showfiletype]

str xdot

3.9. gtkwave#

GTKWave is a fully featured GTK+ based wave viewer for Unix, Win32, and Mac OSX which reads LXT, LXT2, VZT, FST, and GHW files as well as standard Verilog VCD/EVCD files and allows their viewing.

Documentation: https://gtkwave.github.io/gtkwave/

Sources: gtkwave/gtkwave

Installation: gtkwave/gtkwave

File: __init__.py

3.9.1. show#

Show a VCD or FST file.

File: show.py

3.9.1.1. Methods#

ShowTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ShowTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ShowTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ShowTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ShowTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ShowTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ShowTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ShowTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ShowTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ShowTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ShowTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ShowTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ShowTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

3.9.1.2. Data root#

Root

Specifications

gtkwave

  • Path: python://siliconcompiler/tools/gtkwave

3.9.1.3. Variables#

Parameters

Type

Help

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

3.9.1.4. Configuration#

Keypath

Type

Value

[...,exe]

str gtkwave

[...,format]

enum tcl

[...,refdir]

[dir]

scripts, gtkwave

[...,require]

{str}
  • tool,gtkwave,task,show,var,showexit
  • tool,gtkwave,task,show,var,showfilepath
  • tool,gtkwave,task,show,var,showfiletype

[...,script]

[file]

sc_show.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,showexit]

bool False

[...,var,showfiletype]

str fst

[...,version]

[str] >=3.3.116

[...,vswitch]

[str] --version

3.10. 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

File: __init__.py

3.10.1. exec_cocotb#

Run a cocotb testbench against a compiled Icarus Verilog simulation.

This task takes a compiled .vvp file from the icarus compile task and executes it with the cocotb VPI module loaded, enabling Python-based testbenches to interact with the simulation.

The task requires cocotb to be installed in the Python environment. Test modules are specified by adding Python files to the fileset using the “python” filetype.

File: cocotb_exec.py

3.10.1.1. Methods#

CocotbExecTask.add_plusarg(name: str, value: str, step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Appends a single plusarg to the existing list.

Parameters:
  • name (str) – The plusarg name.

  • value (str) – The plusarg value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str or int, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the current value. Defaults to False.

CocotbExecTask.get_plusargs(step: str | None = None, index: int | str | None = None) → List[Tuple[str, str]][source]#

Returns the current list of plusargs.

Parameters:
  • step (str, optional) – The specific step to retrieve configuration from.

  • index (str or int, optional) – The specific index to retrieve configuration from.

Returns:

List of (name, value) plusarg tuples.

Return type:

list

CocotbExecTask.set_cocotb_randomseed(seed: int, step: str | None = None, index: int | str | None = None)[source]#

Sets the random seed for cocotb tests.

Parameters:
  • seed (int) – The random seed value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.10.1.2. Variables#

Parameters

Type

Help

[...,var,cocotb_random_seed]

int

Random seed for cocotb test reproducibility. If not set, cocotb will generate a random seed.

[...,var,plusargs]

[(str,str)]

List of plusarg (name, value) tuples to pass to the tool.

3.10.1.3. Configuration#

Keypath

Type

Value

[...,env,COCOTB_RESULTS_FILE]

str outputs/results.xml

[...,env,COCOTB_TEST_MODULES]

str

[...,env,COCOTB_TOPLEVEL]

str top

[...,env,TOPLEVEL_LANG]

str verilog

[...,exe]

str vvp

[...,input]

[file]

top.vvp

[...,output]

[file]

results.xml

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,icarus,task,exec_cocotb,env,COCOTB_RESULTS_FILE
  • tool,icarus,task,exec_cocotb,env,COCOTB_TEST_MODULES
  • tool,icarus,task,exec_cocotb,env,COCOTB_TOPLEVEL
  • tool,icarus,task,exec_cocotb,env,TOPLEVEL_LANG

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,version]

[str] >=10.3

[...,vswitch]

[str] -V

3.10.2. compile#

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

File: compile.py

3.10.2.1. Methods#

CompileTask.set_icarus_timescale(unit: str, precision: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the default simulation timescale.

When set, an Icarus command file containing +timescale+<unit>/<precision> is auto-generated and passed to iverilog via -f. This sets the default time unit and precision for modules that do not specify their own timescale directive.

Parameters:
  • unit (str) – The time unit (e.g. “1ns”).

  • precision (str) – The time precision (e.g. “1ps”).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CompileTask.set_icarus_veriloggeneration(gen: str, step: str | None = None, index: str | None = None)[source]#

Sets the Verilog language generation for Icarus.

Parameters:
  • gen (str) – The Verilog generation to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CompileTask.set_trace_enabled(enabled: bool = True, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables waveform tracing.

When enabled, a VCD dump module is auto-generated and compiled with the design. The waveform file will be written to reports/<topmodule>.vcd.

Parameters:
  • enabled (bool) – Whether to enable tracing. Defaults to True.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.10.2.2. Variables#

Parameters

Type

Help

[...,var,timescale]

(str,str)

default simulation timescale as a (unit, precision) pair (e.g. (“1ns”, “1ps”)). When set, an Icarus command file with the corresponding “+timescale+” directive is auto-generated and passed to iverilog.

[...,var,trace]

bool

Enable waveform tracing. When enabled, a VCD dump module is auto-generated and compiled with the design to capture all signals.

[...,var,verilog_generation]

enum

Select Verilog language generation for Icarus to use. Legal values are “1995”, “2001”, “2001-noconfig”, “2005”, “2005-sv”, “2009”, or “2012”. See the corresponding “-g” flags in the Icarus manual for more “”information. Allowed values: 1995, 2001, 2001-noconfig, 2005, 2005-sv, 2009, 2012

3.10.2.3. Configuration#

Keypath

Type

Value

[...,exe]

str iverilog

[...,output]

[file]

top.vvp

[...,require]

{str}
  • option,design
  • option,fileset

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,trace]

bool False

[...,version]

[str] >=10.3

[...,vswitch]

[str] -V

3.11. 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

File: __init__.py

3.11.1. bitstream#

Generate a bitstream for the ICE40 FPGA

File: bitstream.py

3.11.1.1. Configuration#

Keypath

Type

Value

[...,exe]

str icepack

[...,input]

[file]

top.asc

[...,output]

[file]

top.bit

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

3.12. keplerformal#

Kepler-Formal is a logic equivalence checking (LEC) tool that operates on verilog and the naja interchange format (najaeda/naja-if). It checks gate-level netlists combinationally, and RTL against a netlist sequentially.

Sources: keplertech/kepler-formal

File: __init__.py

3.12.1. lec#

LEC task using Kepler-formal for logical equivalence checking.

File: lec.py

3.12.1.1. Configuration#

Keypath

Type

Value

[...,exe]

str kepler-formal

[...,stderr,destination]

enum none

[...,stderr,suffix]

str log

[...,stdout,destination]

enum none

[...,stdout,suffix]

str log

3.12.2. sec#

SEC task using Kepler-formal to check a netlist against the RTL it came from.

File: sec.py

3.12.2.1. Methods#

SECTask.add_reset_port(name: str, active_value: int = 1, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a top-level reset port to hold active while the state settles.

Parameters:
  • name (str) – Name of the top-level reset port.

  • active_value (int, optional) – Value that asserts it, 0 or 1. Defaults to 1.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the existing list.

SECTask.set_reset_cycles(cycles: int, step: str | None = None, index: str | None = None) → None[source]#

Sets how many cycles the reset ports are held active for.

Parameters:
  • cycles (int) – Number of cycles.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.12.2.2. Variables#

Parameters

Type

Help

[...,var,reset_cycles]

int

Number of cycles to hold the reset ports active for. Has to cover the design’s reset distribution, so a reset that arrives through synchronizers or a pipeline needs more than one.

[...,var,reset_port]

[str]

Top-level reset ports to hold active while the state settles, each given as ‘name=value’ with a value of 0 or 1. SEC cannot check a design whose observed outputs depend on state that no reset anchors, so without this it reports that it cannot run rather than proving an equivalence that would not hold for arbitrary initial state.

3.12.2.3. Configuration#

Keypath

Type

Value

[...,exe]

str kepler-formal

[...,input]

[file]
  • top.sv

  • top.vg

[...,stderr,destination]

enum none

[...,stderr,suffix]

str log

[...,stdout,destination]

enum none

[...,stdout,suffix]

str log

[...,var,reset_cycles]

int 100

3.13. 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

File: __init__.py

3.13.1. convert_drc_db#

Convert a DRC db from .lyrdb or .ascii to an openroad json marker file

File: convert_drc_db.py

3.13.1.1. Methods#

ConvertDRCDBTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

ConvertDRCDBTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ConvertDRCDBTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ConvertDRCDBTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

3.13.1.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.1.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

3.13.1.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx
  • -r

[...,output]

[file]

top.json

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,script]

[file]

klayout_convert_drc_db.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.2. drc#

A Task with helper methods for tasks in a standard ASIC flow, providing easy access to PDK and standard cell library information.

File: drc.py

3.13.2.1. Methods#

DRCTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

DRCTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

DRCTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

DRCTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

DRCTask.set_klayout_drcname(name: str, step: str | None = None, index: str | None = None)[source]#

Sets the name of the DRC deck to run.

Parameters:
  • name (str) – The name of the DRC deck.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.13.2.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.2.3. Variables#

Parameters

Type

Help

[...,var,drc_name]

str

name of the DRC deck to run

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

3.13.2.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx

[...,output]

[file]

top.lyrdb

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str} tool,klayout,task,drc,var,drc_name

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.3. export#

Base class for KLayout tasks that read or write stream files.

Collects the stream format and timestamp settings shared by every task that produces a GDSII or OASIS file, along with the helpers for naming the files that follow from them.

File: export.py

3.13.3.1. Methods#

ExportTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

ExportTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ExportTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ExportTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ExportTask.set_klayout_bins(xbins: int, ybins: int, step: str | None = None, index: int | str | None = None)[source]#

Set the number of bins for KLayout screenshotting.

Parameters:
  • xbins (int) – Number of bins along the x-axis.

  • ybins (int) – Number of bins along the y-axis.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ExportTask.set_klayout_linewidth(linewidth: int, step: str | None = None, index: int | str | None = None)[source]#

Set the linewidth for KLayout screenshotting.

Parameters:
  • linewidth (int) – Width of lines in detailed screenshots.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ExportTask.set_klayout_margin(margin: float, step: str | None = None, index: int | str | None = None)[source]#

Set the margin for KLayout screenshotting.

Parameters:
  • margin (float) – Margin around the design, as a percentage of its width on the left and right and of its height on the top and bottom.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ExportTask.set_klayout_oversampling(oversampling: int, step: str | None = None, index: int | str | None = None)[source]#

Set the oversampling for KLayout screenshotting.

Parameters:
  • oversampling (int) – Image oversampling used in detailed screenshots.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ExportTask.set_klayout_resolution(xres: int, yres: int, step: str | None = None, index: int | str | None = None)[source]#

Set the resolution for KLayout screenshotting.

Parameters:
  • xres (int) – Horizontal resolution in pixels.

  • yres (int) – Vertical resolution in pixels.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ExportTask.set_klayout_screenshot(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables generating a screenshot of the layout.

Parameters:
  • enable (bool) – Whether to generate a screenshot.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ExportTask.set_klayout_stream(stream: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the stream format for generation.

Parameters:
  • stream (str) – The stream format to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ExportTask.set_klayout_timestamps(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables exporting GDSII with timestamps.

Parameters:
  • enable (bool) – Whether to enable timestamps.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.13.3.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.3.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,screenshot]

bool

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

[...,var,show_bins]

(int<1..>,int<1..>)

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

[...,var,show_linewidth]

int<0..>

Width of lines in detailed screenshots

[...,var,show_margin]

float<0.0..>

Margin around the design, as a percentage of its width on the left and right and of its height on the top and bottom

[...,var,show_oversampling]

int<1..3>

Image oversampling used in detailed screenshots

[...,var,show_resolution]

(int<1..>,int<1..>)

Horizontal and vertical resolution in pixels

[...,var,stream]

enum

Extension to use for stream generation. Allowed values: gds, oas

[...,var,timestamps]

bool

Export GDSII with timestamps

3.13.3.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx
  • -r

[...,output]

[file]
  • top.png

  • top.gds.gz

  • top.lyt

  • top.lyp

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • library,freepdk45,fileset,klayout.techmap,file,display
  • library,freepdk45,fileset,klayout.techmap,file,layermap
  • library,freepdk45,pdk,displayfileset,klayout
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout
  • tool,klayout,task,export,var,screenshot
  • tool,klayout,task,export,var,show_bins
  • tool,klayout,task,export,var,show_linewidth
  • tool,klayout,task,export,var,show_margin
  • tool,klayout,task,export,var,show_oversampling
  • tool,klayout,task,export,var,show_resolution
  • tool,klayout,task,export,var,stream
  • tool,klayout,task,export,var,timestamps

[...,script]

[file]

klayout_export.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,screenshot]

bool True

[...,var,show_bins]

(int<1..>,int<1..>) (1, 1)

[...,var,show_linewidth]

int<0..> 0

[...,var,show_margin]

float<0.0..> 1

[...,var,show_oversampling]

int<1..3> 2

[...,var,show_resolution]

(int<1..>,int<1..>) (4096, 4096)

[...,var,stream]

enum gds

[...,var,timestamps]

bool True

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.4. image2stream#

A Task with helper methods for tasks in a standard ASIC flow, providing easy access to PDK and standard cell library information.

File: img2stream.py

3.13.4.1. Methods#

Img2StreamTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

Img2StreamTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

Img2StreamTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

Img2StreamTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

Img2StreamTask.set_klayout_darkissolid(darkissolid: bool, step: str | None = None, index: str | None = None)[source]#

Sets the darkissolid flag for generation. :param darkissolid: Whether to treat dark colors as a solid. :type darkissolid: bool :param step: The specific step to apply this configuration to. :type step: str, optional :param index: The specific index to apply this configuration to. :type index: str, optional

Img2StreamTask.set_klayout_fill_exclusion_layer(layer: int, purpose: int = 0, step: str | None = None, index: str | None = None)[source]#

Sets the layer/datatype for the FILL EXCLUSION boundary rectangle added to the stream.

Parameters:
  • layer (int) – The GDS layer number for the FILL EXCLUSION shape.

  • purpose (int, optional) – The GDS datatype for the FILL EXCLUSION shape.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Img2StreamTask.set_klayout_imageformat(format: str, step: str | None = None, index: str | None = None)[source]#

Sets the image format for generation.

Parameters:
  • format (str) – The image format to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Img2StreamTask.set_klayout_invert(invert: bool, step: str | None = None, index: str | None = None)[source]#

Sets the invert flag for generation. :param invert: Whether to invert the image. :type invert: bool :param step: The specific step to apply this configuration to. :type step: str, optional :param index: The specific index to apply this configuration to. :type index: str, optional

Img2StreamTask.set_klayout_layer(layer: int, purpose: int = 0, step: str | None = None, index: str | None = None)[source]#

Sets the layer for generation. :param layer: The layer to use. :type layer: int :param purpose: The purpose of the layer. :type purpose: int, optional :param step: The specific step to apply this configuration to. :type step: str, optional :param index: The specific index to apply this configuration to. :type index: str, optional

Img2StreamTask.set_klayout_minsize(minsize: float, step: str | None = None, index: str | None = None)[source]#

Sets the minimum shape size for generation.

Parameters:
  • minsize (float) – The minimum shape size to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Img2StreamTask.set_klayout_outline_layer(layer: int, purpose: int = 0, step: str | None = None, index: str | None = None)[source]#

Sets the layer/datatype for the OUTLINE boundary rectangle added to the stream.

Parameters:
  • layer (int) – The GDS layer number for the OUTLINE shape.

  • purpose (int, optional) – The GDS datatype for the OUTLINE shape.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Img2StreamTask.set_klayout_stream(stream: str, step: str | None = None, index: str | None = None)[source]#

Sets the stream format for generation.

Parameters:
  • stream (str) – The stream format to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Img2StreamTask.set_klayout_targetwidth(targetwidth: float, step: str | None = None, index: str | None = None)[source]#

Sets the target width for generation. :param targetwidth: The target width to use. :type targetwidth: float :param step: The specific step to apply this configuration to. :type step: str, optional :param index: The specific index to apply this configuration to. :type index: str, optional

Img2StreamTask.set_klayout_timestamp(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables exporting GDSII with timestamps.

Parameters:
  • enable (bool) – Whether to enable timestamps.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.13.4.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.4.3. Variables#

Parameters

Type

Help

[...,var,darkissolid]

bool

Treat dark colors as a solid

[...,var,fill_exclusion_layer]

(int,int)

Layer/datatype to use for the FILL EXCLUSION boundary rectangle

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,imageformat]

enum

Image format for input files. Allowed values: jpg, png

[...,var,invert]

bool

Invert the polarity of the image

[...,var,layer]

(int,int)

Stream layer to output image on

[...,var,minsize]

float

Minimum shape size for image processing

[...,var,outline_layer]

(int,int)

Layer/datatype to use for the OUTLINE boundary rectangle

[...,var,stream]

enum

Extension to use for stream generation. Allowed values: gds, oas

[...,var,targetwidth]

float

Target width for the image

[...,var,timestamp]

bool

Export GDSII with timestamps

3.13.4.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx
  • -r

[...,output]

[file]
  • top.gds.gz

  • top.lef

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • library,freepdk45,fileset,klayout.techmap,file,display
  • library,freepdk45,fileset,klayout.techmap,file,layermap
  • library,freepdk45,pdk,displayfileset,klayout
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout
  • tool,klayout,task,image2stream,var,darkissolid
  • tool,klayout,task,image2stream,var,imageformat
  • tool,klayout,task,image2stream,var,invert
  • tool,klayout,task,image2stream,var,layer
  • tool,klayout,task,image2stream,var,minsize
  • tool,klayout,task,image2stream,var,stream
  • tool,klayout,task,image2stream,var,targetwidth
  • tool,klayout,task,image2stream,var,timestamp

[...,script]

[file]

klayout_img2stream.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,darkissolid]

bool True

[...,var,imageformat]

enum png

[...,var,invert]

bool False

[...,var,stream]

enum gds

[...,var,timestamp]

bool True

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.5. merge#

Klayout task to merge multiple GDS files and provide prefixing for cell names.

File: merge.py

3.13.5.1. Methods#

Merge.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

Merge.add_klayout_merge(type: str, source0: str, source1: str, prefix: str, step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds a file to be merged with the reference file.

Parameters:
  • type (str) – The fileset or input node to be merged.

  • prefix (str) – The prefix to apply during the merge.

  • source0 (str) – The first part of the source (library name or step).

  • source1 (str) – The second part of the source (fileset name or index).

  • step (Optional[str]) – The specific step to apply this configuration to.

  • index (Optional[Union[str, int]]) – The specific index to apply this configuration to.

  • clobber (bool, optional) –

    If True, overwrites the existing list of merge files.

    If False, appends to the list. Defaults to False.

Merge.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

Merge.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

Merge.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

Merge.set_klayout_reference(type: str, source0: str, source1: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the reference file for the merge operation. :param type: The reference fileset or input node. :type type: str :param source0: The first part of the source (library name or step). :type source0: str :param source1: The second part of the source (fileset name or index). :type source1: str :param step: The specific step to apply this configuration to. :type step: Optional[str] :param index: The specific index to apply this configuration to. :type index: Optional[Union[str, int]]

3.13.5.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.5.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,merge]

[(<fs,input>,str,str,str)]

Fileset or input node to be merge with prefix, structured as (fs, library name, fileset) or (input, step, index) along with prefix string

[...,var,reference]

(<fs,input>,str,str)

Reference fileset or input node for merge operation, structured as (fs, library name, fileset) or (input, step, index)

3.13.5.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx
  • -r

[...,output]

[file]

top.gds.gz

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • library,freepdk45,fileset,klayout.techmap,file,display
  • library,freepdk45,fileset,klayout.techmap,file,layermap
  • library,freepdk45,pdk,displayfileset,klayout
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout
  • tool,klayout,task,merge,var,merge
  • tool,klayout,task,merge,var,reference

[...,script]

[file]

klayout_merge.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.6. operations#

Perform a sequence of operations on a stream file.

Operations are objects, added in the order they should be applied. Each one is created with its arguments, handed to add_klayout_operation, and returns a handle whose setters can adjust it later. Operations can be repeated and interleaved freely, and each node in a flow has its own sequence.

>>> from siliconcompiler.tools.klayout import operations
>>> task = operations.OperationsTask.find_task(project)
>>> task.add_klayout_operation(operations.DeleteLayers([(63, 0), (550, 26)]))
>>> task.add_klayout_operation(operations.Rotate(90))
>>> task.add_klayout_operation(operations.Write("rotated.gds"))

The handle can be kept and edited:

>>> strip = task.add_klayout_operation(operations.DeleteLayers(name="strip"))
>>> strip.add_layer(212, 51)

Available operations:

  • Merge – merge another stream into the top cell

  • Add – add another stream as a new cell instance

  • Rotate – rotate the layout

  • Flatten – flatten the hierarchy of the top cell

  • Outline – draw a box around the top cell bounding box

  • RenameTop – rename the top cell

  • AddTop – add a new top cell above the current one

  • RenameCell – rename cells

  • SwapCell – replace instances of one cell with another

  • DeleteLayers – delete all shapes on the given layers

  • MergeShapes – merge overlapping shapes on the given layers

  • ConvertProperty – convert stream properties into text labels

  • Write – write an intermediate copy of the layout

Each node writes outputs/<topmodule>.<stream>.gz regardless of the operations performed, so Write is only needed to capture the layout part way through a sequence. A node with no operations is skipped.

File: operations.py

3.13.6.1. Methods#

OperationsTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

OperationsTask.add_klayout_operation(op: KLayoutOperation, step: str | None = None, index: int | str | None = None) → KLayoutOperation[source]#

Appends an operation to the sequence performed by a node.

Parameters:
  • op (KLayoutOperation) – The operation to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Returns:

The operation, bound to this task.

OperationsTask.add_operation(op: KLayoutOperation | str, args: str | None = None, step: str | None = None, index: int | str | None = None) → KLayoutOperation[source]#

Deprecated, use add_klayout_operation.

The (operation, argument) form this used to take is translated where the translation is unambiguous, and rejected where the argument was a keypath to another parameter.

OperationsTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

OperationsTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

OperationsTask.get_klayout_operations(step: str | None = None, index: int | str | None = None) → List[KLayoutOperation][source]#

Returns the operations a node performs, in order.

Parameters:
  • step (str, optional) – The specific step to read this configuration from.

  • index (str, optional) – The specific index to read this configuration from.

OperationsTask.remove_klayout_operation(op: KLayoutOperation | str, step: str | None = None, index: int | str | None = None) → bool[source]#

Removes an operation from the sequence performed by a node.

The parameters holding the operation’s values are deleted once no node refers to it any more.

Parameters:
  • op (KLayoutOperation or str) – The operation, or its name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Returns:

True if the operation was removed.

OperationsTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

OperationsTask.set_klayout_operations(operations: List[Tuple[str, str]], step: str | None = None, index: int | str | None = None)[source]#

Deprecated, use add_klayout_operation.

Replaces the sequence a node performs, translating each entry the same way add_operation does.

OperationsTask.set_klayout_stream(stream: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the stream format for generation.

Parameters:
  • stream (str) – The stream format to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

OperationsTask.set_klayout_timestamps(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables exporting GDSII with timestamps.

Parameters:
  • enable (bool) – Whether to enable timestamps.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.13.6.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.6.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,operations]

[(<add,add_top,convert_property,delete_layers,flatten,merge,merge_shapes,outline,rename,rename_cell,rotate,swap,write>,str)]

ordered (operation type, operation name) pairs to perform

[...,var,stream]

enum

Extension to use for stream generation. Allowed values: gds, oas

[...,var,timestamps]

bool

Export GDSII with timestamps

3.13.6.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx
  • -r

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • tool,klayout,task,operations,var,stream
  • tool,klayout,task,operations,var,timestamps

[...,script]

[file]

klayout_operations.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,stream]

enum gds

[...,var,timestamps]

bool True

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.7. screenshot#

Show a layout in kLayout

File: screenshot.py

3.13.7.1. Methods#

ScreenshotTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

ScreenshotTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ScreenshotTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ScreenshotTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ScreenshotTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ScreenshotTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ScreenshotTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ScreenshotTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ScreenshotTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ScreenshotTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ScreenshotTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ScreenshotTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ScreenshotTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ScreenshotTask.set_klayout_bins(xbins: int, ybins: int, step: str | None = None, index: int | str | None = None)[source]#

Set the number of bins for KLayout screenshotting.

Parameters:
  • xbins (int) – Number of bins along the x-axis.

  • ybins (int) – Number of bins along the y-axis.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ScreenshotTask.set_klayout_linewidth(linewidth: int, step: str | None = None, index: int | str | None = None)[source]#

Set the linewidth for KLayout screenshotting.

Parameters:
  • linewidth (int) – Width of lines in detailed screenshots.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ScreenshotTask.set_klayout_margin(margin: float, step: str | None = None, index: int | str | None = None)[source]#

Set the margin for KLayout screenshotting.

Parameters:
  • margin (float) – Margin around the design, as a percentage of its width on the left and right and of its height on the top and bottom.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ScreenshotTask.set_klayout_oversampling(oversampling: int, step: str | None = None, index: int | str | None = None)[source]#

Set the oversampling for KLayout screenshotting.

Parameters:
  • oversampling (int) – Image oversampling used in detailed screenshots.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ScreenshotTask.set_klayout_resolution(xres: int, yres: int, step: str | None = None, index: int | str | None = None)[source]#

Set the resolution for KLayout screenshotting.

Parameters:
  • xres (int) – Horizontal resolution in pixels.

  • yres (int) – Vertical resolution in pixels.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ScreenshotTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ScreenshotTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ScreenshotTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ScreenshotTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

3.13.7.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.7.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,show_bins]

(int<1..>,int<1..>)

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

[...,var,show_linewidth]

int<0..>

Width of lines in detailed screenshots

[...,var,show_margin]

float<0.0..>

Margin around the design, as a percentage of its width on the left and right and of its height on the top and bottom

[...,var,show_oversampling]

int<1..3>

Image oversampling used in detailed screenshots

[...,var,show_resolution]

(int<1..>,int<1..>)

Horizontal and vertical resolution in pixels

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

3.13.7.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -nc
  • -z
  • -rm

[...,output]

[file]

top.png

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • library,freepdk45,fileset,klayout.techmap,file,display
  • library,freepdk45,fileset,klayout.techmap,file,layermap
  • library,freepdk45,pdk,displayfileset,klayout
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout
  • tool,klayout,task,screenshot,var,show_bins
  • tool,klayout,task,screenshot,var,show_linewidth
  • tool,klayout,task,screenshot,var,show_margin
  • tool,klayout,task,screenshot,var,show_oversampling
  • tool,klayout,task,screenshot,var,show_resolution
  • tool,klayout,task,screenshot,var,showexit
  • tool,klayout,task,screenshot,var,showfilepath
  • tool,klayout,task,screenshot,var,showfiletype

[...,script]

[file]

klayout_show.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,show_bins]

(int<1..>,int<1..>) (1, 1)

[...,var,show_linewidth]

int<0..> 0

[...,var,show_margin]

float<0.0..> 1

[...,var,show_oversampling]

int<1..3> 2

[...,var,show_resolution]

(int<1..>,int<1..>) (4096, 4096)

[...,var,showexit]

bool True

[...,var,showfiletype]

str ascii

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.8. show#

Show a layout in kLayout

File: show.py

3.13.8.1. Methods#

ShowTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

ShowTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ShowTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ShowTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ShowTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ShowTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ShowTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ShowTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ShowTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ShowTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ShowTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ShowTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ShowTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ShowTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ShowTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ShowTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ShowTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

3.13.8.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.8.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

3.13.8.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -nc
  • -rm

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • library,freepdk45,fileset,klayout.techmap,file,display
  • library,freepdk45,fileset,klayout.techmap,file,layermap
  • library,freepdk45,pdk,displayfileset,klayout
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout
  • tool,klayout,task,show,var,showexit
  • tool,klayout,task,show,var,showfilepath
  • tool,klayout,task,show,var,showfiletype

[...,script]

[file]

klayout_show.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,showexit]

bool False

[...,var,showfiletype]

str ascii

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.9. stream2lef#

A Task with helper methods for tasks in a standard ASIC flow, providing easy access to PDK and standard cell library information.

File: stream2lef.py

3.13.9.1. Methods#

Stream2LefTask.add_klayout_hidelayers(layer: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds one or more layers to hide when displaying or screenshotting a layout.

These are hidden in addition to the layers named by KLayoutPDK.add_klayout_hidelayers(). A layer can be named either by name or as a <layer>/<datatype> pair.

Parameters:
  • layer (Union[str, List[str]]) – The layer name or a list of layer names.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list of hidden layers. If False, appends to the list. Defaults to False.

Stream2LefTask.add_klayout_ignorecells(ignore_cells: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Sets the cells to ignore during export.

Parameters:
  • ignore_cells (str) – The cells to ignore during export.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – Whether to overwrite existing configuration.

Stream2LefTask.add_klayout_symmetry(symmetry: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a symmetry to the LEF macro.

Parameters:
  • symmetry (str) – The symmetry to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – Whether to overwrite existing symmetry.

Stream2LefTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

Stream2LefTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

Stream2LefTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

Stream2LefTask.set_klayout_classname(class_name: str, step: str | None = None, index: str | None = None)[source]#

Sets the class name for the LEF macro.

Parameters:
  • class_name (str) – The class name for the LEF macro.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Stream2LefTask.set_klayout_site(site: str, step: str | None = None, index: str | None = None)[source]#

Sets the site name for the LEF macro.

Parameters:
  • site (str) – The site name for the LEF macro.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Stream2LefTask.set_klayout_stream(stream: str, step: str | None = None, index: str | None = None)[source]#

Sets the stream format for generation.

Parameters:
  • stream (str) – The stream format to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.13.9.2. Data root#

Root

Specifications

refdir

  • Path: python://siliconcompiler/tools/klayout

3.13.9.3. Variables#

Parameters

Type

Help

[...,var,class_name]

str

Class name for the LEF macro

[...,var,hide_layers]

[str]

list of layers to hide, in addition to the layers hidden by the PDK

[...,var,ignore_cells]

{str}

Cells to ignore during export

[...,var,site]

str

Site name for the LEF macro

[...,var,stream]

enum

Extension to use for stream generation. Allowed values: gds, oas

[...,var,symmetry]

{enum}

Symmetry for the LEF macro, e.g. X Y R90. Allowed values: R90, X, Y

3.13.9.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,option]

[str]
  • -z
  • -nc
  • -rx
  • -r

[...,output]

[file]

top.lef

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

{str}
  • library,freepdk45,fileset,klayout.techmap,file,display
  • library,freepdk45,fileset,klayout.techmap,file,layermap
  • library,freepdk45,pdk,displayfileset,klayout
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout
  • tool,klayout,task,stream2lef,var,class_name
  • tool,klayout,task,stream2lef,var,stream
  • tool,klayout,task,stream2lef,var,symmetry

[...,script]

[file]

klayout_stream2lef.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,class_name]

str BLOCK

[...,var,stream]

enum gds

[...,var,symmetry]

{enum}
  • R90
  • X
  • Y

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.14. magic#

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

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

Installation: RTimothyEdwards/magic

Sources: RTimothyEdwards/magic

File: __init__.py

3.14.1. drc#

A schema class that defines the parameters and methods for a single task in a compilation flow.

This class provides the framework for setting up, running, and post-processing a tool. It includes methods for managing executables, versions, runtime arguments, and file I/O.

File: drc.py

3.14.1.1. Data root#

Root

Specifications

magic

  • Path: python://siliconcompiler/tools/magic

3.14.1.2. Variables#

Parameters

Type

Help

[...,var,read_lef]

[file]

lef files to read

3.14.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str magic

[...,format]

enum tcl

[...,option]

[str]
  • -noc
  • -dnull

[...,output]

[file]

top.drc.mag

[...,refdir]

[dir]

scripts, magic

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] warning

[...,require]

{str} asic,pdk

[...,script]

[file]

sc_magic.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,version]

[str] >=8.3.196

[...,vswitch]

[str] --version

3.14.2. extspice#

Extract spice netlists from a GDS file for simulation use

File: extspice.py

3.14.2.1. Data root#

Root

Specifications

magic

  • Path: python://siliconcompiler/tools/magic

3.14.2.2. Variables#

Parameters

Type

Help

[...,var,read_lef]

[file]

lef files to read

3.14.2.3. Configuration#

Keypath

Type

Value

[...,exe]

str magic

[...,format]

enum tcl

[...,option]

[str]
  • -noc
  • -dnull

[...,output]

[file]

top.spice

[...,refdir]

[dir]

scripts, magic

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] warning

[...,require]

{str} asic,pdk

[...,script]

[file]

sc_magic.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,version]

[str] >=8.3.196

[...,vswitch]

[str] --version

3.15. 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

File: __init__.py

3.15.1. convert#

Downsamples an input image and writes it out as a PNG or JPG.

Useful for producing a lightweight, shareable preview from a large merged screenshot. The input image format is auto-detected from the file provided upstream (PNG is assumed when it cannot be determined); the output is <design>.<format> scaled by the configured resize geometry.

File: convert.py

3.15.1.1. Methods#

ConvertTask.set_convert_format(image_format: str, step: str | None = None, index: int | str | None = None)[source]#

Set the output image format.

Parameters:
  • image_format (str) – Output format, one of ‘png’, ‘jpg’, ‘jpeg’, ‘webp’, ‘gif’, ‘bmp’, ‘tif’, ‘tiff’, ‘ppm’, ‘svg’.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ConvertTask.set_convert_quality(quality: int, step: str | None = None, index: int | str | None = None)[source]#

Set the output image quality.

Parameters:
  • quality (int) – Output image quality (1-100).

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

ConvertTask.set_convert_resize(resize: str, step: str | None = None, index: int | str | None = None)[source]#

Set the resize geometry applied to the image.

Parameters:
  • resize (str) – ImageMagick resize geometry (e.g. ‘50%’ or ‘2048x2048’).

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

3.15.1.2. Variables#

Parameters

Type

Help

[...,var,format]

enum

Output image format. Allowed values: bmp, gif, jpeg, jpg, png, ppm, svg, tif, tiff, webp

[...,var,quality]

int

Output image quality (1-100)

[...,var,resize]

str

ImageMagick resize geometry applied to the image, e.g. ‘50%’ or ‘2048x2048’ (aspect ratio is preserved). Leave empty to only convert the format without resizing.

3.15.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str convert

[...,input]

[file]

top.png

[...,output]

[file]

top.png

[...,require]

{str} tool,montage,task,convert,var,format

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,format]

enum png

[...,version]

[str] >=6.9.0

[...,vswitch]

[str] -version

3.15.2. tile#

Tiles input images into a single output image.

File: tile.py

3.15.2.1. Methods#

TileTask.set_montage_bins(xbins: int, ybins: int, step: str | None = None, index: int | str | None = None)[source]#

Set the number of bins for Montage tiling.

Parameters:
  • xbins (int) – Number of bins along the x-axis.

  • ybins (int) – Number of bins along the y-axis.

  • step (Optional[str]) – Flow step to set the parameter for. Defaults to None.

  • index (Optional[Union[str, int]]) – Index to set the parameter for. Defaults to None.

3.15.2.2. Variables#

Parameters

Type

Help

[...,var,bins]

(int<1..>,int<1..>)

Number of bins along the (x, y)-axis. If left unset, the grid size is auto-detected from the incoming tile images.

3.15.2.3. Configuration#

Keypath

Type

Value

[...,exe]

str montage

[...,require]

{str} tool,montage,task,tile,var,bins

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=6.9.0

[...,vswitch]

[str] -version

3.16. mlir#

MLIR is a compiler infrastructure, part of the LLVM project, built around reusable dialects and progressive lowering between them. It is the substrate the SODA Synthesizer’s front end (soda-opt) is written against, and the tools in this module are the upstream LLVM binaries that the SODA flow drives directly:

  • mlir-opt – runs pass pipelines over a .mlir file.

  • mlir-translate – translates the LLVM dialect into LLVM IR (.ll).

  • clang – compiles a C support module to LLVM IR.

  • llvm-link – links LLVM IR modules, used to supply the runtime helpers the bufferized code calls.

Because soda-opt is an out-of-tree MLIR project that links against MLIR’s C++ libraries, both have to come from the same llvm-project revision. The install script pins that revision; a distribution mlir-tools package will generally not match it.

Documentation: https://mlir.llvm.org

Sources: llvm/llvm-project

Installation: sc-install mlir

File: __init__.py

3.16.1. pipeline#

Runs a textual pass pipeline, as -pass-pipeline=....

This is the form to use when the passes have to be nested under the operation they run on, which the flag list cannot express.

A subclass says what it runs by overriding _pipeline(), which becomes the parameter’s default; a user can still replace it with set_mlir_pipeline().

File: opt.py

3.16.1.1. Methods#

PipelineTask.add_mlir_dialectplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load dialects from.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

PipelineTask.add_mlir_passplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load passes from.

The passes it provides can then be named like any other, in either set_mlir_pipeline() or add_mlir_passes(). A library that provides a dialect as well has to be named to add_mlir_dialectplugin() too – mlir-opt looks for a separate entry point for each, and only warns when the one it wants is absent.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

PipelineTask.set_mlir_pipeline(pipeline: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the textual pass pipeline handed to -pass-pipeline.

Parameters:
  • pipeline (str) – The pass pipeline, e.g. builtin.module(func.func(canonicalize)).

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

3.16.1.2. Variables#

Parameters

Type

Help

[...,var,dialectplugin]

[file]

MLIR plugin libraries to load dialects from

[...,var,passplugin]

[file]

MLIR plugin libraries to load passes from

[...,var,pipeline]

str

textual MLIR pass pipeline, passed as -pass-pipeline

3.16.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str mlir-opt

[...,output]

[file]

top.mlir

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,mlir,task,pipeline,var,pipeline

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=19.1.0

[...,vswitch]

[str] --version

3.16.2. passes#

Runs an ordered list of individual pass flags.

This is the form to use when the passes are a flat sequence, which is most of them, and the only form that can mix module-level and function-level passes.

A subclass says what it runs by overriding _passes(), which becomes the parameter’s default; a user can still change it with add_mlir_passes().

File: opt.py

3.16.2.1. Methods#

PassesTask.add_mlir_dialectplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load dialects from.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

PassesTask.add_mlir_passes(passes: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Appends one or more pass flags to the end of the pass list.

Parameters:
  • passes (str or list of str) – The pass flag(s) to append, in the order they should run, e.g. ["-canonicalize", "-cse"].

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list – which is how a task’s own passes are replaced rather than added to. Defaults to False.

PassesTask.add_mlir_passplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load passes from.

The passes it provides can then be named like any other, in either set_mlir_pipeline() or add_mlir_passes(). A library that provides a dialect as well has to be named to add_mlir_dialectplugin() too – mlir-opt looks for a separate entry point for each, and only warns when the one it wants is absent.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

3.16.2.2. Variables#

Parameters

Type

Help

[...,var,dialectplugin]

[file]

MLIR plugin libraries to load dialects from

[...,var,passes]

[str]

ordered list of mlir-opt pass flags, e.g. -canonicalize

[...,var,passplugin]

[file]

MLIR plugin libraries to load passes from

3.16.2.3. Configuration#

Keypath

Type

Value

[...,exe]

str mlir-opt

[...,output]

[file]

top.mlir

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,mlir,task,passes,var,passes

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,version]

[str] >=19.1.0

[...,vswitch]

[str] --version

3.16.3. tosa2linalg#

Lowers a TOSA module to linalg on tensors.

This is the first half of the SODA front end’s tosa_to_linalg step: the named TOSA operations become their linalg equivalents, still operating on tensor values. BufferizeTask runs afterwards to put them on buffers.

A pipeline rather than a flag list because every pass here runs on a func.func.

File: opt.py

3.16.3.1. Methods#

TosaToLinalgTask.add_mlir_dialectplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load dialects from.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

TosaToLinalgTask.add_mlir_passplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load passes from.

The passes it provides can then be named like any other, in either set_mlir_pipeline() or add_mlir_passes(). A library that provides a dialect as well has to be named to add_mlir_dialectplugin() too – mlir-opt looks for a separate entry point for each, and only warns when the one it wants is absent.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

TosaToLinalgTask.set_mlir_pipeline(pipeline: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the textual pass pipeline handed to -pass-pipeline.

Parameters:
  • pipeline (str) – The pass pipeline, e.g. builtin.module(func.func(canonicalize)).

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

3.16.3.2. Variables#

Parameters

Type

Help

[...,var,dialectplugin]

[file]

MLIR plugin libraries to load dialects from

[...,var,passplugin]

[file]

MLIR plugin libraries to load passes from

[...,var,pipeline]

str

textual MLIR pass pipeline, passed as -pass-pipeline

3.16.3.3. Configuration#

Keypath

Type

Value

[...,exe]

str mlir-opt

[...,output]

[file]

top.mlir

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,mlir,task,tosa2linalg,var,pipeline

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,pipeline]

str builtin.module(func.func(tosa-to-arith, tosa-to-tensor, tosa-to-linalg-named, tosa-to-linalg))

[...,version]

[str] >=19.1.0

[...,vswitch]

[str] --version

3.16.4. bufferize#

Bufferizes linalg on tensors into linalg on memrefs.

This is the second half of the SODA front end’s tosa_to_linalg step. The result is the 02_linalg.mlir of the SODA flow: linalg operations on buffers, with the function results turned into out-parameters, which is the form soda-opt outlines a kernel from.

File: opt.py

3.16.4.1. Methods#

BufferizeTask.add_mlir_dialectplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load dialects from.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

BufferizeTask.add_mlir_passes(passes: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Appends one or more pass flags to the end of the pass list.

Parameters:
  • passes (str or list of str) – The pass flag(s) to append, in the order they should run, e.g. ["-canonicalize", "-cse"].

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list – which is how a task’s own passes are replaced rather than added to. Defaults to False.

BufferizeTask.add_mlir_passplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load passes from.

The passes it provides can then be named like any other, in either set_mlir_pipeline() or add_mlir_passes(). A library that provides a dialect as well has to be named to add_mlir_dialectplugin() too – mlir-opt looks for a separate entry point for each, and only warns when the one it wants is absent.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

3.16.4.2. Variables#

Parameters

Type

Help

[...,var,dialectplugin]

[file]

MLIR plugin libraries to load dialects from

[...,var,passes]

[str]

ordered list of mlir-opt pass flags, e.g. -canonicalize

[...,var,passplugin]

[file]

MLIR plugin libraries to load passes from

3.16.4.3. Configuration#

Keypath

Type

Value

[...,exe]

str mlir-opt

[...,output]

[file]

top.mlir

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,mlir,task,bufferize,var,passes

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,passes]

[str]
  • --tosa-to-arith=include-apply-rescale=true
  • --canonicalize
  • -convert-tensor-to-linalg
  • -empty-tensor-to-alloc-tensor
  • -eliminate-empty-tensors
  • -one-shot-bufferize=function-boundary-type-conversion=identity-layout-map bufferize-function-boundaries allow-return-allocs-from-loops unknown-type-conversion=identity-layout-map
  • -func-bufferize
  • -buffer-deallocation-simplification
  • -bufferization-lower-deallocations
  • --buffer-results-to-out-params
  • --canonicalize
  • -cse

[...,version]

[str] >=19.1.0

[...,vswitch]

[str] --version

3.16.5. linalg2llvm#

Lowers linalg all the way to the LLVM dialect.

This is the reference software lowering of the SODA flow (its linalg_to_llvm step), which produces a module that can be translated and executed on a CPU. It is not part of the hardware path – there, soda-opt does the lowering, so that a kernel is outlined and optimized for high-level synthesis on the way down.

File: opt.py

3.16.5.1. Methods#

LinalgToLLVMTask.add_mlir_dialectplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load dialects from.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

LinalgToLLVMTask.add_mlir_passes(passes: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Appends one or more pass flags to the end of the pass list.

Parameters:
  • passes (str or list of str) – The pass flag(s) to append, in the order they should run, e.g. ["-canonicalize", "-cse"].

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list – which is how a task’s own passes are replaced rather than added to. Defaults to False.

LinalgToLLVMTask.add_mlir_passplugin(plugin: List[str | Path] | str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds a plugin library to load passes from.

The passes it provides can then be named like any other, in either set_mlir_pipeline() or add_mlir_passes(). A library that provides a dialect as well has to be named to add_mlir_dialectplugin() too – mlir-opt looks for a separate entry point for each, and only warns when the one it wants is absent.

Parameters:
  • plugin (str, Path or list) – Path(s) to the plugin shared object.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces the list instead of appending to it. Defaults to False.

3.16.5.2. Variables#

Parameters

Type

Help

[...,var,dialectplugin]

[file]

MLIR plugin libraries to load dialects from

[...,var,passes]

[str]

ordered list of mlir-opt pass flags, e.g. -canonicalize

[...,var,passplugin]

[file]

MLIR plugin libraries to load passes from

3.16.5.3. Configuration#

Keypath

Type

Value

[...,exe]

str mlir-opt

[...,output]

[file]

top.mlir

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,mlir,task,linalg2llvm,var,passes

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,passes]

[str]
  • -convert-linalg-to-affine-loops
  • -expand-strided-metadata
  • -lower-affine
  • -convert-scf-to-cf
  • -convert-complex-to-standard
  • -convert-vector-to-llvm
  • --convert-math-to-llvm
  • --convert-math-to-libm
  • -arith-expand
  • -memref-expand
  • -convert-to-llvm=filter-dialects=memref
  • -finalize-memref-to-llvm
  • -convert-arith-to-llvm
  • -finalize-memref-to-llvm
  • -convert-complex-to-llvm
  • -convert-func-to-llvm=use-bare-ptr-memref-call-conv=1
  • --test-lower-to-llvm
  • -convert-cf-to-llvm
  • -reconcile-unrealized-casts
  • -symbol-dce

[...,version]

[str] >=19.1.0

[...,vswitch]

[str] --version

3.16.6. translate#

Translates an MLIR module into LLVM IR with mlir-translate.

This is the hand-off from the MLIR world to the LLVM IR that the HLS tool reads: the input has already been lowered to the LLVM dialect (by soda-opt or by LinalgToLLVMTask), and this task emits the textual .ll for it.

The translated module is then filtered: MLIR brackets the buffers it allocates on the stack with llvm.stacksave / llvm.stackrestore intrinsics, which an HLS backend has no notion of. Those lines are dropped, which is what the SODA flow does with sed at the same point.

File: translate.py

3.16.6.1. Methods#

TranslateTask.add_mlir_stripintrinsics(intrinsics: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds an intrinsic to the list stripped from the translated IR.

Parameters:
  • intrinsics (str or list of str) – Intrinsic name(s) to strip.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Clobbering with an empty list keeps the translated module exactly as mlir-translate emitted it. Defaults to False.

TranslateTask.set_mlir_action(action: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the mlir-translate action.

Parameters:
  • action (str) – The action flag, e.g. --mlir-to-llvmir.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

3.16.6.2. Variables#

Parameters

Type

Help

[...,var,action]

str

mlir-translate action to perform

[...,var,stripintrinsics]

[str]

LLVM intrinsics to strip from the translated IR. Any line mentioning one of these is removed, which drops both the declaration and the calls.

3.16.6.3. Configuration#

Keypath

Type

Value

[...,exe]

str mlir-translate

[...,output]

[file]

top.ll

[...,require]

{str}
  • option,design
  • option,fileset
  • tool,mlir,task,translate,var,action
  • tool,mlir,task,translate,var,stripintrinsics

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,action]

str --mlir-to-llvmir

[...,var,stripintrinsics]

[str]
  • llvm.stacksave.p0
  • llvm.stackrestore.p0

[...,version]

[str] >=19.1.0

[...,vswitch]

[str] --version

3.16.7. runtime#

Compiles a C support module into LLVM IR for linking into a kernel.

Bufferized MLIR lowers memref.copy to a call to memrefCopy, which upstream expects to come from MLIR’s runner support library. An HLS backend has no runtime to link against, so the definition has to be merged into the module itself; this task produces it, and LinkTask does the merge.

The bundled memref_copy.c is the default, but the source is a parameter: any C file whose LLVM IR should end up inside the kernel goes here, and the module it produces is named after it.

The task has no design input – it compiles a source of its own – so it is an entry node of any flow that uses it, running alongside the front end rather than after it.

memref_copy.c is vendored from PNNL’s soda-benchmarks (scripts/lib/memref_copy.c), which is Apache-2.0 with LLVM exceptions. It differs from MLIR’s own memrefCopy in avoiding the dynamic alloca that HLS backends reject.

File: compile.py

3.16.7.1. Methods#

RuntimeTask.set_mlir_source(source: str | Path, dataroot: str | None = None, step: str | None = None, index: str | None = None) → None[source]#

Sets the C source compiled into the support module.

Parameters:
  • source (str or Path) – Path to the C source.

  • dataroot (str, optional) – The dataroot used to resolve relative paths.

  • step (str, optional) – The step to apply this configuration to.

  • index (str, optional) – The index to apply this configuration to.

3.16.7.2. Data root#

Root

Specifications

siliconcompiler

  • Path: python://siliconcompiler

3.16.7.3. Variables#

Parameters

Type

Help

[...,var,source]

file

C source compiled to LLVM IR for linking into the kernel. The module it produces is named after it, so a source of ‘helpers.c’ yields ‘helpers.ll’.

3.16.7.4. Configuration#

Keypath

Type

Value

[...,exe]

str clang

[...,output]

[file]

memref_copy.ll

[...,require]

{str} tool,mlir,task,runtime,var,source

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,source]

file

tools/mlir/data/memref_copy.c, siliconcompiler

[...,version]

[str] >=15.0.0

[...,vswitch]

[str] --version

3.17. 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: https://www.opencircuitdesign.com/netgen/

Installation: RTimothyEdwards/netgen

Sources: RTimothyEdwards/netgen

File: __init__.py

3.17.1. lvs#

Perform LVS on the supplied netlists

File: lvs.py

3.17.1.1. Data root#

Root

Specifications

netgen

  • Path: python://siliconcompiler/tools/netgen

3.17.1.2. Configuration#

Keypath

Type

Value

[...,exe]

str netgen

[...,format]

enum tcl

[...,input]

[file]

top.spice

[...,option]

[str]
  • -batch
  • source

[...,refdir]

[dir]

scripts, netgen

[...,regex,warnings]

[str] ^Warning:

[...,require]

{str} asic,pdk

[...,script]

[file]

sc_lvs.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str errors

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,version]

[str] >=1.5.192

[...,vswitch]

[str] -batch

3.18. 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

File: __init__.py

3.18.1. apr#

Perform automated place and route on FPGAs

File: apr.py

3.18.1.1. Configuration#

Keypath

Type

Value

[...,exe]

str nextpnr-ice40

[...,input]

[file]

top.netlist.json

[...,output]

[file]

top.asc

[...,require]

{str}
  • fpga,device
  • library,<fpga>,fpga,partname

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,version]

[str] >=0.2

[...,vswitch]

[str] --version

3.19. 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/en/latest/

Sources: The-OpenROAD-Project/OpenROAD

Installation: The-OpenROAD-Project/OpenROAD

File: __init__.py

3.19.1. antenna_repair#

Perform antenna repair

File: antenna_repair.py

3.19.1.1. Methods#

AntennaRepairTask.add_debuglevel(tool, category, level, clobber=False)[source]#
AntennaRepairTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

AntennaRepairTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

AntennaRepairTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

AntennaRepairTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

AntennaRepairTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

AntennaRepairTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

AntennaRepairTask.set_openroad_antcheck(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables checking for antenna violations.

Parameters:
  • enable (bool) – True to check, False to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_antiterations(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of antenna repair iterations.

Parameters:
  • iterations (int) – The number of iterations.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_antmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for antenna ratios.

Parameters:
  • margin (float) – The margin (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_antrepair(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables repairing antenna violations.

Parameters:
  • enable (bool) – True to repair, False to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_dplusedecapfillers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the use of decap fillers.

Parameters:
  • enable (bool) – True to use decap fillers, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtallowcongestion(allow: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables allowing congestion in global routing.

Parameters:
  • allow (bool) – True to allow congestion, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtclockmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtclockminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtmacroextension(extension: int, step: str | None = None, index: str | None = None)[source]#

Sets the macro extension distance for global routing.

Parameters:
  • extension (int) – The extension distance in number of gcells.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtoverflowiter(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of overflow iterations for global routing.

Parameters:
  • iterations (int) – The number of iterations.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtseed(seed: int, step: str | None = None, index: str | None = None)[source]#

Sets the random seed for global routing.

Parameters:
  • seed (int) – The random seed.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtsignalmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_grtsignalminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

AntennaRepairTask.unset_debuglevel()[source]#

3.19.1.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.1.3. Variables#

Parameters

Type

Help

[...,var,ant_check]

bool

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

[...,var,ant_iterations]

int<1..>

maximum number of repair iterations to use during antenna repairs

[...,var,ant_margin]

float<0.0..100.0>

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

[...,var,ant_repair]

bool

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

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,dpl_use_decap_fillers]

bool

true/false, use decap fillers along with non-decap fillers

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_allow_congestion]

bool

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

[...,var,grt_clock_max_layer]

str

maximum layer to use for global routing of clock nets

[...,var,grt_clock_min_layer]

str

minimum layer to use for global routing of clock nets

[...,var,grt_macro_extension]

int<0..>

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

[...,var,grt_overflow_iter]

int<1..>

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

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,grt_seed]

int

random seed for global routing, unset uses the tool default

[...,var,grt_signal_max_layer]

str

maximum layer to use for global routing of signals

[...,var,grt_signal_min_layer]

str

minimum layer to use for global routing of signals

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.1.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,antenna_repair,var,ant_check
  • tool,openroad,task,antenna_repair,var,ant_iterations
  • tool,openroad,task,antenna_repair,var,ant_margin
  • tool,openroad,task,antenna_repair,var,ant_repair
  • tool,openroad,task,antenna_repair,var,apply_pex_correction
  • tool,openroad,task,antenna_repair,var,dpl_use_decap_fillers
  • tool,openroad,task,antenna_repair,var,enablehier
  • tool,openroad,task,antenna_repair,var,grt_allow_congestion
  • tool,openroad,task,antenna_repair,var,grt_clock_max_layer
  • tool,openroad,task,antenna_repair,var,grt_clock_min_layer
  • tool,openroad,task,antenna_repair,var,grt_macro_extension
  • tool,openroad,task,antenna_repair,var,grt_overflow_iter
  • tool,openroad,task,antenna_repair,var,grt_resistance_aware
  • tool,openroad,task,antenna_repair,var,grt_signal_max_layer
  • tool,openroad,task,antenna_repair,var,grt_signal_min_layer
  • tool,openroad,task,antenna_repair,var,load_grt_setup
  • tool,openroad,task,antenna_repair,var,load_sdcs
  • tool,openroad,task,antenna_repair,var,opensta_generic_sdc
  • tool,openroad,task,antenna_repair,var,ord_enable_images
  • tool,openroad,task,antenna_repair,var,ord_heatmap_bins
  • tool,openroad,task,antenna_repair,var,power_corner
  • tool,openroad,task,antenna_repair,var,rsz_default_pex_corner
  • tool,openroad,task,antenna_repair,var,sta_define_path_groups
  • tool,openroad,task,antenna_repair,var,sta_early_timing_derate
  • tool,openroad,task,antenna_repair,var,sta_late_timing_derate
  • tool,openroad,task,antenna_repair,var,sta_top_n_paths
  • tool,openroad,task,antenna_repair,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_antenna_repair.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,ant_check]

bool True

[...,var,ant_iterations]

int<1..> 3

[...,var,ant_margin]

float<0.0..100.0> 0

[...,var,ant_repair]

bool True

[...,var,apply_pex_correction]

bool True

[...,var,dpl_use_decap_fillers]

bool True

[...,var,enablehier]

bool False

[...,var,grt_allow_congestion]

bool False

[...,var,grt_clock_max_layer]

str metal7

[...,var,grt_clock_min_layer]

str metal2

[...,var,grt_macro_extension]

int<0..> 0

[...,var,grt_overflow_iter]

int<1..> 100

[...,var,grt_resistance_aware]

bool False

[...,var,grt_signal_max_layer]

str metal7

[...,var,grt_signal_min_layer]

str metal2

[...,var,load_grt_setup]

bool True

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • module_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.2. clock_tree_synthesis#

Perform clock tree synthesis

File: clock_tree_synthesis.py

3.19.2.1. Methods#

CTSTask.add_debuglevel(tool, category, level, clobber=False)[source]#
CTSTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

CTSTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

CTSTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

CTSTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

CTSTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

CTSTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

CTSTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_ctsbalancelevels(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables level balancing during CTS.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_ctsclusterdiameter(diameter: float, step: str | None = None, index: str | None = None)[source]#

Sets the clustering diameter for CTS.

Parameters:
  • diameter (float) – The diameter in microns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_ctsclustersize(size: int, step: str | None = None, index: str | None = None)[source]#

Sets the cluster size for CTS.

Parameters:
  • size (int) – The number of instances in a cluster.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_ctsdistancebetweenbuffers(distance: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum distance between buffers during CTS.

Parameters:
  • distance (float) – The distance in microns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_ctsobstructionaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables obstruction-aware CTS.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_dplmaxdisplacement(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum cell displacement for detailed placement.

Parameters:
  • x (float) – The maximum displacement in X (microns).

  • y (float) – The maximum displacement in Y (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_dplusediamondlegalizer(enable: bool, step: str | None = None, index: str | None = None)[source]#

Selects the legacy diamond search legalizer for detailed placement.

Parameters:
  • enable (bool) – True to use the diamond search engine, False to use the negotiation-based legalizer.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_paddetailplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the detailed placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CTSTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CTSTask.unset_debuglevel()[source]#

3.19.2.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.2.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,cts_balance_levels]

bool

perform level balancing in clock tree synthesis

[...,var,cts_cluster_diameter]

float<0.0..>

clustering distance to use during clock tree synthesis in microns

[...,var,cts_cluster_size]

int<1..>

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

[...,var,cts_distance_between_buffers]

float<0.0..>

maximum distance between buffers during clock tree synthesis in microns

[...,var,cts_obstruction_aware]

bool

make clock tree synthesis aware of obstructions

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>)

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

[...,var,dpl_use_diamond_legalizer]

bool

true/false, legalize with the legacy diamond search engine instead of the negotiation-based legalizer the tool now defaults to

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int<0..>

detailed placement cell padding in number of sites

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.2.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,clock_tree_synthesis,var,apply_pex_correction
  • tool,openroad,task,clock_tree_synthesis,var,cts_balance_levels
  • tool,openroad,task,clock_tree_synthesis,var,cts_cluster_diameter
  • tool,openroad,task,clock_tree_synthesis,var,cts_cluster_size
  • tool,openroad,task,clock_tree_synthesis,var,cts_distance_between_buffers
  • tool,openroad,task,clock_tree_synthesis,var,cts_obstruction_aware
  • tool,openroad,task,clock_tree_synthesis,var,dpl_max_displacement
  • tool,openroad,task,clock_tree_synthesis,var,dpl_use_diamond_legalizer
  • tool,openroad,task,clock_tree_synthesis,var,enablehier
  • tool,openroad,task,clock_tree_synthesis,var,grt_resistance_aware
  • tool,openroad,task,clock_tree_synthesis,var,load_grt_setup
  • tool,openroad,task,clock_tree_synthesis,var,load_sdcs
  • tool,openroad,task,clock_tree_synthesis,var,opensta_generic_sdc
  • tool,openroad,task,clock_tree_synthesis,var,ord_enable_images
  • tool,openroad,task,clock_tree_synthesis,var,ord_heatmap_bins
  • tool,openroad,task,clock_tree_synthesis,var,pad_detail_place
  • tool,openroad,task,clock_tree_synthesis,var,power_corner
  • tool,openroad,task,clock_tree_synthesis,var,rsz_default_pex_corner
  • tool,openroad,task,clock_tree_synthesis,var,sta_define_path_groups
  • tool,openroad,task,clock_tree_synthesis,var,sta_early_timing_derate
  • tool,openroad,task,clock_tree_synthesis,var,sta_late_timing_derate
  • tool,openroad,task,clock_tree_synthesis,var,sta_top_n_paths
  • tool,openroad,task,clock_tree_synthesis,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_clock_tree_synthesis.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,cts_balance_levels]

bool True

[...,var,cts_cluster_diameter]

float<0.0..> 100

[...,var,cts_cluster_size]

int<1..> 30

[...,var,cts_distance_between_buffers]

float<0.0..> 100

[...,var,cts_obstruction_aware]

bool True

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>) (0, 0)

[...,var,dpl_use_diamond_legalizer]

bool False

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_detail_place]

int<0..> 0

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • module_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • report_buffers
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.3. detailed_placement#

Perform detailed placement

File: detailed_placement.py

3.19.3.1. Methods#

DetailedPlacementTask.add_debuglevel(tool, category, level, clobber=False)[source]#
DetailedPlacementTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

DetailedPlacementTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

DetailedPlacementTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

DetailedPlacementTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

DetailedPlacementTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

DetailedPlacementTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

DetailedPlacementTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_dplmaxdisplacement(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum cell displacement for detailed placement.

Parameters:
  • x (float) – The maximum displacement in X (microns).

  • y (float) – The maximum displacement in Y (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_dplusediamondlegalizer(enable: bool, step: str | None = None, index: str | None = None)[source]#

Selects the legacy diamond search legalizer for detailed placement.

Parameters:
  • enable (bool) – True to use the diamond search engine, False to use the negotiation-based legalizer.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_dpoenable(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables detailed placement optimization.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_dpomaxdisplacement(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum cell displacement for detailed placement optimization.

Parameters:
  • x (float) – The maximum displacement in X (microns).

  • y (float) – The maximum displacement in Y (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_paddetailplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the detailed placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedPlacementTask.unset_debuglevel()[source]#

3.19.3.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.3.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>)

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

[...,var,dpl_use_diamond_legalizer]

bool

true/false, legalize with the legacy diamond search engine instead of the negotiation-based legalizer the tool now defaults to

[...,var,dpo_enable]

bool

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

[...,var,dpo_max_displacement]

(float<0.0..>,float<0.0..>)

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int<0..>

detailed placement cell padding in number of sites

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.3.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,detailed_placement,var,apply_pex_correction
  • tool,openroad,task,detailed_placement,var,dpl_max_displacement
  • tool,openroad,task,detailed_placement,var,dpl_use_diamond_legalizer
  • tool,openroad,task,detailed_placement,var,dpo_enable
  • tool,openroad,task,detailed_placement,var,dpo_max_displacement
  • tool,openroad,task,detailed_placement,var,enablehier
  • tool,openroad,task,detailed_placement,var,grt_resistance_aware
  • tool,openroad,task,detailed_placement,var,load_grt_setup
  • tool,openroad,task,detailed_placement,var,load_sdcs
  • tool,openroad,task,detailed_placement,var,opensta_generic_sdc
  • tool,openroad,task,detailed_placement,var,ord_enable_images
  • tool,openroad,task,detailed_placement,var,ord_heatmap_bins
  • tool,openroad,task,detailed_placement,var,pad_detail_place
  • tool,openroad,task,detailed_placement,var,power_corner
  • tool,openroad,task,detailed_placement,var,rsz_default_pex_corner
  • tool,openroad,task,detailed_placement,var,sta_define_path_groups
  • tool,openroad,task,detailed_placement,var,sta_early_timing_derate
  • tool,openroad,task,detailed_placement,var,sta_late_timing_derate
  • tool,openroad,task,detailed_placement,var,sta_top_n_paths
  • tool,openroad,task,detailed_placement,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_detailed_placement.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>) (0, 0)

[...,var,dpl_use_diamond_legalizer]

bool False

[...,var,dpo_enable]

bool True

[...,var,dpo_max_displacement]

(float<0.0..>,float<0.0..>) (5, 5)

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_detail_place]

int<0..> 0

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • drv_violations
  • floating_nets
  • fmax
  • logicdepth
  • markers_view
  • module_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.4. detailed_route_antenna_repair#

Repair antenna violations on the detailed routing

Checks the routed design for antenna violations and, while any remain, inserts diodes and reroutes the affected nets. This is the only point in the flow where the antenna ratios being checked are the ones the design ships with, since earlier checks see global route guides rather than real wires.

Derives from the detailed routing task so the reroute uses exactly the detailed router configuration the initial route used. Repair needs the main library to declare an antenna cell; without one only the check runs.

Setting ant_margin above zero also enables the repair on a design the check reports as clean, since the point of a margin is to fix nets that are merely close to the antenna limit.

File: detailed_route.py

3.19.4.1. Methods#

DetailedRouteAntennaRepairTask.add_debuglevel(tool, category, level, clobber=False)[source]#
DetailedRouteAntennaRepairTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

DetailedRouteAntennaRepairTask.add_openroad_detailedroutedefaultvia(vias: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds default vias to use for detailed routing.

Parameters:
  • vias (Union[str, List[str]]) – The via(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

DetailedRouteAntennaRepairTask.add_openroad_detailedrouteunidirectionallayer(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to treat as unidirectional during detailed routing.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

DetailedRouteAntennaRepairTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

DetailedRouteAntennaRepairTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

DetailedRouteAntennaRepairTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

DetailedRouteAntennaRepairTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

DetailedRouteAntennaRepairTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

DetailedRouteAntennaRepairTask.set_openroad_antcheck(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables checking for antenna violations.

Parameters:
  • enable (bool) – True to check, False to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_antmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for antenna ratios.

Parameters:
  • margin (float) – The margin (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_antrepair(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables repairing antenna violations.

Parameters:
  • enable (bool) – True to repair, False to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_antrerouteiterations(iterations: int, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum number of antenna repair and reroute iterations.

This is the outer loop around repair_antennas and detailed_route, and is distinct from ant_iterations, which bounds the iterations inside a single repair_antennas call.

Use ant_repair to turn the repair off entirely.

Parameters:
  • iterations (int) – The number of iterations.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_dplusedecapfillers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the use of decap fillers.

Parameters:
  • enable (bool) – True to use decap fillers, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtdisableviagen(disable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables automatic via generation in the detailed router.

Parameters:
  • disable (bool) – True to disable via generation, False to enable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtenditeration(iteration: int, step: str | None = None, index: str | None = None)[source]#

Sets the end iteration for detailed routing.

Parameters:
  • iteration (int) – The iteration number.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtprocessnode(node: str, step: str | None = None, index: str | None = None)[source]#

Sets the process node for detailed routing.

Parameters:
  • node (str) – The process node name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtrepairpdnvias(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the layer to repair PDN vias on.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtreportinterval(interval: int, step: str | None = None, index: str | None = None)[source]#

Sets the reporting interval for detailed routing.

Parameters:
  • interval (int) – The interval in steps.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtviainpinbottomlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the bottom layer to allow vias inside pins.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_drtviainpintoplayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the top layer to allow vias inside pins.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteAntennaRepairTask.unset_debuglevel()[source]#

3.19.4.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.4.3. Variables#

Parameters

Type

Help

[...,var,ant_check]

bool

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

[...,var,ant_margin]

float<0.0..100.0>

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

[...,var,ant_repair]

bool

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

[...,var,ant_reroute_iterations]

int<1..>

maximum number of antenna repair and reroute iterations to perform

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,detailed_route_default_via]

[str]

list of default vias to use for detail routing

[...,var,detailed_route_unidirectional_layer]

[str]

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

[...,var,dpl_use_decap_fillers]

bool

true/false, use decap fillers along with non-decap fillers

[...,var,drt_disable_via_gen]

bool

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

[...,var,drt_end_iteration]

int<1..64>

end iteration for detailed routing

[...,var,drt_process_node]

str

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

[...,var,drt_repair_pdn_vias]

str

layer to repair PDN vias on

[...,var,drt_report_interval]

int<1..64>

reporting interval in steps for generating a DRC report.

[...,var,drt_via_in_pin_bottom_layer]

str

bottom layer to allow vias inside pins

[...,var,drt_via_in_pin_top_layer]

str

top layer to allow vias inside pins

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.4.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,detailed_route_antenna_repair,var,ant_check
  • tool,openroad,task,detailed_route_antenna_repair,var,ant_margin
  • tool,openroad,task,detailed_route_antenna_repair,var,ant_repair
  • tool,openroad,task,detailed_route_antenna_repair,var,ant_reroute_iterations
  • tool,openroad,task,detailed_route_antenna_repair,var,apply_pex_correction
  • tool,openroad,task,detailed_route_antenna_repair,var,dpl_use_decap_fillers
  • tool,openroad,task,detailed_route_antenna_repair,var,drt_disable_via_gen
  • tool,openroad,task,detailed_route_antenna_repair,var,drt_report_interval
  • tool,openroad,task,detailed_route_antenna_repair,var,enablehier
  • tool,openroad,task,detailed_route_antenna_repair,var,grt_resistance_aware
  • tool,openroad,task,detailed_route_antenna_repair,var,load_grt_setup
  • tool,openroad,task,detailed_route_antenna_repair,var,load_sdcs
  • tool,openroad,task,detailed_route_antenna_repair,var,opensta_generic_sdc
  • tool,openroad,task,detailed_route_antenna_repair,var,ord_enable_images
  • tool,openroad,task,detailed_route_antenna_repair,var,ord_heatmap_bins
  • tool,openroad,task,detailed_route_antenna_repair,var,power_corner
  • tool,openroad,task,detailed_route_antenna_repair,var,rsz_default_pex_corner
  • tool,openroad,task,detailed_route_antenna_repair,var,sta_define_path_groups
  • tool,openroad,task,detailed_route_antenna_repair,var,sta_early_timing_derate
  • tool,openroad,task,detailed_route_antenna_repair,var,sta_late_timing_derate
  • tool,openroad,task,detailed_route_antenna_repair,var,sta_top_n_paths
  • tool,openroad,task,detailed_route_antenna_repair,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_detailed_route_antenna_repair.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,ant_check]

bool True

[...,var,ant_margin]

float<0.0..100.0> 0

[...,var,ant_repair]

bool True

[...,var,ant_reroute_iterations]

int<1..> 5

[...,var,apply_pex_correction]

bool True

[...,var,dpl_use_decap_fillers]

bool True

[...,var,drt_disable_via_gen]

bool False

[...,var,drt_report_interval]

int<1..64> 5

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.5. detailed_route#

Perform detailed routing

File: detailed_route.py

3.19.5.1. Methods#

DetailedRouteTask.add_debuglevel(tool, category, level, clobber=False)[source]#
DetailedRouteTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

DetailedRouteTask.add_openroad_detailedroutedefaultvia(vias: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds default vias to use for detailed routing.

Parameters:
  • vias (Union[str, List[str]]) – The via(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

DetailedRouteTask.add_openroad_detailedrouteunidirectionallayer(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to treat as unidirectional during detailed routing.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

DetailedRouteTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

DetailedRouteTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

DetailedRouteTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

DetailedRouteTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

DetailedRouteTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

DetailedRouteTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtdisableviagen(disable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables automatic via generation in the detailed router.

Parameters:
  • disable (bool) – True to disable via generation, False to enable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtenditeration(iteration: int, step: str | None = None, index: str | None = None)[source]#

Sets the end iteration for detailed routing.

Parameters:
  • iteration (int) – The iteration number.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtprocessnode(node: str, step: str | None = None, index: str | None = None)[source]#

Sets the process node for detailed routing.

Parameters:
  • node (str) – The process node name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtrepairpdnvias(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the layer to repair PDN vias on.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtreportinterval(interval: int, step: str | None = None, index: str | None = None)[source]#

Sets the reporting interval for detailed routing.

Parameters:
  • interval (int) – The interval in steps.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtviainpinbottomlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the bottom layer to allow vias inside pins.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_drtviainpintoplayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the top layer to allow vias inside pins.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

DetailedRouteTask.unset_debuglevel()[source]#

3.19.5.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.5.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,detailed_route_default_via]

[str]

list of default vias to use for detail routing

[...,var,detailed_route_unidirectional_layer]

[str]

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

[...,var,drt_disable_via_gen]

bool

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

[...,var,drt_end_iteration]

int<1..64>

end iteration for detailed routing

[...,var,drt_process_node]

str

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

[...,var,drt_repair_pdn_vias]

str

layer to repair PDN vias on

[...,var,drt_report_interval]

int<1..64>

reporting interval in steps for generating a DRC report.

[...,var,drt_via_in_pin_bottom_layer]

str

bottom layer to allow vias inside pins

[...,var,drt_via_in_pin_top_layer]

str

top layer to allow vias inside pins

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.5.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,detailed_route,var,apply_pex_correction
  • tool,openroad,task,detailed_route,var,drt_disable_via_gen
  • tool,openroad,task,detailed_route,var,drt_report_interval
  • tool,openroad,task,detailed_route,var,enablehier
  • tool,openroad,task,detailed_route,var,grt_resistance_aware
  • tool,openroad,task,detailed_route,var,load_grt_setup
  • tool,openroad,task,detailed_route,var,load_sdcs
  • tool,openroad,task,detailed_route,var,opensta_generic_sdc
  • tool,openroad,task,detailed_route,var,ord_enable_images
  • tool,openroad,task,detailed_route,var,ord_heatmap_bins
  • tool,openroad,task,detailed_route,var,power_corner
  • tool,openroad,task,detailed_route,var,rsz_default_pex_corner
  • tool,openroad,task,detailed_route,var,sta_define_path_groups
  • tool,openroad,task,detailed_route,var,sta_early_timing_derate
  • tool,openroad,task,detailed_route,var,sta_late_timing_derate
  • tool,openroad,task,detailed_route,var,sta_top_n_paths
  • tool,openroad,task,detailed_route,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_detailed_route.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,drt_disable_via_gen]

bool False

[...,var,drt_report_interval]

int<1..64> 5

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.6. endcap_tapcell_insertion#

Perform endcap and tap cell insertion

File: endcap_tapcell_insertion.py

3.19.6.1. Methods#

EndCapTapCellTask.add_debuglevel(tool, category, level, clobber=False)[source]#
EndCapTapCellTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

EndCapTapCellTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

EndCapTapCellTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

EndCapTapCellTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

EndCapTapCellTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

EndCapTapCellTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

EndCapTapCellTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

EndCapTapCellTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

EndCapTapCellTask.unset_debuglevel()[source]#

3.19.6.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.6.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.6.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • library,nangate45,tool,openroad,tapcells
  • tool,openroad,task,endcap_tapcell_insertion,var,apply_pex_correction
  • tool,openroad,task,endcap_tapcell_insertion,var,enablehier
  • tool,openroad,task,endcap_tapcell_insertion,var,grt_resistance_aware
  • tool,openroad,task,endcap_tapcell_insertion,var,load_grt_setup
  • tool,openroad,task,endcap_tapcell_insertion,var,load_sdcs
  • tool,openroad,task,endcap_tapcell_insertion,var,opensta_generic_sdc
  • tool,openroad,task,endcap_tapcell_insertion,var,ord_enable_images
  • tool,openroad,task,endcap_tapcell_insertion,var,ord_heatmap_bins
  • tool,openroad,task,endcap_tapcell_insertion,var,rsz_default_pex_corner
  • tool,openroad,task,endcap_tapcell_insertion,var,sta_define_path_groups
  • tool,openroad,task,endcap_tapcell_insertion,var,sta_early_timing_derate
  • tool,openroad,task,endcap_tapcell_insertion,var,sta_late_timing_derate
  • tool,openroad,task,endcap_tapcell_insertion,var,sta_top_n_paths
  • tool,openroad,task,endcap_tapcell_insertion,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_endcap_tapcell_insertion.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • floating_nets
  • markers_view
  • overdriven_nets
  • placement_density
  • placement_view
  • routing_view
  • scenarios
  • snapshot

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.7. fillercell_insertion#

Perform filler cell insertion

File: fillercell_insertion.py

3.19.7.1. Methods#

FillCellTask.add_debuglevel(tool, category, level, clobber=False)[source]#
FillCellTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

FillCellTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

FillCellTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

FillCellTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

FillCellTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

FillCellTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

FillCellTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_dplmaxdisplacement(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum cell displacement for detailed placement.

Parameters:
  • x (float) – The maximum displacement in X (microns).

  • y (float) – The maximum displacement in Y (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_dplusedecapfillers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the use of decap fillers.

Parameters:
  • enable (bool) – True to use decap fillers, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_dplusediamondlegalizer(enable: bool, step: str | None = None, index: str | None = None)[source]#

Selects the legacy diamond search legalizer for detailed placement.

Parameters:
  • enable (bool) – True to use the diamond search engine, False to use the negotiation-based legalizer.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_paddetailplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the detailed placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillCellTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillCellTask.unset_debuglevel()[source]#

3.19.7.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.7.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>)

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

[...,var,dpl_use_decap_fillers]

bool

true/false, use decap fillers along with non-decap fillers

[...,var,dpl_use_diamond_legalizer]

bool

true/false, legalize with the legacy diamond search engine instead of the negotiation-based legalizer the tool now defaults to

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int<0..>

detailed placement cell padding in number of sites

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.7.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,fillercell_insertion,var,apply_pex_correction
  • tool,openroad,task,fillercell_insertion,var,dpl_max_displacement
  • tool,openroad,task,fillercell_insertion,var,dpl_use_decap_fillers
  • tool,openroad,task,fillercell_insertion,var,dpl_use_diamond_legalizer
  • tool,openroad,task,fillercell_insertion,var,enablehier
  • tool,openroad,task,fillercell_insertion,var,grt_resistance_aware
  • tool,openroad,task,fillercell_insertion,var,load_grt_setup
  • tool,openroad,task,fillercell_insertion,var,load_sdcs
  • tool,openroad,task,fillercell_insertion,var,opensta_generic_sdc
  • tool,openroad,task,fillercell_insertion,var,ord_enable_images
  • tool,openroad,task,fillercell_insertion,var,ord_heatmap_bins
  • tool,openroad,task,fillercell_insertion,var,pad_detail_place
  • tool,openroad,task,fillercell_insertion,var,power_corner
  • tool,openroad,task,fillercell_insertion,var,rsz_default_pex_corner
  • tool,openroad,task,fillercell_insertion,var,sta_define_path_groups
  • tool,openroad,task,fillercell_insertion,var,sta_early_timing_derate
  • tool,openroad,task,fillercell_insertion,var,sta_late_timing_derate
  • tool,openroad,task,fillercell_insertion,var,sta_top_n_paths
  • tool,openroad,task,fillercell_insertion,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_fillercell_insertion.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>) (0, 0)

[...,var,dpl_use_decap_fillers]

bool True

[...,var,dpl_use_diamond_legalizer]

bool False

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_detail_place]

int<0..> 0

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • module_view
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.8. fillmetal_insertion#

Perform fill metal insertion

File: fillmetal_insertion.py

3.19.8.1. Methods#

FillMetalTask.add_debuglevel(tool, category, level, clobber=False)[source]#
FillMetalTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

FillMetalTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

FillMetalTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

FillMetalTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

FillMetalTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

FillMetalTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

FillMetalTask.set_openroad_addfill(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables adding fill to the design.

Parameters:
  • enable (bool) – True to enable fill, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_fillname(name: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the name of the metal fill deck to use.

Parameters:
  • name (str) – The name of the metal fill deck.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

FillMetalTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FillMetalTask.unset_debuglevel()[source]#

3.19.8.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.8.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,fill_name]

str

name of the metal fill deck to use, this is only required when the PDK ships more than one deck

[...,var,fin_add_fill]

bool

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

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.8.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,fillmetal_insertion,var,apply_pex_correction
  • tool,openroad,task,fillmetal_insertion,var,enablehier
  • tool,openroad,task,fillmetal_insertion,var,fin_add_fill
  • tool,openroad,task,fillmetal_insertion,var,grt_resistance_aware
  • tool,openroad,task,fillmetal_insertion,var,load_grt_setup
  • tool,openroad,task,fillmetal_insertion,var,load_sdcs
  • tool,openroad,task,fillmetal_insertion,var,opensta_generic_sdc
  • tool,openroad,task,fillmetal_insertion,var,ord_enable_images
  • tool,openroad,task,fillmetal_insertion,var,ord_heatmap_bins
  • tool,openroad,task,fillmetal_insertion,var,rsz_default_pex_corner
  • tool,openroad,task,fillmetal_insertion,var,sta_define_path_groups
  • tool,openroad,task,fillmetal_insertion,var,sta_early_timing_derate
  • tool,openroad,task,fillmetal_insertion,var,sta_late_timing_derate
  • tool,openroad,task,fillmetal_insertion,var,sta_top_n_paths
  • tool,openroad,task,fillmetal_insertion,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_fillmetal_insertion.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,fin_add_fill]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.9. global_placement#

Perform global placement

File: global_placement.py

3.19.9.1. Methods#

GlobalPlacementTask.add_debuglevel(tool, category, level, clobber=False)[source]#
GlobalPlacementTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

GlobalPlacementTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

GlobalPlacementTask.add_openroad_pinlayerhorizontal(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to use for horizontal pins.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

GlobalPlacementTask.add_openroad_pinlayervertical(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to use for vertical pins.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

GlobalPlacementTask.add_openroad_pplarguments(args: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds additional arguments to pass along to the pin placer.

Parameters:
  • args (Union[str, List[str]]) – The argument(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

GlobalPlacementTask.add_openroad_pplconstraints(constraints: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds pin placement constraints scripts.

Parameters:
  • constraints (Union[str, List[str]]) – The constraint file(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

GlobalPlacementTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

GlobalPlacementTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

GlobalPlacementTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

GlobalPlacementTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

GlobalPlacementTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_enablemultibitclustering(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables multibit clustering.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_enablescanchains(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables scan chain insertion.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_gplroutabilitydriven(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables routability-driven global placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_gplskipinitialplace(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables skipping initial placement during global placement.

Parameters:
  • enable (bool) – True to skip initial placement, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_gplskipio(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables skipping I/O placement during global placement.

Parameters:
  • enable (bool) – True to skip I/O placement, False to include it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_gpltimingdriven(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables timing-driven global placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_gpluniformplacementadjustment(adjustment: float, step: str | None = None, index: str | None = None)[source]#

Sets the uniform placement adjustment factor.

Parameters:
  • adjustment (float) – The adjustment factor (0.00 - 0.99).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_grtclockmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_grtclockminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_grtmacroextension(extension: int, step: str | None = None, index: str | None = None)[source]#

Sets the macro extension distance for global routing.

Parameters:
  • extension (int) – The extension distance in number of gcells.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_grtsignalmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_grtsignalminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_padglobalplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the global placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_placedensity(density: float, step: str | None = None, index: str | None = None)[source]#

Sets the global placement density.

Parameters:
  • density (float) – The target placement density (0.0 - 1.0).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_scanclockmixing(mixing: str, step: str | None = None, index: int | str | None = None)[source]#

Sets how scan chains handle clock domains.

Parameters:
  • mixing (str) – “clock_mix” to allow chains to mix clocks and edges, “no_mix” to restrict each chain to a single clock and edge.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_scanenableportpattern(pattern: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the pattern for the scan chain enable port.

Parameters:
  • pattern (str) – The port pattern.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_scaninportpattern(pattern: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the pattern for the scan chain input port.

Parameters:
  • pattern (str) – The port pattern.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_scanmaxchains(chains: int, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum number of scan chains.

Parameters:
  • chains (int) – The maximum number of chains. In “no_mix” this limit is applied per clock/edge pair.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_scanmaxlength(length: int, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum number of cells in a scan chain.

Parameters:
  • length (int) – The maximum chain length.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_scanoutportpattern(pattern: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the pattern for the scan chain output port.

Parameters:
  • pattern (str) – The port pattern.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalPlacementTask.unset_debuglevel()[source]#

3.19.9.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.9.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enable_multibit_clustering]

bool

true/false, when true multibit clustering will be performed.

[...,var,enable_scan_chains]

bool

true/false, when true scan chains will be inserted.

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,gpl_enable_skip_initial_place]

bool

true/false, when enabled a global placement skips the initial placement, before the main global placement pass.

[...,var,gpl_enable_skip_io]

bool

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

[...,var,gpl_routability_driven]

bool

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

[...,var,gpl_timing_driven]

bool

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

[...,var,gpl_uniform_placement_adjustment]

float<0.0..0.99>

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

[...,var,grt_clock_max_layer]

str

maximum layer to use for global routing of clock nets

[...,var,grt_clock_min_layer]

str

minimum layer to use for global routing of clock nets

[...,var,grt_macro_extension]

int<0..>

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

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,grt_signal_max_layer]

str

maximum layer to use for global routing of signals

[...,var,grt_signal_min_layer]

str

minimum layer to use for global routing of signals

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_global_place]

int<0..>

global placement cell padding in number of sites

[...,var,pin_layer_horizontal]

[str]

layers to use for horizontal pins

[...,var,pin_layer_vertical]

[str]

layers to use for vertical pins

[...,var,place_density]

float<0.0..1.0>

global placement density (0.0 - 1.0)

[...,var,power_corner]

str

corner to use for power analysis

[...,var,ppl_arguments]

[str]

additional arguments to pass along to the pin placer.

[...,var,ppl_constraints]

[file]

pin placement constraints scripts.

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,scan_clock_mixing]

enum

clock domain handling for scan chains, clock_mix builds chains that mix clocks and edges, no_mix builds chains holding a single clock and edge. Allowed values: clock_mix, no_mix

[...,var,scan_enable_port_pattern]

str

pattern of the scan chain enable port

[...,var,scan_in_port_pattern]

str

pattern of the scan chain in port

[...,var,scan_max_chains]

int<1..>

maximum number of scan chains, in no_mix this limit is applied per clock/edge pair

[...,var,scan_max_length]

int<1..>

maximum number of cells in a scan chain

[...,var,scan_out_port_pattern]

str

pattern of the scan chain out port

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.9.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,pin_layer_horizontal
  • library,freepdk45,tool,openroad,pin_layer_vertical
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • library,nangate45,tool,openroad,place_density
  • tool,openroad,task,global_placement,var,apply_pex_correction
  • tool,openroad,task,global_placement,var,enable_multibit_clustering
  • tool,openroad,task,global_placement,var,enable_scan_chains
  • tool,openroad,task,global_placement,var,enablehier
  • tool,openroad,task,global_placement,var,gpl_enable_skip_initial_place
  • tool,openroad,task,global_placement,var,gpl_enable_skip_io
  • tool,openroad,task,global_placement,var,gpl_routability_driven
  • tool,openroad,task,global_placement,var,gpl_timing_driven
  • tool,openroad,task,global_placement,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,global_placement,var,grt_clock_max_layer
  • tool,openroad,task,global_placement,var,grt_clock_min_layer
  • tool,openroad,task,global_placement,var,grt_macro_extension
  • tool,openroad,task,global_placement,var,grt_resistance_aware
  • tool,openroad,task,global_placement,var,grt_signal_max_layer
  • tool,openroad,task,global_placement,var,grt_signal_min_layer
  • tool,openroad,task,global_placement,var,load_grt_setup
  • tool,openroad,task,global_placement,var,load_sdcs
  • tool,openroad,task,global_placement,var,opensta_generic_sdc
  • tool,openroad,task,global_placement,var,ord_enable_images
  • tool,openroad,task,global_placement,var,ord_heatmap_bins
  • tool,openroad,task,global_placement,var,pad_global_place
  • tool,openroad,task,global_placement,var,pin_layer_horizontal
  • tool,openroad,task,global_placement,var,pin_layer_vertical
  • tool,openroad,task,global_placement,var,place_density
  • tool,openroad,task,global_placement,var,power_corner
  • tool,openroad,task,global_placement,var,rsz_default_pex_corner
  • tool,openroad,task,global_placement,var,sta_define_path_groups
  • tool,openroad,task,global_placement,var,sta_early_timing_derate
  • tool,openroad,task,global_placement,var,sta_late_timing_derate
  • tool,openroad,task,global_placement,var,sta_top_n_paths
  • tool,openroad,task,global_placement,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_global_placement.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enable_multibit_clustering]

bool False

[...,var,enable_scan_chains]

bool False

[...,var,enablehier]

bool False

[...,var,gpl_enable_skip_initial_place]

bool False

[...,var,gpl_enable_skip_io]

bool True

[...,var,gpl_routability_driven]

bool True

[...,var,gpl_timing_driven]

bool True

[...,var,gpl_uniform_placement_adjustment]

float<0.0..0.99> 0.0

[...,var,grt_clock_max_layer]

str metal7

[...,var,grt_clock_min_layer]

str metal2

[...,var,grt_macro_extension]

int<0..> 0

[...,var,grt_resistance_aware]

bool False

[...,var,grt_signal_max_layer]

str metal7

[...,var,grt_signal_min_layer]

str metal2

[...,var,load_grt_setup]

bool True

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_global_place]

int<0..> 0

[...,var,pin_layer_horizontal]

[str] metal5

[...,var,pin_layer_vertical]

[str] metal6

[...,var,place_density]

float<0.0..1.0> 0.5

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • design_stats
  • floating_nets
  • fmax
  • logicdepth
  • markers_view
  • module_view
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • report_buffers
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,scan_clock_mixing]

enum clock_mix

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.10. global_route#

Perform global routing

File: global_route.py

3.19.10.1. Methods#

GlobalRouteTask.add_debuglevel(tool, category, level, clobber=False)[source]#
GlobalRouteTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

GlobalRouteTask.add_openroad_detailedroutedefaultvia(vias: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds default vias to use for detailed routing.

Parameters:
  • vias (Union[str, List[str]]) – The via(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

GlobalRouteTask.add_openroad_detailedrouteunidirectionallayer(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to treat as unidirectional during detailed routing.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

GlobalRouteTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

GlobalRouteTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

GlobalRouteTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

GlobalRouteTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

GlobalRouteTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

GlobalRouteTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_drtprocessnode(node: str, step: str | None = None, index: str | None = None)[source]#

Sets the process node for detailed routing.

Parameters:
  • node (str) – The process node name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtallowcongestion(allow: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables allowing congestion in global routing.

Parameters:
  • allow (bool) – True to allow congestion, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtclockmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtclockminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtmacroextension(extension: int, step: str | None = None, index: str | None = None)[source]#

Sets the macro extension distance for global routing.

Parameters:
  • extension (int) – The extension distance in number of gcells.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtoverflowiter(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of overflow iterations for global routing.

Parameters:
  • iterations (int) – The number of iterations.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtseed(seed: int, step: str | None = None, index: str | None = None)[source]#

Sets the random seed for global routing.

Parameters:
  • seed (int) – The random seed.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtsignalmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_grtsignalminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.set_openroad_usepinaccess(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables performing pin access before global routing.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

GlobalRouteTask.unset_debuglevel()[source]#

3.19.10.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.10.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,detailed_route_default_via]

[str]

list of default vias to use for detail routing

[...,var,detailed_route_unidirectional_layer]

[str]

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

[...,var,drt_process_node]

str

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_allow_congestion]

bool

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

[...,var,grt_clock_max_layer]

str

maximum layer to use for global routing of clock nets

[...,var,grt_clock_min_layer]

str

minimum layer to use for global routing of clock nets

[...,var,grt_macro_extension]

int<0..>

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

[...,var,grt_overflow_iter]

int<1..>

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

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,grt_seed]

int

random seed for global routing, unset uses the tool default

[...,var,grt_signal_max_layer]

str

maximum layer to use for global routing of signals

[...,var,grt_signal_min_layer]

str

minimum layer to use for global routing of signals

[...,var,grt_use_pin_access]

bool

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

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.10.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,global_route,var,apply_pex_correction
  • tool,openroad,task,global_route,var,enablehier
  • tool,openroad,task,global_route,var,grt_allow_congestion
  • tool,openroad,task,global_route,var,grt_clock_max_layer
  • tool,openroad,task,global_route,var,grt_clock_min_layer
  • tool,openroad,task,global_route,var,grt_macro_extension
  • tool,openroad,task,global_route,var,grt_overflow_iter
  • tool,openroad,task,global_route,var,grt_resistance_aware
  • tool,openroad,task,global_route,var,grt_signal_max_layer
  • tool,openroad,task,global_route,var,grt_signal_min_layer
  • tool,openroad,task,global_route,var,grt_use_pin_access
  • tool,openroad,task,global_route,var,load_grt_setup
  • tool,openroad,task,global_route,var,load_sdcs
  • tool,openroad,task,global_route,var,opensta_generic_sdc
  • tool,openroad,task,global_route,var,ord_enable_images
  • tool,openroad,task,global_route,var,ord_heatmap_bins
  • tool,openroad,task,global_route,var,power_corner
  • tool,openroad,task,global_route,var,rsz_default_pex_corner
  • tool,openroad,task,global_route,var,sta_define_path_groups
  • tool,openroad,task,global_route,var,sta_early_timing_derate
  • tool,openroad,task,global_route,var,sta_late_timing_derate
  • tool,openroad,task,global_route,var,sta_top_n_paths
  • tool,openroad,task,global_route,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_global_route.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_allow_congestion]

bool False

[...,var,grt_clock_max_layer]

str metal7

[...,var,grt_clock_min_layer]

str metal2

[...,var,grt_macro_extension]

int<0..> 0

[...,var,grt_overflow_iter]

int<1..> 100

[...,var,grt_resistance_aware]

bool False

[...,var,grt_signal_max_layer]

str metal7

[...,var,grt_signal_min_layer]

str metal2

[...,var,grt_use_pin_access]

bool False

[...,var,load_grt_setup]

bool True

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.11. init_floorplan#

Perform floorplanning and initial pin placements.

This task handles the initialization of the floorplan, including macro placement snapping strategies, cleaning up synthesis artifacts (buffers/dead logic), and defining padring or bumpmap configurations.

File: init_floorplan.py

3.19.11.1. Methods#

InitFloorplanTask.add_debuglevel(tool, category, level, clobber=False)[source]#
InitFloorplanTask.add_openroad_bumpmapfileset(fileset: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds fileset(s) used to generate the bump map for flip-chip or 3D designs.

Parameters:
  • fileset – A string name or list of names representing the bumpmap filesets.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing bumpmap fileset list. If False, appends to the existing list.

InitFloorplanTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

InitFloorplanTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

InitFloorplanTask.add_openroad_padringfileset(fileset: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds fileset(s) used to generate the I/O pad ring.

Parameters:
  • fileset – A string name or list of names representing the padring filesets.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing padring fileset list. If False, appends to the existing list.

InitFloorplanTask.add_openroad_pinlayerhorizontal(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to use for horizontal pins.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

InitFloorplanTask.add_openroad_pinlayervertical(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to use for vertical pins.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

InitFloorplanTask.add_openroad_placementblockage(x0: float, y0: float, x1: float, y1: float, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a placement blockage defined by the coordinates of its lower-left (x0, y0) and upper-right (x1, y1) corners.

Parameters:
  • x0 – X-coordinate of the lower-left corner of the blockage.

  • y0 – Y-coordinate of the lower-left corner of the blockage.

  • x1 – X-coordinate of the upper-right corner of the blockage.

  • y1 – Y-coordinate of the upper-right corner of the blockage.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing placement blockage list. If False, appends to the existing list.

InitFloorplanTask.add_openroad_pplarguments(args: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds additional arguments to pass along to the pin placer.

Parameters:
  • args (Union[str, List[str]]) – The argument(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

InitFloorplanTask.add_openroad_pplconstraints(constraints: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds pin placement constraints scripts.

Parameters:
  • constraints (Union[str, List[str]]) – The constraint file(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

InitFloorplanTask.add_openroad_routingblockage(layer: str, x0: float, y0: float, x1: float, y1: float, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a routing blockage defined by the coordinates of its lower-left (x0, y0) and upper-right (x1, y1) corners.

Parameters:
  • layer – The routing layer to which this blockage applies.

  • x0 – X-coordinate of the lower-left corner of the blockage.

  • y0 – Y-coordinate of the lower-left corner of the blockage.

  • x1 – X-coordinate of the upper-right corner of the blockage.

  • y1 – Y-coordinate of the upper-right corner of the blockage.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing routing blockage list. If False, appends to the existing list.

InitFloorplanTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

InitFloorplanTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

InitFloorplanTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

InitFloorplanTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

InitFloorplanTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_assertallpinsplaced(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables an assertion that all pins are placed after floorplanning.

Parameters:
  • enable – True to assert that all pins are placed, False to disable this assertion.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_removebuffers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the removal of buffers inserted during synthesis.

Parameters:
  • enable – True to remove synthesis buffers, False to keep them.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_removedeadlogic(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the removal of logic that does not drive a primary output.

Parameters:
  • enable – True to remove dead logic, False to keep it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_snapstrategy(snap: str, step: str | None = None, index: str | None = None)[source]#

Sets the snapping strategy for macro placement.

Parameters:
  • snap – The snapping mode. Options are typically ‘none’, ‘site’, or ‘grid’.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

InitFloorplanTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

InitFloorplanTask.unset_debuglevel()[source]#

3.19.11.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

sc-common

  • Path: python://siliconcompiler/tools/_common

siliconcompiler

  • Path: python://siliconcompiler

3.19.11.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,assert_all_pins_placed]

bool

assert that all pins are placed

[...,var,bumpmapfileset]

[str]

filesets to generate a bumpmap

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,ifp_snap_strategy]

enum

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

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,padringfileset]

[str]

filesets to generate a padring

[...,var,pin_layer_horizontal]

[str]

layers to use for horizontal pins

[...,var,pin_layer_vertical]

[str]

layers to use for vertical pins

[...,var,placementblockage]

[((float,float),(float,float))]

Placement blockage coordinates

[...,var,power_corner]

str

corner to use for power analysis

[...,var,ppl_arguments]

[str]

additional arguments to pass along to the pin placer.

[...,var,ppl_constraints]

[file]

pin placement constraints scripts.

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,routingblockage]

[(str,(float,float),(float,float))]

Routing blockage coordinates

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,sc_pin_constraints_tcl]

file

TCL file defining pin constraints for use with OpenROAD.

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.11.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,area,aspectratio
  • constraint,area,coremargin
  • constraint,area,density
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,pin_layer_horizontal
  • library,freepdk45,tool,openroad,pin_layer_vertical
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • library,nangate45,asic,site
  • tool,openroad,task,init_floorplan,var,apply_pex_correction
  • tool,openroad,task,init_floorplan,var,assert_all_pins_placed
  • tool,openroad,task,init_floorplan,var,enablehier
  • tool,openroad,task,init_floorplan,var,grt_resistance_aware
  • tool,openroad,task,init_floorplan,var,ifp_snap_strategy
  • tool,openroad,task,init_floorplan,var,load_grt_setup
  • tool,openroad,task,init_floorplan,var,load_sdcs
  • tool,openroad,task,init_floorplan,var,opensta_generic_sdc
  • tool,openroad,task,init_floorplan,var,ord_enable_images
  • tool,openroad,task,init_floorplan,var,ord_heatmap_bins
  • tool,openroad,task,init_floorplan,var,pin_layer_horizontal
  • tool,openroad,task,init_floorplan,var,pin_layer_vertical
  • tool,openroad,task,init_floorplan,var,power_corner
  • tool,openroad,task,init_floorplan,var,rsz_default_pex_corner
  • tool,openroad,task,init_floorplan,var,sta_define_path_groups
  • tool,openroad,task,init_floorplan,var,sta_early_timing_derate
  • tool,openroad,task,init_floorplan,var,sta_late_timing_derate
  • tool,openroad,task,init_floorplan,var,sta_top_n_paths
  • tool,openroad,task,init_floorplan,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_init_floorplan.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,assert_all_pins_placed]

bool False

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,ifp_snap_strategy]

enum site

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pin_layer_horizontal]

[str] metal5

[...,var,pin_layer_vertical]

[str] metal6

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • check_setup
  • design_stats
  • floating_nets
  • logicdepth
  • markers_view
  • overdriven_nets
  • placement_view
  • power
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sc_pin_constraints_tcl]

file

tcl/sc_pin_constraints.tcl, sc-common

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.12. macro_placement#

Macro placement

File: macro_placement.py

3.19.12.1. Methods#

MacroPlacementTask.add_debuglevel(tool, category, level, clobber=False)[source]#
MacroPlacementTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

MacroPlacementTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

MacroPlacementTask.add_openroad_mplconstraints(constraints: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds constraints scripts for macro placement.

Parameters:
  • constraints (Union[str, List[str]]) – The constraint file(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

MacroPlacementTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

MacroPlacementTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

MacroPlacementTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

MacroPlacementTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

MacroPlacementTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_gplroutabilitydriven(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables routability-driven global placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_gplskipinitialplace(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables skipping initial placement during global placement.

Parameters:
  • enable (bool) – True to skip initial placement, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_gplskipio(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables skipping I/O placement during global placement.

Parameters:
  • enable (bool) – True to skip I/O placement, False to include it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_gpltimingdriven(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables timing-driven global placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_gpluniformplacementadjustment(adjustment: float, step: str | None = None, index: str | None = None)[source]#

Sets the uniform placement adjustment factor.

Parameters:
  • adjustment (float) – The adjustment factor (0.00 - 0.99).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_macroplacehalo(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the macro halo to use when performing automated macro placement.

Parameters:
  • x (float) – Halo in X direction (microns).

  • y (float) – Halo in Y direction (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_makeblockages(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the creation of blockages during macro placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplareaweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for the area of the current floorplan.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplblockageweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for the blockage cost.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplboundaryweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for the boundary cost.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplbusplanning(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables bus planning.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplfence(llx: float, lly: float, urx: float, ury: float, step: str | None = None, index: str | None = None)[source]#

Defines the global fence bounding box coordinates.

Parameters:
  • llx (float) – Lower-left X coordinate (microns).

  • lly (float) – Lower-left Y coordinate (microns).

  • urx (float) – Upper-right X coordinate (microns).

  • ury (float) – Upper-right Y coordinate (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplfenceweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for fence cost.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplguidanceweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for guidance cost.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplmacroblockageweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for macro blockage cost.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplmaxinstances(count: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of instances to use while clustering for macro placement.

Parameters:
  • count (int) – The maximum instance count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplmaxlevels(levels: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum depth of the physical hierarchical tree.

Parameters:
  • levels (int) – The maximum levels.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplmaxmacros(count: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of macros to use while clustering for macro placement.

Parameters:
  • count (int) – The maximum macro count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplminaspectratio(ratio: float, step: str | None = None, index: str | None = None)[source]#

Sets the minimum aspect ratio of width to height of a standard cell cluster.

Parameters:
  • ratio (float) – The minimum aspect ratio.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplmininstances(count: int, step: str | None = None, index: str | None = None)[source]#

Sets the minimum number of instances to use while clustering for macro placement.

Parameters:
  • count (int) – The minimum instance count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplminmacros(count: int, step: str | None = None, index: str | None = None)[source]#

Sets the minimum number of macros to use while clustering for macro placement.

Parameters:
  • count (int) – The minimum macro count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplnotchweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for the notch cost.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mploutlineweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for violating the fixed outline constraint.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mpltargetdeadspace(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the target dead space percentage.

Parameters:
  • percentage (float) – The target dead space percentage.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_mplwirelengthweight(weight: float, step: str | None = None, index: str | None = None)[source]#

Sets the weight for half-perimeter wirelength.

Parameters:
  • weight (float) – The weight value.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_padglobalplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the global placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_placedensity(density: float, step: str | None = None, index: str | None = None)[source]#

Sets the global placement density.

Parameters:
  • density (float) – The target placement density (0.0 - 1.0).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MacroPlacementTask.unset_debuglevel()[source]#

3.19.12.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.12.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,gpl_enable_skip_initial_place]

bool

true/false, when enabled a global placement skips the initial placement, before the main global placement pass.

[...,var,gpl_enable_skip_io]

bool

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

[...,var,gpl_routability_driven]

bool

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

[...,var,gpl_timing_driven]

bool

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

[...,var,gpl_uniform_placement_adjustment]

float<0.0..0.99>

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

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,macro_place_halo]

(float<0.0..>,float<0.0..>)

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

[...,var,mpl_area_weight]

float<0.0..>

Weight for the area of current floorplan

[...,var,mpl_blockage_weight]

float<0.0..>

Weight for the boundary, or how far the hard macro clusters are from boundaries

[...,var,mpl_boundary_weight]

float<0.0..>

Weight for the boundary, or how far the hard macro clusters are from boundaries. Note that mixed macro clusters are not pushed, thus not considered in this cost.

[...,var,mpl_bus_planning]

bool

Flag to enable bus planning

[...,var,mpl_constraints]

[file]

constraints script for macro placement

[...,var,mpl_fence]

(float<0.0..>,float<0.0..>,float<0.0..>,float<0.0..>)

Defines the global fence bounding box coordinates (llx, lly, urx, ury)

[...,var,mpl_fence_weight]

float<0.0..>

Weight for fence cost, or how far the macro is from zero fence violation

[...,var,mpl_guidance_weight]

float<0.0..>

Weight for guidance cost or clusters being placed near specified regions if users provide such constraints

[...,var,mpl_macro_blockage_weight]

float<0.0..>

Weight for macro blockage, or the overlapping instances of the macro

[...,var,mpl_makeblockages]

bool

flag to enable or disable the creation of blockages during macro placement

[...,var,mpl_max_instances]

int<1..>

maximum number of instances to use while clustering for macro placement

[...,var,mpl_max_levels]

int<1..>

maximum depth of physical hierarchical tree

[...,var,mpl_max_macros]

int<1..>

maximum number of macros to use while clustering for macro placement

[...,var,mpl_min_aspect_ratio]

float<0.0..>

Specifies the minimum aspect ratio of its width to height of a standard cell cluster

[...,var,mpl_min_instances]

int<1..>

minimum number of instances to use while clustering for macro placement

[...,var,mpl_min_macros]

int<1..>

minimum number of macros to use while clustering for macro placement

[...,var,mpl_notch_weight]

float<0.0..>

Weight for the notch, or the existence of dead space that cannot be used for placement & routing

[...,var,mpl_outline_weight]

float<0.0..>

Weight for violating the fixed outline constraint, meaning that all clusters should be placed within the shape of their parent cluster

[...,var,mpl_target_dead_space]

float

Specifies the target dead space percentage, which influences the utilization of standard cell clusters

[...,var,mpl_wirelength_weight]

float<0.0..>

Weight for half-perimeter wirelength

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_global_place]

int<0..>

global placement cell padding in number of sites

[...,var,place_density]

float<0.0..1.0>

global placement density (0.0 - 1.0)

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.12.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • library,nangate45,tool,openroad,macro_placement_halo
  • library,nangate45,tool,openroad,place_density
  • tool,openroad,task,macro_placement,var,apply_pex_correction
  • tool,openroad,task,macro_placement,var,enablehier
  • tool,openroad,task,macro_placement,var,gpl_enable_skip_initial_place
  • tool,openroad,task,macro_placement,var,gpl_enable_skip_io
  • tool,openroad,task,macro_placement,var,gpl_routability_driven
  • tool,openroad,task,macro_placement,var,gpl_timing_driven
  • tool,openroad,task,macro_placement,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,macro_placement,var,grt_resistance_aware
  • tool,openroad,task,macro_placement,var,load_grt_setup
  • tool,openroad,task,macro_placement,var,load_sdcs
  • tool,openroad,task,macro_placement,var,macro_place_halo
  • tool,openroad,task,macro_placement,var,mpl_bus_planning
  • tool,openroad,task,macro_placement,var,mpl_makeblockages
  • tool,openroad,task,macro_placement,var,opensta_generic_sdc
  • tool,openroad,task,macro_placement,var,ord_enable_images
  • tool,openroad,task,macro_placement,var,ord_heatmap_bins
  • tool,openroad,task,macro_placement,var,pad_global_place
  • tool,openroad,task,macro_placement,var,place_density
  • tool,openroad,task,macro_placement,var,rsz_default_pex_corner
  • tool,openroad,task,macro_placement,var,sta_define_path_groups
  • tool,openroad,task,macro_placement,var,sta_early_timing_derate
  • tool,openroad,task,macro_placement,var,sta_late_timing_derate
  • tool,openroad,task,macro_placement,var,sta_top_n_paths
  • tool,openroad,task,macro_placement,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_macro_placement.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,gpl_enable_skip_initial_place]

bool False

[...,var,gpl_enable_skip_io]

bool True

[...,var,gpl_routability_driven]

bool True

[...,var,gpl_timing_driven]

bool True

[...,var,gpl_uniform_placement_adjustment]

float<0.0..0.99> 0.0

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,macro_place_halo]

(float<0.0..>,float<0.0..>) (22.4, 15.12)

[...,var,mpl_bus_planning]

bool False

[...,var,mpl_makeblockages]

bool False

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_global_place]

int<0..> 0

[...,var,place_density]

float<0.0..1.0> 0.5

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • floating_nets
  • markers_view
  • overdriven_nets
  • placement_view
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.13. metrics#

Extract metrics

File: metrics.py

3.19.13.1. Methods#

MetricsTask.add_debuglevel(tool, category, level, clobber=False)[source]#
MetricsTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

MetricsTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

MetricsTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

MetricsTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

MetricsTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

MetricsTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

MetricsTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MetricsTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MetricsTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MetricsTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

MetricsTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MetricsTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

MetricsTask.unset_debuglevel()[source]#

3.19.13.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.13.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.13.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,metrics,var,apply_pex_correction
  • tool,openroad,task,metrics,var,enablehier
  • tool,openroad,task,metrics,var,grt_resistance_aware
  • tool,openroad,task,metrics,var,load_grt_setup
  • tool,openroad,task,metrics,var,load_sdcs
  • tool,openroad,task,metrics,var,opensta_generic_sdc
  • tool,openroad,task,metrics,var,ord_enable_images
  • tool,openroad,task,metrics,var,ord_heatmap_bins
  • tool,openroad,task,metrics,var,power_corner
  • tool,openroad,task,metrics,var,rsz_default_pex_corner
  • tool,openroad,task,metrics,var,sta_define_path_groups
  • tool,openroad,task,metrics,var,sta_early_timing_derate
  • tool,openroad,task,metrics,var,sta_late_timing_derate
  • tool,openroad,task,metrics,var,sta_top_n_paths
  • tool,openroad,task,metrics,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_metrics.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.14. calibrate_pex#

Calibrate OpenROAD’s pre-route parasitic estimate against a golden OpenRCX extraction on a routed design.

For each PEX corner this task extracts the design with the PDK’s OpenRCX deck, walks the extracted parasitic segments to accumulate per-layer capacitance / resistance / length (the inputs used to calibrate OpenROADPDK.add_openroad_rccorrection()), and records a per-net estimate-vs-golden capacitance report so the estimation error can be scored before and after calibration. It is a terminal analysis node and produces no design views.

The estimate honors the PDK’s rccorrection like any node: the derivation survey runs against a PDK with no correction (uncorrected estimate – and the derived factor is independent of it anyway, since it divides the golden sums by the stored rclayer), while the --score step applies the derived correction to the whole flow and re-runs to measure the residual error.

File: pex.py

3.19.14.1. Methods#

CalibratePEXTask.add_debuglevel(tool, category, level, clobber=False)[source]#
CalibratePEXTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

CalibratePEXTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

CalibratePEXTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

CalibratePEXTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

CalibratePEXTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

CalibratePEXTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

CalibratePEXTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CalibratePEXTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CalibratePEXTask.unset_debuglevel()[source]#

3.19.14.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.14.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pex_corners]

{str}

set of pex corners to calibrate against

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.14.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.perlayer.csv

  • top.nets.csv

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,openroad.pex,file,openrcx
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,pdk,pexmodelfileset,openroad,typical
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,calibrate_pex,var,apply_pex_correction
  • tool,openroad,task,calibrate_pex,var,enablehier
  • tool,openroad,task,calibrate_pex,var,grt_resistance_aware
  • tool,openroad,task,calibrate_pex,var,load_grt_setup
  • tool,openroad,task,calibrate_pex,var,load_sdcs
  • tool,openroad,task,calibrate_pex,var,opensta_generic_sdc
  • tool,openroad,task,calibrate_pex,var,ord_enable_images
  • tool,openroad,task,calibrate_pex,var,ord_heatmap_bins
  • tool,openroad,task,calibrate_pex,var,pex_corners
  • tool,openroad,task,calibrate_pex,var,rsz_default_pex_corner
  • tool,openroad,task,calibrate_pex,var,sta_define_path_groups
  • tool,openroad,task,calibrate_pex,var,sta_early_timing_derate
  • tool,openroad,task,calibrate_pex,var,sta_late_timing_derate
  • tool,openroad,task,calibrate_pex,var,sta_top_n_paths
  • tool,openroad,task,calibrate_pex,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_calibrate_pex.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool False

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pex_corners]

{str} typical

[...,var,power_corner]

str typical

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=26Q3-23

[...,vswitch]

[str] -version

3.19.15. rcx_bench#

Builds the bench_wires pattern design used to characterize the OpenRCX extraction deck.

Shares the bench script with PEXBenchTask - it writes the pattern verilog netlist and DEF for a third-party “golden” PEX tool and the OpenRCX extract step. The difference is the top layer: this deck-generation bench defaults max_layer to the PDK’s rcx_maxlayer when set, because some PDKs cannot bench all the way to the top metal and the golden tool only needs the layers the deck characterizes. (The PEX estimate bench has no such limit and benches to the top routing layer.) An explicit max_layer still wins.

File: pex.py

3.19.15.1. Methods#

ORXBenchTask.add_debuglevel(tool, category, level, clobber=False)[source]#
ORXBenchTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

ORXBenchTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ORXBenchTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ORXBenchTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ORXBenchTask.set_openroad_benchlength(length: float, step: str | None = None, index: int | str | None = None)[source]#

Sets the length of the bench wires, in microns.

ORXBenchTask.set_openroad_benchmaxlayer(layer: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum routing layer to generate the bench for.

ORXBenchTask.unset_debuglevel()[source]#

3.19.15.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

3.19.15.3. Variables#

Parameters

Type

Help

[...,var,bench_length]

float<0.0..>

length of the bench wires

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,max_layer]

str

maximum routing layer to generate the bench for; defaults to the top routing layer in the tech

3.19.15.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.vg

  • top.def.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,pdk,aprtechfileset,openroad
  • tool,openroad,task,rcx_bench,var,bench_length

[...,script]

[file]

pex/sc_bench.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,bench_length]

float<0.0..> 100

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.16. rcx_extract#

Convert a third-party “golden” SPEF of the bench_wires patterns into a calibrated OpenRCX rules deck.

File: pex.py

3.19.16.1. Methods#

ORXExtractTask.add_debuglevel(tool, category, level, clobber=False)[source]#
ORXExtractTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

ORXExtractTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ORXExtractTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ORXExtractTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ORXExtractTask.set_openroad_rcxcorner(corner: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the parasitic corner to generate the RCX file for.

Parameters:
  • corner (str) – The parasitic corner name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ORXExtractTask.unset_debuglevel()[source]#

3.19.16.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

3.19.16.3. Variables#

Parameters

Type

Help

[...,var,corner]

str

Parasitic corner to generate RCX file for

[...,var,debug_level]

{(str,str,int<0..>)}

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

3.19.16.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,input]

[file]
  • top.def.gz

  • top.<corner>.spef

[...,output]

[file]

top.<corner>.rcx

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,pdk,aprtechfileset,openroad
  • tool,openroad,task,rcx_extract,var,corner

[...,script]

[file]

pex/sc_rcx_extract.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,corner]

str <corner>

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.17. pex_bench_extract#

Extract the bench_wires patterns with the PDK’s OpenRCX deck to derive the initial per-layer estimate model (resistance ohm/um, capacitance F/um).

Walks the per-segment parasitics (the same method as the calibrate task) to produce one row per (corner, layer). These values seed OpenROADPDK.add_openroad_rclayer(); the design survey then refines them with OpenROADPDK.add_openroad_rccorrection().

File: pex.py

3.19.17.1. Methods#

PEXBenchExtractTask.add_debuglevel(tool, category, level, clobber=False)[source]#
PEXBenchExtractTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

PEXBenchExtractTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

PEXBenchExtractTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

PEXBenchExtractTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

PEXBenchExtractTask.unset_debuglevel()[source]#

3.19.17.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

3.19.17.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,pex_corners]

{str}

set of pex corners to derive the estimate model for

3.19.17.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,input]

[file]

top.def.gz

[...,output]

[file]

top.rclayer.csv

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • library,freepdk45,fileset,openroad.pex,file,openrcx
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,pdk,aprtechfileset,openroad
  • library,freepdk45,pdk,pexmodelfileset,openroad,typical
  • tool,openroad,task,pex_bench_extract,var,pex_corners

[...,script]

[file]

pex/sc_pex_extract.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,pex_corners]

{str} typical

[...,version]

[str] >=26Q3-23

[...,vswitch]

[str] -version

3.19.18. pex_bench#

Generate synthetic wire patterns (bench_wires) for deriving the initial per-layer parasitic estimate model.

Reads only the tech LEF and writes a pattern verilog netlist and DEF, which PEXBenchExtractTask re-reads and extracts. The two are separate tasks because a same-process bench_wires followed by extract_parasitics fails (RCX-0487); the DEF must be re-read in a fresh process.

This is the same bench used to seed the OpenRCX deck-generation flow (ORXBenchTask); the highest routing layer defaults to the top of the tech when max_layer is not set.

File: pex.py

3.19.18.1. Methods#

PEXBenchTask.add_debuglevel(tool, category, level, clobber=False)[source]#
PEXBenchTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

PEXBenchTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

PEXBenchTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

PEXBenchTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

PEXBenchTask.set_openroad_benchlength(length: float, step: str | None = None, index: int | str | None = None)[source]#

Sets the length of the bench wires, in microns.

PEXBenchTask.set_openroad_benchmaxlayer(layer: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum routing layer to generate the bench for.

PEXBenchTask.unset_debuglevel()[source]#

3.19.18.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

3.19.18.3. Variables#

Parameters

Type

Help

[...,var,bench_length]

float<0.0..>

length of the bench wires

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,max_layer]

str

maximum routing layer to generate the bench for; defaults to the top routing layer in the tech

3.19.18.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.vg

  • top.def.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,pdk,aprtechfileset,openroad
  • tool,openroad,task,pex_bench,var,bench_length

[...,script]

[file]

pex/sc_bench.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 1

[...,var,bench_length]

float<0.0..> 100

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.19. open3dblox#

Open a 3D view of the design in openroad.

File: open.py

3.19.19.1. Methods#

Open3DBloxTask.add_debuglevel(tool, category, level, clobber=False)[source]#
Open3DBloxTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

Open3DBloxTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

Open3DBloxTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

Open3DBloxTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

Open3DBloxTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

Open3DBloxTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

Open3DBloxTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

Open3DBloxTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

Open3DBloxTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

Open3DBloxTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

Open3DBloxTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

Open3DBloxTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

Open3DBloxTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

Open3DBloxTask.has_show_node() → bool[source]#

Whether shownode has been provided.

Open3DBloxTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

Open3DBloxTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Open3DBloxTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

Open3DBloxTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

Open3DBloxTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

Open3DBloxTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

Open3DBloxTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

Open3DBloxTask.unset_debuglevel()[source]#

3.19.19.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.19.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.19.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,open3dblox,var,apply_pex_correction
  • tool,openroad,task,open3dblox,var,enablehier
  • tool,openroad,task,open3dblox,var,grt_resistance_aware
  • tool,openroad,task,open3dblox,var,load_grt_setup
  • tool,openroad,task,open3dblox,var,load_sdcs
  • tool,openroad,task,open3dblox,var,opensta_generic_sdc
  • tool,openroad,task,open3dblox,var,ord_enable_images
  • tool,openroad,task,open3dblox,var,ord_heatmap_bins
  • tool,openroad,task,open3dblox,var,rsz_default_pex_corner
  • tool,openroad,task,open3dblox,var,showexit
  • tool,openroad,task,open3dblox,var,showfilepath
  • tool,openroad,task,open3dblox,var,showfiletype
  • tool,openroad,task,open3dblox,var,sta_define_path_groups
  • tool,openroad,task,open3dblox,var,sta_early_timing_derate
  • tool,openroad,task,open3dblox,var,sta_late_timing_derate
  • tool,openroad,task,open3dblox,var,sta_top_n_paths
  • tool,openroad,task,open3dblox,var,sta_unique_path_groups_per_clock

[...,script]

[file]

sc_open.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,rsz_default_pex_corner]

str typical

[...,var,showexit]

bool False

[...,var,showfiletype]

str 3dbx

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=26Q2-565

[...,vswitch]

[str] -version

3.19.20. open#

Open a design in openroad.

Reuses the APR input handling so the same odb/def/vg/sdc selection logic (including enablehier linking and load_sdcs) is applied. When a showfilepath is provided (e.g. via sc-show -open) the file plus any sibling sdc files from the source node are copied into inputs at runtime.

File: open.py

3.19.20.1. Methods#

OpenTask.add_debuglevel(tool, category, level, clobber=False)[source]#
OpenTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

OpenTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

OpenTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

OpenTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

OpenTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

OpenTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

OpenTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

OpenTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

OpenTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

OpenTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

OpenTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

OpenTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

OpenTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

OpenTask.has_show_node() → bool[source]#

Whether shownode has been provided.

OpenTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

OpenTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

OpenTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

OpenTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

OpenTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

OpenTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

OpenTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

OpenTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

OpenTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

OpenTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

OpenTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

OpenTask.unset_debuglevel()[source]#

3.19.20.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.20.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.20.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,open,var,apply_pex_correction
  • tool,openroad,task,open,var,enablehier
  • tool,openroad,task,open,var,grt_resistance_aware
  • tool,openroad,task,open,var,load_grt_setup
  • tool,openroad,task,open,var,load_sdcs
  • tool,openroad,task,open,var,opensta_generic_sdc
  • tool,openroad,task,open,var,ord_enable_images
  • tool,openroad,task,open,var,ord_heatmap_bins
  • tool,openroad,task,open,var,rsz_default_pex_corner
  • tool,openroad,task,open,var,showexit
  • tool,openroad,task,open,var,showfilepath
  • tool,openroad,task,open,var,showfiletype
  • tool,openroad,task,open,var,sta_define_path_groups
  • tool,openroad,task,open,var,sta_early_timing_derate
  • tool,openroad,task,open,var,sta_late_timing_derate
  • tool,openroad,task,open,var,sta_top_n_paths
  • tool,openroad,task,open,var,sta_unique_path_groups_per_clock

[...,script]

[file]

sc_open.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,rsz_default_pex_corner]

str typical

[...,var,showexit]

bool False

[...,var,showfiletype]

str vg

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.21. pin_placement#

Perform IO pin placement refinement

File: pin_placement.py

3.19.21.1. Methods#

PinPlacementTask.add_debuglevel(tool, category, level, clobber=False)[source]#
PinPlacementTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

PinPlacementTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

PinPlacementTask.add_openroad_pinlayerhorizontal(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to use for horizontal pins.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PinPlacementTask.add_openroad_pinlayervertical(layers: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds layers to use for vertical pins.

Parameters:
  • layers (Union[str, List[str]]) – The layer(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PinPlacementTask.add_openroad_pplarguments(args: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds additional arguments to pass along to the pin placer.

Parameters:
  • args (Union[str, List[str]]) – The argument(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PinPlacementTask.add_openroad_pplconstraints(constraints: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds pin placement constraints scripts.

Parameters:
  • constraints (Union[str, List[str]]) – The constraint file(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PinPlacementTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

PinPlacementTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

PinPlacementTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

PinPlacementTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

PinPlacementTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_gplroutabilitydriven(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables routability-driven global placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_gplskipinitialplace(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables skipping initial placement during global placement.

Parameters:
  • enable (bool) – True to skip initial placement, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_gplskipio(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables skipping I/O placement during global placement.

Parameters:
  • enable (bool) – True to skip I/O placement, False to include it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_gpltimingdriven(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables timing-driven global placement.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_gpluniformplacementadjustment(adjustment: float, step: str | None = None, index: str | None = None)[source]#

Sets the uniform placement adjustment factor.

Parameters:
  • adjustment (float) – The adjustment factor (0.00 - 0.99).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_padglobalplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the global placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_placedensity(density: float, step: str | None = None, index: str | None = None)[source]#

Sets the global placement density.

Parameters:
  • density (float) – The target placement density (0.0 - 1.0).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PinPlacementTask.unset_debuglevel()[source]#

3.19.21.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.21.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,gpl_enable_skip_initial_place]

bool

true/false, when enabled a global placement skips the initial placement, before the main global placement pass.

[...,var,gpl_enable_skip_io]

bool

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

[...,var,gpl_routability_driven]

bool

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

[...,var,gpl_timing_driven]

bool

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

[...,var,gpl_uniform_placement_adjustment]

float<0.0..0.99>

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

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_global_place]

int<0..>

global placement cell padding in number of sites

[...,var,pin_layer_horizontal]

[str]

layers to use for horizontal pins

[...,var,pin_layer_vertical]

[str]

layers to use for vertical pins

[...,var,place_density]

float<0.0..1.0>

global placement density (0.0 - 1.0)

[...,var,power_corner]

str

corner to use for power analysis

[...,var,ppl_arguments]

[str]

additional arguments to pass along to the pin placer.

[...,var,ppl_constraints]

[file]

pin placement constraints scripts.

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.21.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,pin_layer_horizontal
  • library,freepdk45,tool,openroad,pin_layer_vertical
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • library,nangate45,tool,openroad,place_density
  • tool,openroad,task,pin_placement,var,apply_pex_correction
  • tool,openroad,task,pin_placement,var,enablehier
  • tool,openroad,task,pin_placement,var,gpl_enable_skip_initial_place
  • tool,openroad,task,pin_placement,var,gpl_enable_skip_io
  • tool,openroad,task,pin_placement,var,gpl_routability_driven
  • tool,openroad,task,pin_placement,var,gpl_timing_driven
  • tool,openroad,task,pin_placement,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,pin_placement,var,grt_resistance_aware
  • tool,openroad,task,pin_placement,var,load_grt_setup
  • tool,openroad,task,pin_placement,var,load_sdcs
  • tool,openroad,task,pin_placement,var,opensta_generic_sdc
  • tool,openroad,task,pin_placement,var,ord_enable_images
  • tool,openroad,task,pin_placement,var,ord_heatmap_bins
  • tool,openroad,task,pin_placement,var,pad_global_place
  • tool,openroad,task,pin_placement,var,pin_layer_horizontal
  • tool,openroad,task,pin_placement,var,pin_layer_vertical
  • tool,openroad,task,pin_placement,var,place_density
  • tool,openroad,task,pin_placement,var,rsz_default_pex_corner
  • tool,openroad,task,pin_placement,var,sta_define_path_groups
  • tool,openroad,task,pin_placement,var,sta_early_timing_derate
  • tool,openroad,task,pin_placement,var,sta_late_timing_derate
  • tool,openroad,task,pin_placement,var,sta_top_n_paths
  • tool,openroad,task,pin_placement,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_pin_placement.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,gpl_enable_skip_initial_place]

bool False

[...,var,gpl_enable_skip_io]

bool True

[...,var,gpl_routability_driven]

bool True

[...,var,gpl_timing_driven]

bool True

[...,var,gpl_uniform_placement_adjustment]

float<0.0..0.99> 0.0

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_global_place]

int<0..> 0

[...,var,pin_layer_horizontal]

[str] metal5

[...,var,pin_layer_vertical]

[str] metal6

[...,var,place_density]

float<0.0..1.0> 0.5

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • floating_nets
  • logicdepth
  • markers_view
  • module_view
  • overdriven_nets
  • placement_density
  • placement_view
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.22. power_grid#

Perform power grid insertion and connectivity analysis

File: power_grid.py

3.19.22.1. Methods#

PowerGridTask.add_debuglevel(tool, category, level, clobber=False)[source]#
PowerGridTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

PowerGridTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

PowerGridTask.add_openroad_missingterminalnets(nets: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds nets where missing terminals are acceptable.

Parameters:
  • nets (Union[str, List[str]]) – The net(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PowerGridTask.add_openroad_powergridfileset(library, fileset, clobber=False)[source]#
PowerGridTask.add_openroad_psmskipnets(nets: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds nets to skip during power grid analysis.

Parameters:
  • nets (Union[str, List[str]]) – The net(s) to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PowerGridTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

PowerGridTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

PowerGridTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

PowerGridTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

PowerGridTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_fixedpinkeepout(keepout: float, step: str | None = None, index: str | None = None)[source]#

Sets the blockage multiplier for fixed pins to ensure routing room.

Parameters:
  • keepout (float) – Blockage in multiples of routing pitch.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_pdnenable(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables power grid generation.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridTask.set_openroad_psmenable(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables IR drop analysis.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridTask.unset_debuglevel()[source]#

3.19.22.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.22.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,fixed_pin_keepout]

float<0.0..>

if > 0, applies a blockage in multiples of the routing pitch to each fixed pin to ensure there is room for routing.

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pdn_enable]

bool

enable power grid generation

[...,var,pdn_fileset]

[(str,str)]

power grid definition filesets

[...,var,power_corner]

str

corner to use for power analysis

[...,var,psm_allow_missing_terminal_nets]

[str]

list of nets where a missing terminal is acceptable

[...,var,psm_enable]

bool

true/false, when true enables IR drop analysis

[...,var,psm_skip_nets]

[str]

list of nets to skip power grid analysis on

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.22.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,power_grid,var,apply_pex_correction
  • tool,openroad,task,power_grid,var,enablehier
  • tool,openroad,task,power_grid,var,fixed_pin_keepout
  • tool,openroad,task,power_grid,var,grt_resistance_aware
  • tool,openroad,task,power_grid,var,load_grt_setup
  • tool,openroad,task,power_grid,var,load_sdcs
  • tool,openroad,task,power_grid,var,opensta_generic_sdc
  • tool,openroad,task,power_grid,var,ord_enable_images
  • tool,openroad,task,power_grid,var,ord_heatmap_bins
  • tool,openroad,task,power_grid,var,pdn_enable
  • tool,openroad,task,power_grid,var,psm_enable
  • tool,openroad,task,power_grid,var,rsz_default_pex_corner
  • tool,openroad,task,power_grid,var,sta_define_path_groups
  • tool,openroad,task,power_grid,var,sta_early_timing_derate
  • tool,openroad,task,power_grid,var,sta_late_timing_derate
  • tool,openroad,task,power_grid,var,sta_top_n_paths
  • tool,openroad,task,power_grid,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_power_grid.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,fixed_pin_keepout]

float<0.0..> 0

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pdn_enable]

bool True

[...,var,power_corner]

str typical

[...,var,psm_enable]

bool True

[...,var,reports]

{enum}
  • floating_nets
  • markers_view
  • overdriven_nets
  • placement_view
  • routing_view
  • scenarios
  • snapshot

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.23. irdrop_analysis#

Performs static IR drop analysis on the power grid using OpenROAD.

This task utilizes the OpenROAD PDN (Power Distribution Network) analysis capabilities (PSM) to calculate static IR drop based on instance power consumption and grid resistance.

File: power_grid_analysis.py

3.19.23.1. Methods#

PowerGridAnalysisTask.add_debuglevel(tool, category, level, clobber=False)[source]#
PowerGridAnalysisTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

PowerGridAnalysisTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

PowerGridAnalysisTask.add_openroad_instancepower(inst: str, power: float, step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Manually sets the power consumption for a specific instance.

Parameters:
  • inst (str) – The name of the instance.

  • power (float) – The power value (typically in Watts, depending on library units).

  • step (str, optional) – step name

  • index (str, optional) – index

  • clobber (bool) – If True, replaces the existing list. If False, appends.

PowerGridAnalysisTask.add_openroad_irdropnet(net: str, step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds a specific net to the list of nets to be analyzed for IR drop.

Parameters:
  • net (str) – The name of the net (e.g., “VDD”).

  • step (str, optional) – step name

  • index (str, optional) – index

  • clobber (bool) – If True, replaces existing nets. If False, appends to the list.

PowerGridAnalysisTask.add_openroad_psmskipnets(nets: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds nets to skip during power grid analysis.

Parameters:
  • nets (Union[str, List[str]]) – The net(s) to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PowerGridAnalysisTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

PowerGridAnalysisTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

PowerGridAnalysisTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

PowerGridAnalysisTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

PowerGridAnalysisTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_disconnectrate(rate: float, step: str | None = None, index: int | str | None = None)[source]#

Sets the fraction of power pads/bumps to disconnect to simulate robustness.

Parameters:
  • rate (float) – A value between 0.0 and 100.0 representing the percentage to disconnect.

  • step (str, optional) – step name

  • index (str, optional) – index

PowerGridAnalysisTask.set_openroad_disconnectseed(seed: int, step: str | None = None, index: int | str | None = None)[source]#

Sets the random seed for the power bump disconnection logic.

Parameters:
  • seed (int) – The random seed integer.

  • step (str, optional) – step name

  • index (str, optional) – index

PowerGridAnalysisTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_externalresistance(res: float, step: str | None = None, index: int | str | None = None)[source]#

Sets the external resistance to be modeled in the power grid analysis.

Parameters:
  • res (float) – External resistance to add.

  • step (str, optional) – step name

  • index (str, optional) – index

PowerGridAnalysisTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_heatmapgrid(x: float, y: float, step: str | None = None, index: int | str | None = None)[source]#

Sets the resolution for the IR drop heatmap generation.

Parameters:
  • x (float) – Grid spacing in the X direction (microns).

  • y (float) – Grid spacing in the Y direction (microns).

  • step (str, optional) – step name

  • index (str, optional) – index

PowerGridAnalysisTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_psmenable(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables IR drop analysis.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridAnalysisTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PowerGridAnalysisTask.unset_debuglevel()[source]#

3.19.23.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.23.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,external_resistance]

float<0.0..>

Resistance value to add to the power grid model to account for external factors (e.g., package, PCB).

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,heatmap_grid]

(float<0.0..>,float<0.0..>)

Resolution of the IR drop heatmap grid (x_step, y_step).

[...,var,instance_power]

[(str,float)]

List of (instance_name, power_value) tuples to override specific instance power consumption.

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,net]

{str}

Set of specific power/ground nets to analyze (e.g., VDD, VSS).

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,psm_enable]

bool

true/false, when true enables IR drop analysis

[...,var,psm_skip_nets]

[str]

list of nets to skip power grid analysis on

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,source_disconnection_rate]

float<0.0..100.0>

Fraction (0.0-100.0) of power source bumps to simulate disconnected/failing bumps.

[...,var,source_disconnection_seed]

int

Random seed used for determining which power bumps to disconnect.

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.23.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,irdrop_analysis,var,apply_pex_correction
  • tool,openroad,task,irdrop_analysis,var,enablehier
  • tool,openroad,task,irdrop_analysis,var,external_resistance
  • tool,openroad,task,irdrop_analysis,var,grt_resistance_aware
  • tool,openroad,task,irdrop_analysis,var,heatmap_grid
  • tool,openroad,task,irdrop_analysis,var,load_grt_setup
  • tool,openroad,task,irdrop_analysis,var,load_sdcs
  • tool,openroad,task,irdrop_analysis,var,opensta_generic_sdc
  • tool,openroad,task,irdrop_analysis,var,ord_enable_images
  • tool,openroad,task,irdrop_analysis,var,ord_heatmap_bins
  • tool,openroad,task,irdrop_analysis,var,psm_enable
  • tool,openroad,task,irdrop_analysis,var,rsz_default_pex_corner
  • tool,openroad,task,irdrop_analysis,var,source_disconnection_rate
  • tool,openroad,task,irdrop_analysis,var,source_disconnection_seed
  • tool,openroad,task,irdrop_analysis,var,sta_define_path_groups
  • tool,openroad,task,irdrop_analysis,var,sta_early_timing_derate
  • tool,openroad,task,irdrop_analysis,var,sta_late_timing_derate
  • tool,openroad,task,irdrop_analysis,var,sta_top_n_paths
  • tool,openroad,task,irdrop_analysis,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_irdrop.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,external_resistance]

float<0.0..> 0

[...,var,grt_resistance_aware]

bool False

[...,var,heatmap_grid]

(float<0.0..>,float<0.0..>) (10, 10)

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,psm_enable]

bool True

[...,var,rsz_default_pex_corner]

str typical

[...,var,source_disconnection_rate]

float<0.0..100.0> 0.0

[...,var,source_disconnection_seed]

int 123

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=v2.0-26866

[...,vswitch]

[str] -version

3.19.24. rdlroute#

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

File: rdlroute.py

3.19.24.1. Methods#

RDLRouteTask.add_debuglevel(tool, category, level, clobber=False)[source]#
RDLRouteTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

RDLRouteTask.add_openroad_rdlroute(file: str | Path, dataroot: str | None = None, step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds a RDL routing script to the design.

Parameters:
  • file (str) – The path to the RDL routing script.

  • dataroot (str, optional) – The data root to apply this configuration to.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, replaces any existing RDL routing scripts for the specified dataroot, step, and index. If False, appends the new script to the existing list.

RDLRouteTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

RDLRouteTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

RDLRouteTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

RDLRouteTask.set_openroad_addfill(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables adding fill to the design.

Parameters:
  • enable (bool) – True to enable fill, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RDLRouteTask.set_openroad_fillname(name: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the name of the metal fill deck to use.

Parameters:
  • name (str) – The name of the metal fill deck.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RDLRouteTask.unset_debuglevel()[source]#

3.19.24.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

3.19.24.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,fill_name]

str

name of the metal fill deck to use, this is only required when the PDK ships more than one deck

[...,var,fin_add_fill]

bool

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

[...,var,rdlroute]

[file]

RDL routing scripts

3.19.24.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,area,diearea
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,rdlroute,var,fin_add_fill

[...,script]

[file]

sc_rdlroute.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,fin_add_fill]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.25. repair_design#

Perform timing repair and tie-off cell insertion

File: repair_design.py

3.19.25.1. Methods#

RepairDesignTask.add_debuglevel(tool, category, level, clobber=False)[source]#
RepairDesignTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

RepairDesignTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

RepairDesignTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

RepairDesignTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

RepairDesignTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

RepairDesignTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

RepairDesignTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_bufferinputs(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables adding buffers to the input ports.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_bufferoutputs(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables adding buffers to the output ports.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_rszcapmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max capacitance repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_rszmatchcellfootprint(match: bool, step: str | None = None, index: str | None = None)[source]#

Restricts gate swaps to cells that share the same liberty footprint.

Parameters:
  • match (bool) – True to obey the cell footprint, False to allow any swap.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_rszmaxutilization(utilization: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum core area utilization the resizer may use.

Parameters:
  • utilization (float) – The maximum utilization in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_rszmaxwirelength(length: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum wire length design repair allows before buffering.

Parameters:
  • length (float) – The maximum wire length in um.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_rszslewmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max slew repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_tieseparation(separation: float, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum distance between tie high/low cells.

Parameters:
  • separation (float) – The separation distance in microns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairDesignTask.unset_debuglevel()[source]#

3.19.25.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.25.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,ifp_tie_separation]

float<0.0..>

maximum distance between tie high/low cells in microns

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_buffer_inputs]

bool

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

[...,var,rsz_buffer_outputs]

bool

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

[...,var,rsz_cap_margin]

float<0.0..100.0>

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

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_match_cell_footprint]

bool

true/false, when true only cells sharing the same liberty footprint are considered when swapping gates

[...,var,rsz_max_utilization]

float<0.0..100.0>

maximum percentage of the core area the resizer is allowed to use, unset uses the tool default

[...,var,rsz_max_wire_length]

float<0.0..>

maximum length a wire may reach before design repair inserts a buffer, unset lets the tool pick the length that avoids slew violations

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,rsz_slew_margin]

float<0.0..100.0>

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

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.25.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,repair_design,var,apply_pex_correction
  • tool,openroad,task,repair_design,var,enablehier
  • tool,openroad,task,repair_design,var,grt_resistance_aware
  • tool,openroad,task,repair_design,var,ifp_tie_separation
  • tool,openroad,task,repair_design,var,load_grt_setup
  • tool,openroad,task,repair_design,var,load_sdcs
  • tool,openroad,task,repair_design,var,opensta_generic_sdc
  • tool,openroad,task,repair_design,var,ord_enable_images
  • tool,openroad,task,repair_design,var,ord_heatmap_bins
  • tool,openroad,task,repair_design,var,power_corner
  • tool,openroad,task,repair_design,var,rsz_buffer_inputs
  • tool,openroad,task,repair_design,var,rsz_buffer_outputs
  • tool,openroad,task,repair_design,var,rsz_cap_margin
  • tool,openroad,task,repair_design,var,rsz_default_pex_corner
  • tool,openroad,task,repair_design,var,rsz_match_cell_footprint
  • tool,openroad,task,repair_design,var,rsz_slew_margin
  • tool,openroad,task,repair_design,var,sta_define_path_groups
  • tool,openroad,task,repair_design,var,sta_early_timing_derate
  • tool,openroad,task,repair_design,var,sta_late_timing_derate
  • tool,openroad,task,repair_design,var,sta_top_n_paths
  • tool,openroad,task,repair_design,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_repair_design.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,ifp_tie_separation]

float<0.0..> 0

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • logicdepth
  • markers_view
  • module_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • report_buffers
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_buffer_inputs]

bool False

[...,var,rsz_buffer_outputs]

bool False

[...,var,rsz_cap_margin]

float<0.0..100.0> 0.0

[...,var,rsz_default_pex_corner]

str typical

[...,var,rsz_match_cell_footprint]

bool False

[...,var,rsz_slew_margin]

float<0.0..100.0> 0.0

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.26. post_route_repair_timing#

Repair timing on a globally routed design

Runs design rule violation repair, setup repair and hold repair against the global routing parasitics, each followed by an incremental global route and detailed placement so the design stays routed and legal. A final worst negative slack pass then targets the single worst endpoint using only threshold voltage swaps and rerouting, which improves the critical path while leaving placement and routing almost untouched.

Repairing an already routed design changes both quality of results and runtime, so the task is opt-in: rsz_enable must be set for it to run. Otherwise the node is skipped and its inputs are forwarded unchanged.

File: repair_timing.py

3.19.26.1. Methods#

PostRouteRepairTimingTask.add_debuglevel(tool, category, level, clobber=False)[source]#
PostRouteRepairTimingTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

PostRouteRepairTimingTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

PostRouteRepairTimingTask.add_openroad_rszphases(phases: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds phases to the explicit order of setup optimization phases.

Phases are appended in call order. The default is empty, which leaves the tool to pick its own ordering.

Parameters:
  • phases (Union[str, List[str]]) – The ordered phase name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PostRouteRepairTimingTask.add_openroad_rszsequence(moves: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds moves to the explicit order of setup optimization moves.

Moves are appended in call order. The default is empty, which leaves the tool to pick its own ordering.

Parameters:
  • moves (Union[str, List[str]]) – The ordered move name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PostRouteRepairTimingTask.add_openroad_rszwnssequence(moves: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds moves to the worst negative slack repair pass move order.

Moves are appended in call order. Unlike the other move lists this one has a non-empty default, so adding extends vt_swap reroute rather than replacing it – pass clobber to supply the whole sequence instead.

Parameters:
  • moves (Union[str, List[str]]) – The ordered move name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

PostRouteRepairTimingTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

PostRouteRepairTimingTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

PostRouteRepairTimingTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

PostRouteRepairTimingTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

PostRouteRepairTimingTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_dplmaxdisplacement(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum cell displacement for detailed placement.

Parameters:
  • x (float) – The maximum displacement in X (microns).

  • y (float) – The maximum displacement in Y (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_dplusedecapfillers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the use of decap fillers.

Parameters:
  • enable (bool) – True to use decap fillers, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_dplusediamondlegalizer(enable: bool, step: str | None = None, index: str | None = None)[source]#

Selects the legacy diamond search legalizer for detailed placement.

Parameters:
  • enable (bool) – True to use the diamond search engine, False to use the negotiation-based legalizer.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_grtclockmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_grtclockminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for clock routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_grtmacroextension(extension: int, step: str | None = None, index: str | None = None)[source]#

Sets the macro extension distance for global routing.

Parameters:
  • extension (int) – The extension distance in number of gcells.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_grtsignalmaxlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the maximum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_grtsignalminlayer(layer: str, step: str | None = None, index: str | None = None)[source]#

Sets the minimum layer for signal routing.

Parameters:
  • layer (str) – The layer name.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_paddetailplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the detailed placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszallowsetupviolations(allow: bool, step: str | None = None, index: str | None = None)[source]#

Allows or forbids hold repair from causing setup violations.

Parameters:
  • allow (bool) – True to allow setup violations, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszcapmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max capacitance repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszenable(enable: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables the post global route timing repair.

Parameters:
  • enable (bool) – True to perform the repair, False to skip the node.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszholdslackmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for hold timing repair.

Parameters:
  • margin (float) – The margin in ns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmatchcellfootprint(match: bool, step: str | None = None, index: str | None = None)[source]#

Restricts gate swaps to cells that share the same liberty footprint.

Parameters:
  • match (bool) – True to obey the cell footprint, False to allow any swap.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmaxbufferpercent(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of buffers hold repair may insert.

Parameters:
  • percentage (float) – The limit as a percentage of the instance count (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmaxiterations(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of optimization iterations timing repair may run.

Parameters:
  • iterations (int) – The maximum iteration count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmaxpasses(passes: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of optimization passes timing repair may run.

Parameters:
  • passes (int) – The maximum pass count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmaxrepairsperpass(repairs: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of repairs setup repair may make in one pass.

Parameters:
  • repairs (int) – The maximum repair count per pass.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmaxutilization(utilization: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum core area utilization the resizer may use.

Parameters:
  • utilization (float) – The maximum utilization in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszmaxwirelength(length: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum wire length design repair allows before buffering.

Parameters:
  • length (float) – The maximum wire length in um.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszrecoverpower(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the percentage of paths to attempt to recover power.

Parameters:
  • percentage (float) – The percentage (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszrepairtns(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the percentage of violating nets to attempt to repair.

Parameters:
  • percentage (float) – The percentage (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszsetupslackmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for setup timing repair.

Parameters:
  • margin (float) – The margin in ns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipbuffering(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the rebuffering and load splitting optimizations.

Parameters:
  • skip (bool) – True to skip buffering, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipbufferremoval(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the buffer removal optimization.

Parameters:
  • skip (bool) – True to skip buffer removal, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipcritvtswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the final critical threshold voltage (VT) swap optimization.

Parameters:
  • skip (bool) – True to skip critical VT swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipfinalsizing(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the final greedy gate resizing pass.

This pass runs at the end of setup repair and picks up slack the main optimization left behind.

Parameters:
  • skip (bool) – True to skip the pass, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipgatecloning(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables gate cloning optimization.

Parameters:
  • skip (bool) – True to skip gate cloning, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskippinswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables pin swap optimization.

Parameters:
  • skip (bool) – True to skip pin swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipsizedown(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables down-sizing of gates off the critical path.

Parameters:
  • skip (bool) – True to skip down-sizing, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszskipvtswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the threshold voltage (VT) swap optimization.

Parameters:
  • skip (bool) – True to skip VT swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_rszslewmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max slew repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_skipdrvrepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping design rule violation repair.

Parameters:
  • skip (bool) – True to skip repair, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_skipholdrepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping hold timing repair.

Parameters:
  • skip (bool) – True to skip repair, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_skiprecoverpower(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping power recovery.

Parameters:
  • skip (bool) – True to skip recovery, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_skipsetuprepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping setup timing repair.

Parameters:
  • skip (bool) – True to skip repair, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_skipwnsrepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping the worst negative slack repair pass.

This pass minimizes placement and routing disturbance and is only meaningful once global routing has been performed.

Parameters:
  • skip (bool) – True to skip the pass, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

PostRouteRepairTimingTask.unset_debuglevel()[source]#

3.19.26.2. Data root#

Root

Specifications

siliconcompiler

  • Path: python://siliconcompiler

3.19.26.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>)

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

[...,var,dpl_use_decap_fillers]

bool

true/false, use decap fillers along with non-decap fillers

[...,var,dpl_use_diamond_legalizer]

bool

true/false, legalize with the legacy diamond search engine instead of the negotiation-based legalizer the tool now defaults to

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_clock_max_layer]

str

maximum layer to use for global routing of clock nets

[...,var,grt_clock_min_layer]

str

minimum layer to use for global routing of clock nets

[...,var,grt_macro_extension]

int<0..>

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

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,grt_signal_max_layer]

str

maximum layer to use for global routing of signals

[...,var,grt_signal_min_layer]

str

minimum layer to use for global routing of signals

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int<0..>

detailed placement cell padding in number of sites

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_allow_setup_violations]

bool

true/false, when true hold repair is allowed to insert buffers that cause setup violations

[...,var,rsz_cap_margin]

float<0.0..100.0>

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

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_enable]

bool

true/false, when true perform timing repair using the global routing parasitics

[...,var,rsz_hold_slack_margin]

float

specifies the margin to apply when performing hold repair

[...,var,rsz_match_cell_footprint]

bool

true/false, when true only cells sharing the same liberty footprint are considered when swapping gates

[...,var,rsz_max_buffer_percent]

float<0.0..100.0>

maximum number of buffers hold repair may insert, as a percentage of the instance count, unset uses the tool default

[...,var,rsz_max_iterations]

int<1..>

maximum number of optimization iterations timing repair may run, unset uses the tool default

[...,var,rsz_max_passes]

int<1..>

maximum number of optimization passes timing repair may run, unset uses the tool default

[...,var,rsz_max_repairs_per_pass]

int<1..>

maximum number of repairs setup repair may make in a single pass, unset uses the tool default

[...,var,rsz_max_utilization]

float<0.0..100.0>

maximum percentage of the core area the resizer is allowed to use, unset uses the tool default

[...,var,rsz_max_wire_length]

float<0.0..>

maximum length a wire may reach before design repair inserts a buffer, unset lets the tool pick the length that avoids slew violations

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,rsz_phases]

[enum]

explicit order of setup optimization phases, an empty list uses the tool default, note the tool appends its critical threshold voltage swap phase to any of its legacy phases. Allowed values: CRIT_VT_SWAP, ENDPOINT_FANIN, GLOBAL_SIZING, LAST_GASP, LEGACY, REROUTE, STARTPOINT_FANOUT, TNS, WNS, WNS_CONE, WNS_PATH

[...,var,rsz_recover_power]

float<0.0..100.0>

percentage of paths to attempt to recover power (0 - 100)

[...,var,rsz_repair_tns]

float<0.0..100.0>

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

[...,var,rsz_sequence]

[enum]

explicit order of setup optimization moves, an empty list uses the tool default. Allowed values: buffer, clone, reroute, size, size_down, size_down_fanout, sizeup, sizeup_match, split, swap, unbuffer, vt_swap

[...,var,rsz_setup_slack_margin]

float

specifies the margin to apply when performing setup repair

[...,var,rsz_skip_buffer_removal]

bool

true/false, skip buffer removal optimization

[...,var,rsz_skip_buffering]

bool

true/false, skip rebuffering and load splitting optimizations

[...,var,rsz_skip_crit_vt_swap]

bool

true/false, skip the final critical threshold voltage (VT) swap optimization

[...,var,rsz_skip_drv_repair]

bool

skip design rule violation repair

[...,var,rsz_skip_final_sizing]

bool

true/false, skip the greedy gate resizing pass that runs at the end of setup repair to pick up any slack the main optimization left

[...,var,rsz_skip_gate_cloning]

bool

true/false, skip gate cloning optimization

[...,var,rsz_skip_hold_repair]

bool

skip hold timing repair

[...,var,rsz_skip_pin_swap]

bool

true/false, skip pin swap optimization

[...,var,rsz_skip_recover_power]

bool

skip power recovery

[...,var,rsz_skip_setup_repair]

bool

skip setup timing repair

[...,var,rsz_skip_size_down]

bool

true/false, skip down-sizing gates that are not on the critical path

[...,var,rsz_skip_vt_swap]

bool

true/false, skip threshold voltage (VT) swap optimization

[...,var,rsz_skip_wns_repair]

bool

skip the disturbance minimizing worst negative slack repair pass. This pass only applies once global routing has been performed

[...,var,rsz_slew_margin]

float<0.0..100.0>

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

[...,var,rsz_wns_sequence]

[enum]

order of optimization moves to use for the worst negative slack repair pass, an empty list uses the tool default. Allowed values: buffer, clone, reroute, size, size_down, size_down_fanout, sizeup, sizeup_match, split, swap, unbuffer, vt_swap

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.26.4. Configuration#

Keypath

Type

Value

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,apply_pex_correction]

bool True

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>) (0, 0)

[...,var,dpl_use_decap_fillers]

bool True

[...,var,dpl_use_diamond_legalizer]

bool False

[...,var,enablehier]

bool False

[...,var,grt_macro_extension]

int<0..> 0

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_detail_place]

int<0..> 0

[...,var,rsz_allow_setup_violations]

bool False

[...,var,rsz_cap_margin]

float<0.0..100.0> 0.0

[...,var,rsz_enable]

bool False

[...,var,rsz_hold_slack_margin]

float 0.0

[...,var,rsz_match_cell_footprint]

bool True

[...,var,rsz_recover_power]

float<0.0..100.0> 100

[...,var,rsz_repair_tns]

float<0.0..100.0> 100

[...,var,rsz_setup_slack_margin]

float 0.0

[...,var,rsz_skip_buffer_removal]

bool False

[...,var,rsz_skip_buffering]

bool False

[...,var,rsz_skip_crit_vt_swap]

bool False

[...,var,rsz_skip_drv_repair]

bool False

[...,var,rsz_skip_final_sizing]

bool False

[...,var,rsz_skip_gate_cloning]

bool False

[...,var,rsz_skip_hold_repair]

bool False

[...,var,rsz_skip_pin_swap]

bool False

[...,var,rsz_skip_recover_power]

bool True

[...,var,rsz_skip_setup_repair]

bool False

[...,var,rsz_skip_size_down]

bool False

[...,var,rsz_skip_vt_swap]

bool False

[...,var,rsz_skip_wns_repair]

bool False

[...,var,rsz_slew_margin]

float<0.0..100.0> 0.0

[...,var,rsz_wns_sequence]

[enum]
  • vt_swap
  • reroute

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

3.19.27. repair_timing#

Perform setup and hold timing repairs

File: repair_timing.py

3.19.27.1. Methods#

RepairTimingTask.add_debuglevel(tool, category, level, clobber=False)[source]#
RepairTimingTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

RepairTimingTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

RepairTimingTask.add_openroad_rszphases(phases: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds phases to the explicit order of setup optimization phases.

Phases are appended in call order. The default is empty, which leaves the tool to pick its own ordering.

Parameters:
  • phases (Union[str, List[str]]) – The ordered phase name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

RepairTimingTask.add_openroad_rszsequence(moves: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds moves to the explicit order of setup optimization moves.

Moves are appended in call order. The default is empty, which leaves the tool to pick its own ordering.

Parameters:
  • moves (Union[str, List[str]]) – The ordered move name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

RepairTimingTask.add_openroad_rszwnssequence(moves: str | List[str], step: str | None = None, index: int | str | None = None, clobber: bool = False)[source]#

Adds moves to the worst negative slack repair pass move order.

Moves are appended in call order. Unlike the other move lists this one has a non-empty default, so adding extends vt_swap reroute rather than replacing it – pass clobber to supply the whole sequence instead.

Parameters:
  • moves (Union[str, List[str]]) – The ordered move name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

RepairTimingTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

RepairTimingTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

RepairTimingTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

RepairTimingTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

RepairTimingTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_dplmaxdisplacement(x: float, y: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum cell displacement for detailed placement.

Parameters:
  • x (float) – The maximum displacement in X (microns).

  • y (float) – The maximum displacement in Y (microns).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_dplusedecapfillers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the use of decap fillers.

Parameters:
  • enable (bool) – True to use decap fillers, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_dplusediamondlegalizer(enable: bool, step: str | None = None, index: str | None = None)[source]#

Selects the legacy diamond search legalizer for detailed placement.

Parameters:
  • enable (bool) – True to use the diamond search engine, False to use the negotiation-based legalizer.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_paddetailplace(padding: int, step: str | None = None, index: str | None = None)[source]#

Sets the detailed placement cell padding.

Parameters:
  • padding (int) – The padding in number of sites.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszallowsetupviolations(allow: bool, step: str | None = None, index: str | None = None)[source]#

Allows or forbids hold repair from causing setup violations.

Parameters:
  • allow (bool) – True to allow setup violations, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszcapmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max capacitance repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszholdslackmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for hold timing repair.

Parameters:
  • margin (float) – The margin in ns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmatchcellfootprint(match: bool, step: str | None = None, index: str | None = None)[source]#

Restricts gate swaps to cells that share the same liberty footprint.

Parameters:
  • match (bool) – True to obey the cell footprint, False to allow any swap.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmaxbufferpercent(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of buffers hold repair may insert.

Parameters:
  • percentage (float) – The limit as a percentage of the instance count (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmaxiterations(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of optimization iterations timing repair may run.

Parameters:
  • iterations (int) – The maximum iteration count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmaxpasses(passes: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of optimization passes timing repair may run.

Parameters:
  • passes (int) – The maximum pass count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmaxrepairsperpass(repairs: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of repairs setup repair may make in one pass.

Parameters:
  • repairs (int) – The maximum repair count per pass.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmaxutilization(utilization: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum core area utilization the resizer may use.

Parameters:
  • utilization (float) – The maximum utilization in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszmaxwirelength(length: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum wire length design repair allows before buffering.

Parameters:
  • length (float) – The maximum wire length in um.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszrecoverpower(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the percentage of paths to attempt to recover power.

Parameters:
  • percentage (float) – The percentage (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszrepairtns(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the percentage of violating nets to attempt to repair.

Parameters:
  • percentage (float) – The percentage (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszsetupslackmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for setup timing repair.

Parameters:
  • margin (float) – The margin in ns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipbuffering(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the rebuffering and load splitting optimizations.

Parameters:
  • skip (bool) – True to skip buffering, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipbufferremoval(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the buffer removal optimization.

Parameters:
  • skip (bool) – True to skip buffer removal, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipcritvtswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the final critical threshold voltage (VT) swap optimization.

Parameters:
  • skip (bool) – True to skip critical VT swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipfinalsizing(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the final greedy gate resizing pass.

This pass runs at the end of setup repair and picks up slack the main optimization left behind.

Parameters:
  • skip (bool) – True to skip the pass, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipgatecloning(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables gate cloning optimization.

Parameters:
  • skip (bool) – True to skip gate cloning, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskippinswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables pin swap optimization.

Parameters:
  • skip (bool) – True to skip pin swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipsizedown(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables down-sizing of gates off the critical path.

Parameters:
  • skip (bool) – True to skip down-sizing, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszskipvtswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the threshold voltage (VT) swap optimization.

Parameters:
  • skip (bool) – True to skip VT swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_rszslewmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max slew repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_skipdrvrepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping design rule violation repair.

Parameters:
  • skip (bool) – True to skip repair, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_skipholdrepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping hold timing repair.

Parameters:
  • skip (bool) – True to skip repair, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_skiprecoverpower(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping power recovery.

Parameters:
  • skip (bool) – True to skip recovery, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_skipsetuprepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping setup timing repair.

Parameters:
  • skip (bool) – True to skip repair, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_skipwnsrepair(skip: bool, step: str | None = None, index: int | str | None = None)[source]#

Enables or disables skipping the worst negative slack repair pass.

This pass minimizes placement and routing disturbance and is only meaningful once global routing has been performed.

Parameters:
  • skip (bool) – True to skip the pass, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

RepairTimingTask.unset_debuglevel()[source]#

3.19.27.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.27.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>)

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

[...,var,dpl_use_decap_fillers]

bool

true/false, use decap fillers along with non-decap fillers

[...,var,dpl_use_diamond_legalizer]

bool

true/false, legalize with the legacy diamond search engine instead of the negotiation-based legalizer the tool now defaults to

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int<0..>

detailed placement cell padding in number of sites

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_allow_setup_violations]

bool

true/false, when true hold repair is allowed to insert buffers that cause setup violations

[...,var,rsz_cap_margin]

float<0.0..100.0>

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

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_hold_slack_margin]

float

specifies the margin to apply when performing hold repair

[...,var,rsz_match_cell_footprint]

bool

true/false, when true only cells sharing the same liberty footprint are considered when swapping gates

[...,var,rsz_max_buffer_percent]

float<0.0..100.0>

maximum number of buffers hold repair may insert, as a percentage of the instance count, unset uses the tool default

[...,var,rsz_max_iterations]

int<1..>

maximum number of optimization iterations timing repair may run, unset uses the tool default

[...,var,rsz_max_passes]

int<1..>

maximum number of optimization passes timing repair may run, unset uses the tool default

[...,var,rsz_max_repairs_per_pass]

int<1..>

maximum number of repairs setup repair may make in a single pass, unset uses the tool default

[...,var,rsz_max_utilization]

float<0.0..100.0>

maximum percentage of the core area the resizer is allowed to use, unset uses the tool default

[...,var,rsz_max_wire_length]

float<0.0..>

maximum length a wire may reach before design repair inserts a buffer, unset lets the tool pick the length that avoids slew violations

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,rsz_phases]

[enum]

explicit order of setup optimization phases, an empty list uses the tool default, note the tool appends its critical threshold voltage swap phase to any of its legacy phases. Allowed values: CRIT_VT_SWAP, ENDPOINT_FANIN, GLOBAL_SIZING, LAST_GASP, LEGACY, REROUTE, STARTPOINT_FANOUT, TNS, WNS, WNS_CONE, WNS_PATH

[...,var,rsz_recover_power]

float<0.0..100.0>

percentage of paths to attempt to recover power (0 - 100)

[...,var,rsz_repair_tns]

float<0.0..100.0>

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

[...,var,rsz_sequence]

[enum]

explicit order of setup optimization moves, an empty list uses the tool default. Allowed values: buffer, clone, reroute, size, size_down, size_down_fanout, sizeup, sizeup_match, split, swap, unbuffer, vt_swap

[...,var,rsz_setup_slack_margin]

float

specifies the margin to apply when performing setup repair

[...,var,rsz_skip_buffer_removal]

bool

true/false, skip buffer removal optimization

[...,var,rsz_skip_buffering]

bool

true/false, skip rebuffering and load splitting optimizations

[...,var,rsz_skip_crit_vt_swap]

bool

true/false, skip the final critical threshold voltage (VT) swap optimization

[...,var,rsz_skip_drv_repair]

bool

skip design rule violation repair

[...,var,rsz_skip_final_sizing]

bool

true/false, skip the greedy gate resizing pass that runs at the end of setup repair to pick up any slack the main optimization left

[...,var,rsz_skip_gate_cloning]

bool

true/false, skip gate cloning optimization

[...,var,rsz_skip_hold_repair]

bool

skip hold timing repair

[...,var,rsz_skip_pin_swap]

bool

true/false, skip pin swap optimization

[...,var,rsz_skip_recover_power]

bool

skip power recovery

[...,var,rsz_skip_setup_repair]

bool

skip setup timing repair

[...,var,rsz_skip_size_down]

bool

true/false, skip down-sizing gates that are not on the critical path

[...,var,rsz_skip_vt_swap]

bool

true/false, skip threshold voltage (VT) swap optimization

[...,var,rsz_skip_wns_repair]

bool

skip the disturbance minimizing worst negative slack repair pass. This pass only applies once global routing has been performed

[...,var,rsz_slew_margin]

float<0.0..100.0>

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

[...,var,rsz_wns_sequence]

[enum]

order of optimization moves to use for the worst negative slack repair pass, an empty list uses the tool default. Allowed values: buffer, clone, reroute, size, size_down, size_down_fanout, sizeup, sizeup_match, split, swap, unbuffer, vt_swap

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.27.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,repair_timing,var,apply_pex_correction
  • tool,openroad,task,repair_timing,var,dpl_max_displacement
  • tool,openroad,task,repair_timing,var,dpl_use_decap_fillers
  • tool,openroad,task,repair_timing,var,dpl_use_diamond_legalizer
  • tool,openroad,task,repair_timing,var,enablehier
  • tool,openroad,task,repair_timing,var,grt_resistance_aware
  • tool,openroad,task,repair_timing,var,load_grt_setup
  • tool,openroad,task,repair_timing,var,load_sdcs
  • tool,openroad,task,repair_timing,var,opensta_generic_sdc
  • tool,openroad,task,repair_timing,var,ord_enable_images
  • tool,openroad,task,repair_timing,var,ord_heatmap_bins
  • tool,openroad,task,repair_timing,var,pad_detail_place
  • tool,openroad,task,repair_timing,var,power_corner
  • tool,openroad,task,repair_timing,var,rsz_allow_setup_violations
  • tool,openroad,task,repair_timing,var,rsz_cap_margin
  • tool,openroad,task,repair_timing,var,rsz_default_pex_corner
  • tool,openroad,task,repair_timing,var,rsz_hold_slack_margin
  • tool,openroad,task,repair_timing,var,rsz_match_cell_footprint
  • tool,openroad,task,repair_timing,var,rsz_recover_power
  • tool,openroad,task,repair_timing,var,rsz_repair_tns
  • tool,openroad,task,repair_timing,var,rsz_setup_slack_margin
  • tool,openroad,task,repair_timing,var,rsz_skip_buffer_removal
  • tool,openroad,task,repair_timing,var,rsz_skip_buffering
  • tool,openroad,task,repair_timing,var,rsz_skip_crit_vt_swap
  • tool,openroad,task,repair_timing,var,rsz_skip_drv_repair
  • tool,openroad,task,repair_timing,var,rsz_skip_final_sizing
  • tool,openroad,task,repair_timing,var,rsz_skip_gate_cloning
  • tool,openroad,task,repair_timing,var,rsz_skip_hold_repair
  • tool,openroad,task,repair_timing,var,rsz_skip_pin_swap
  • tool,openroad,task,repair_timing,var,rsz_skip_recover_power
  • tool,openroad,task,repair_timing,var,rsz_skip_setup_repair
  • tool,openroad,task,repair_timing,var,rsz_skip_size_down
  • tool,openroad,task,repair_timing,var,rsz_skip_vt_swap
  • tool,openroad,task,repair_timing,var,rsz_skip_wns_repair
  • tool,openroad,task,repair_timing,var,rsz_slew_margin
  • tool,openroad,task,repair_timing,var,sta_define_path_groups
  • tool,openroad,task,repair_timing,var,sta_early_timing_derate
  • tool,openroad,task,repair_timing,var,sta_late_timing_derate
  • tool,openroad,task,repair_timing,var,sta_top_n_paths
  • tool,openroad,task,repair_timing,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_repair_timing.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,dpl_max_displacement]

(float<0.0..>,float<0.0..>) (0, 0)

[...,var,dpl_use_decap_fillers]

bool True

[...,var,dpl_use_diamond_legalizer]

bool False

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pad_detail_place]

int<0..> 0

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • logicdepth
  • markers_view
  • module_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • report_buffers
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_allow_setup_violations]

bool False

[...,var,rsz_cap_margin]

float<0.0..100.0> 0.0

[...,var,rsz_default_pex_corner]

str typical

[...,var,rsz_hold_slack_margin]

float 0.0

[...,var,rsz_match_cell_footprint]

bool False

[...,var,rsz_recover_power]

float<0.0..100.0> 100

[...,var,rsz_repair_tns]

float<0.0..100.0> 100

[...,var,rsz_setup_slack_margin]

float 0.0

[...,var,rsz_skip_buffer_removal]

bool False

[...,var,rsz_skip_buffering]

bool False

[...,var,rsz_skip_crit_vt_swap]

bool False

[...,var,rsz_skip_drv_repair]

bool False

[...,var,rsz_skip_final_sizing]

bool False

[...,var,rsz_skip_gate_cloning]

bool False

[...,var,rsz_skip_hold_repair]

bool False

[...,var,rsz_skip_pin_swap]

bool False

[...,var,rsz_skip_recover_power]

bool False

[...,var,rsz_skip_setup_repair]

bool False

[...,var,rsz_skip_size_down]

bool False

[...,var,rsz_skip_vt_swap]

bool False

[...,var,rsz_skip_wns_repair]

bool True

[...,var,rsz_slew_margin]

float<0.0..100.0> 0.0

[...,var,rsz_wns_sequence]

[enum]
  • vt_swap
  • reroute

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.28. screenshot#

Generate a PNG file from a layout file

File: screenshot.py

3.19.28.1. Methods#

ScreenshotTask.add_debuglevel(tool, category, level, clobber=False)[source]#
ScreenshotTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

ScreenshotTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

ScreenshotTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

ScreenshotTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ScreenshotTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ScreenshotTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ScreenshotTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ScreenshotTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ScreenshotTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ScreenshotTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ScreenshotTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ScreenshotTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ScreenshotTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ScreenshotTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ScreenshotTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ScreenshotTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_includereportimages(value: bool, step: str | None = None, index: int | str | None = None)[source]#

Set whether to include report images in the output.

Parameters:
  • value (bool) – Whether to include report images.

  • step (Optional[str]) – The step in the flow where this setting applies.

  • index (Optional[Union[int, str]]) – The index for multiple runs or configurations.

ScreenshotTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ScreenshotTask.set_openroad_verticalresolution(value: int, step: str | None = None, index: int | str | None = None)[source]#

Set the vertical resolution for OpenROAD screenshots.

Parameters:
  • value (int) – The vertical resolution in pixels.

  • step (Optional[str]) – The step in the flow where this setting applies.

  • index (Optional[Union[int, str]]) – The index for multiple runs or configurations.

ScreenshotTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ScreenshotTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ScreenshotTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ScreenshotTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

ScreenshotTask.unset_debuglevel()[source]#

3.19.28.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.28.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,include_report_images]

bool

true/false, include the images in reports/

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,show_vertical_resolution]

int<1..>

Vertical resolution of the screenshot image

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.28.4. Configuration#

Keypath

Type

Value

[...,env,QT_QPA_PLATFORM]

str offscreen

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]

top.png

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,screenshot,var,apply_pex_correction
  • tool,openroad,task,screenshot,var,enablehier
  • tool,openroad,task,screenshot,var,grt_resistance_aware
  • tool,openroad,task,screenshot,var,include_report_images
  • tool,openroad,task,screenshot,var,load_grt_setup
  • tool,openroad,task,screenshot,var,load_sdcs
  • tool,openroad,task,screenshot,var,opensta_generic_sdc
  • tool,openroad,task,screenshot,var,ord_enable_images
  • tool,openroad,task,screenshot,var,ord_heatmap_bins
  • tool,openroad,task,screenshot,var,rsz_default_pex_corner
  • tool,openroad,task,screenshot,var,show_vertical_resolution
  • tool,openroad,task,screenshot,var,showexit
  • tool,openroad,task,screenshot,var,showfilepath
  • tool,openroad,task,screenshot,var,showfiletype
  • tool,openroad,task,screenshot,var,sta_define_path_groups
  • 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,sta_unique_path_groups_per_clock

[...,script]

[file]

sc_open.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,include_report_images]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • clock_placement
  • clock_trees
  • ir_drop
  • markers_view
  • optimization_placement
  • placement_density
  • placement_view
  • power_density
  • routing_congestion
  • routing_view
  • snapshot

[...,var,rsz_default_pex_corner]

str typical

[...,var,show_vertical_resolution]

int<1..> 1024

[...,var,showexit]

bool True

[...,var,showfiletype]

str vg

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.29. show#

Show a design in openroad

File: show.py

3.19.29.1. Methods#

ShowTask.add_debuglevel(tool, category, level, clobber=False)[source]#
ShowTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

ShowTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

ShowTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

ShowTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

ShowTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

ShowTask.get_show_filepath() → str | None[source]#

Resolved path to showfilepath, or None if not set.

ShowTask.get_show_filetype() → str | None[source]#

The showfiletype value, or None if not set.

ShowTask.get_show_job() → str | None[source]#

The jobname recorded in shownode, or None if not set.

ShowTask.get_show_jobroot() → Project | None[source]#

Project used to resolve files for the source shownode.

When shownode carries a jobname, returns the matching history project (or a fresh copy with that jobname applied if no history entry exists). Otherwise returns the current project (which may be None outside of a runtime context).

ShowTask.get_show_node() → Tuple[str | None, str | None][source]#

The (step, index) recorded in shownode; (None, None) if not set.

ShowTask.get_show_workdir() → str | None[source]#

Working directory of the source shownode, or None if a complete shownode is not available. Callers append outputs/ (or another subdirectory) themselves when needed.

ShowTask.get_supported_task_extentions()[source]#

Returns a list of file extensions supported by this task. This method must be implemented by subclasses.

Order is meaningful: list them best view of a design first. A task that reads several formats is the only thing that knows how they rank against each other – openroad reading ["odb", "def", "vg"] is stating that an odb beats the def beside it, which beats the netlist – and get_extension_map() builds the search order Project.show uses out of those statements. A task supporting one extension says nothing either way.

ShowTask.has_show_filepath() → bool[source]#

Whether showfilepath has been provided.

ShowTask.has_show_node() → bool[source]#

Whether shownode has been provided.

ShowTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

ShowTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ShowTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ShowTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ShowTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

ShowTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ShowTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

ShowTask.set_showexit(value: bool, step: str | None = None, index: str | int | None = None)[source]#

Sets whether the viewer application should exit after opening the file.

ShowTask.set_showfilepath(path: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the path to the file to be displayed.

ShowTask.set_showfiletype(file_type: str, step: str | None = None, index: str | int | None = None)[source]#

Sets the type of the file to be displayed.

ShowTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: str | int | None = None, step: str | None = None, index: str | int | None = None)[source]#

Sets the source node information for the file being displayed.

ShowTask.unset_debuglevel()[source]#

3.19.29.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.29.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,showexit]

bool

exit the tool after the file is opened

[...,var,showfilepath]

file

path to the file to open

[...,var,showfiletype]

str

extension of the file to open

[...,var,shownode]

(str,str,str)

source node (jobname, step, index) the file came from; not always available

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.29.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,show,var,apply_pex_correction
  • tool,openroad,task,show,var,enablehier
  • tool,openroad,task,show,var,grt_resistance_aware
  • tool,openroad,task,show,var,load_grt_setup
  • tool,openroad,task,show,var,load_sdcs
  • tool,openroad,task,show,var,opensta_generic_sdc
  • tool,openroad,task,show,var,ord_enable_images
  • tool,openroad,task,show,var,ord_heatmap_bins
  • tool,openroad,task,show,var,rsz_default_pex_corner
  • tool,openroad,task,show,var,showexit
  • tool,openroad,task,show,var,showfilepath
  • tool,openroad,task,show,var,showfiletype
  • tool,openroad,task,show,var,sta_define_path_groups
  • 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,sta_unique_path_groups_per_clock

[...,script]

[file]

sc_open.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,rsz_default_pex_corner]

str typical

[...,var,showexit]

bool False

[...,var,showfiletype]

str vg

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.30. cleanup_synth#

A task for cleaning up synthesized netlists using OpenROAD. Mainly used to remove buffers and dead logic inserted during synthesis from yosys.

Can also run a setup repair pass over the synthesized netlist. Synthesis optimizes against a simple delay and capacitance model, so its gate sizing is systematically off in a way a liberty-accurate pass can correct, and correcting it here means placement is given cells that are already close to their final size. The pass is off by default because it moves the quality of results of every design.

Buffer removal and timing repair are alternatives rather than additive, so enabling both is rejected during setup.

File: synth_cleanup.py

3.19.30.1. Methods#

CleanupSynthTask.add_debuglevel(tool, category, level, clobber=False)[source]#
CleanupSynthTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

CleanupSynthTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

CleanupSynthTask.add_openroad_rszphases(phases: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds phases to the explicit order of setup optimization phases.

Phases are appended in call order. The default is empty, which leaves the tool to pick its own ordering.

Parameters:
  • phases (Union[str, List[str]]) – The ordered phase name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

CleanupSynthTask.add_openroad_rszsequence(moves: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds moves to the explicit order of setup optimization moves.

Moves are appended in call order. The default is empty, which leaves the tool to pick its own ordering.

Parameters:
  • moves (Union[str, List[str]]) – The ordered move name(s) to add.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

CleanupSynthTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

CleanupSynthTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

CleanupSynthTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

CleanupSynthTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

CleanupSynthTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_removebuffers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the removal of buffers inserted during synthesis.

Parameters:
  • enable – True to remove synthesis buffers, False to keep them.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_removedeadlogic(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the removal of logic that does not drive a primary output.

Parameters:
  • enable – True to remove dead logic, False to keep it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_repairsynthtiming(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables setup timing repair on the synthesized netlist.

Parameters:
  • enable – True to repair timing, False to leave the netlist as synthesized.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszallowsetupviolations(allow: bool, step: str | None = None, index: str | None = None)[source]#

Allows or forbids hold repair from causing setup violations.

Parameters:
  • allow (bool) – True to allow setup violations, False otherwise.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszcapmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max capacitance repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszholdslackmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for hold timing repair.

Parameters:
  • margin (float) – The margin in ns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmatchcellfootprint(match: bool, step: str | None = None, index: str | None = None)[source]#

Restricts gate swaps to cells that share the same liberty footprint.

Parameters:
  • match (bool) – True to obey the cell footprint, False to allow any swap.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmaxbufferpercent(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of buffers hold repair may insert.

Parameters:
  • percentage (float) – The limit as a percentage of the instance count (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmaxiterations(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of optimization iterations timing repair may run.

Parameters:
  • iterations (int) – The maximum iteration count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmaxpasses(passes: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of optimization passes timing repair may run.

Parameters:
  • passes (int) – The maximum pass count.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmaxrepairsperpass(repairs: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of repairs setup repair may make in one pass.

Parameters:
  • repairs (int) – The maximum repair count per pass.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmaxutilization(utilization: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum core area utilization the resizer may use.

Parameters:
  • utilization (float) – The maximum utilization in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszmaxwirelength(length: float, step: str | None = None, index: str | None = None)[source]#

Sets the maximum wire length design repair allows before buffering.

Parameters:
  • length (float) – The maximum wire length in um.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszrecoverpower(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the percentage of paths to attempt to recover power.

Parameters:
  • percentage (float) – The percentage (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszrepairtns(percentage: float, step: str | None = None, index: str | None = None)[source]#

Sets the percentage of violating nets to attempt to repair.

Parameters:
  • percentage (float) – The percentage (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszsetupslackmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for setup timing repair.

Parameters:
  • margin (float) – The margin in ns.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipbuffering(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the rebuffering and load splitting optimizations.

Parameters:
  • skip (bool) – True to skip buffering, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipbufferremoval(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the buffer removal optimization.

Parameters:
  • skip (bool) – True to skip buffer removal, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipcritvtswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the final critical threshold voltage (VT) swap optimization.

Parameters:
  • skip (bool) – True to skip critical VT swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipfinalsizing(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the final greedy gate resizing pass.

This pass runs at the end of setup repair and picks up slack the main optimization left behind.

Parameters:
  • skip (bool) – True to skip the pass, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipgatecloning(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables gate cloning optimization.

Parameters:
  • skip (bool) – True to skip gate cloning, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskippinswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables pin swap optimization.

Parameters:
  • skip (bool) – True to skip pin swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipsizedown(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables down-sizing of gates off the critical path.

Parameters:
  • skip (bool) – True to skip down-sizing, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszskipvtswap(skip: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the threshold voltage (VT) swap optimization.

Parameters:
  • skip (bool) – True to skip VT swap, False to perform it.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_rszslewmargin(margin: float, step: str | None = None, index: str | None = None)[source]#

Sets the margin for max slew repairs.

Parameters:
  • margin (float) – The margin in percent (0 - 100).

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

CleanupSynthTask.unset_debuglevel()[source]#

3.19.30.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.30.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,power_corner]

str

corner to use for power analysis

[...,var,remove_dead_logic]

bool

remove logic which does not drive a primary output

[...,var,remove_synth_buffers]

bool

remove buffers inserted by synthesis

[...,var,repair_synth_timing]

bool

true/false, perform setup timing repair on the synthesized netlist. No placement exists yet, so this runs on wire load models and is most useful for correcting gate sizing rather than wire delay

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_allow_setup_violations]

bool

true/false, when true hold repair is allowed to insert buffers that cause setup violations

[...,var,rsz_cap_margin]

float<0.0..100.0>

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

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_hold_slack_margin]

float

specifies the margin to apply when performing hold repair

[...,var,rsz_match_cell_footprint]

bool

true/false, when true only cells sharing the same liberty footprint are considered when swapping gates

[...,var,rsz_max_buffer_percent]

float<0.0..100.0>

maximum number of buffers hold repair may insert, as a percentage of the instance count, unset uses the tool default

[...,var,rsz_max_iterations]

int<1..>

maximum number of optimization iterations timing repair may run, unset uses the tool default

[...,var,rsz_max_passes]

int<1..>

maximum number of optimization passes timing repair may run, unset uses the tool default

[...,var,rsz_max_repairs_per_pass]

int<1..>

maximum number of repairs setup repair may make in a single pass, unset uses the tool default

[...,var,rsz_max_utilization]

float<0.0..100.0>

maximum percentage of the core area the resizer is allowed to use, unset uses the tool default

[...,var,rsz_max_wire_length]

float<0.0..>

maximum length a wire may reach before design repair inserts a buffer, unset lets the tool pick the length that avoids slew violations

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,rsz_phases]

[enum]

explicit order of setup optimization phases, an empty list uses the tool default, note the tool appends its critical threshold voltage swap phase to any of its legacy phases. Allowed values: CRIT_VT_SWAP, ENDPOINT_FANIN, GLOBAL_SIZING, LAST_GASP, LEGACY, REROUTE, STARTPOINT_FANOUT, TNS, WNS, WNS_CONE, WNS_PATH

[...,var,rsz_recover_power]

float<0.0..100.0>

percentage of paths to attempt to recover power (0 - 100)

[...,var,rsz_repair_tns]

float<0.0..100.0>

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

[...,var,rsz_sequence]

[enum]

explicit order of setup optimization moves, an empty list uses the tool default. Allowed values: buffer, clone, reroute, size, size_down, size_down_fanout, sizeup, sizeup_match, split, swap, unbuffer, vt_swap

[...,var,rsz_setup_slack_margin]

float

specifies the margin to apply when performing setup repair

[...,var,rsz_skip_buffer_removal]

bool

true/false, skip buffer removal optimization

[...,var,rsz_skip_buffering]

bool

true/false, skip rebuffering and load splitting optimizations

[...,var,rsz_skip_crit_vt_swap]

bool

true/false, skip the final critical threshold voltage (VT) swap optimization

[...,var,rsz_skip_final_sizing]

bool

true/false, skip the greedy gate resizing pass that runs at the end of setup repair to pick up any slack the main optimization left

[...,var,rsz_skip_gate_cloning]

bool

true/false, skip gate cloning optimization

[...,var,rsz_skip_pin_swap]

bool

true/false, skip pin swap optimization

[...,var,rsz_skip_size_down]

bool

true/false, skip down-sizing gates that are not on the critical path

[...,var,rsz_skip_vt_swap]

bool

true/false, skip threshold voltage (VT) swap optimization

[...,var,rsz_slew_margin]

float<0.0..100.0>

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

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

3.19.30.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,cleanup_synth,var,apply_pex_correction
  • tool,openroad,task,cleanup_synth,var,enablehier
  • tool,openroad,task,cleanup_synth,var,grt_resistance_aware
  • tool,openroad,task,cleanup_synth,var,load_grt_setup
  • tool,openroad,task,cleanup_synth,var,load_sdcs
  • tool,openroad,task,cleanup_synth,var,opensta_generic_sdc
  • tool,openroad,task,cleanup_synth,var,ord_enable_images
  • tool,openroad,task,cleanup_synth,var,ord_heatmap_bins
  • tool,openroad,task,cleanup_synth,var,power_corner
  • tool,openroad,task,cleanup_synth,var,remove_dead_logic
  • tool,openroad,task,cleanup_synth,var,remove_synth_buffers
  • tool,openroad,task,cleanup_synth,var,repair_synth_timing
  • tool,openroad,task,cleanup_synth,var,rsz_allow_setup_violations
  • tool,openroad,task,cleanup_synth,var,rsz_cap_margin
  • tool,openroad,task,cleanup_synth,var,rsz_default_pex_corner
  • tool,openroad,task,cleanup_synth,var,rsz_hold_slack_margin
  • tool,openroad,task,cleanup_synth,var,rsz_match_cell_footprint
  • tool,openroad,task,cleanup_synth,var,rsz_recover_power
  • tool,openroad,task,cleanup_synth,var,rsz_repair_tns
  • tool,openroad,task,cleanup_synth,var,rsz_sequence
  • tool,openroad,task,cleanup_synth,var,rsz_setup_slack_margin
  • tool,openroad,task,cleanup_synth,var,rsz_skip_buffer_removal
  • tool,openroad,task,cleanup_synth,var,rsz_skip_buffering
  • tool,openroad,task,cleanup_synth,var,rsz_skip_crit_vt_swap
  • tool,openroad,task,cleanup_synth,var,rsz_skip_final_sizing
  • tool,openroad,task,cleanup_synth,var,rsz_skip_gate_cloning
  • tool,openroad,task,cleanup_synth,var,rsz_skip_pin_swap
  • tool,openroad,task,cleanup_synth,var,rsz_skip_size_down
  • tool,openroad,task,cleanup_synth,var,rsz_skip_vt_swap
  • tool,openroad,task,cleanup_synth,var,rsz_slew_margin
  • tool,openroad,task,cleanup_synth,var,sta_define_path_groups
  • tool,openroad,task,cleanup_synth,var,sta_early_timing_derate
  • tool,openroad,task,cleanup_synth,var,sta_late_timing_derate
  • tool,openroad,task,cleanup_synth,var,sta_top_n_paths
  • tool,openroad,task,cleanup_synth,var,sta_unique_path_groups_per_clock

[...,script]

[file]

apr/sc_cleanup_synth.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_enable_images]

bool False

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,power_corner]

str typical

[...,var,remove_dead_logic]

bool True

[...,var,remove_synth_buffers]

bool True

[...,var,repair_synth_timing]

bool False

[...,var,reports]

{enum}
  • check_setup
  • floating_nets
  • logicdepth
  • overdriven_nets
  • power
  • scenarios
  • setup
  • unconstrained

[...,var,rsz_allow_setup_violations]

bool False

[...,var,rsz_cap_margin]

float<0.0..100.0> 0.0

[...,var,rsz_default_pex_corner]

str typical

[...,var,rsz_hold_slack_margin]

float 0.0

[...,var,rsz_match_cell_footprint]

bool False

[...,var,rsz_recover_power]

float<0.0..100.0> 100

[...,var,rsz_repair_tns]

float<0.0..100.0> 100

[...,var,rsz_sequence]

[enum]
  • unbuffer
  • sizeup

[...,var,rsz_setup_slack_margin]

float 0.0

[...,var,rsz_skip_buffer_removal]

bool False

[...,var,rsz_skip_buffering]

bool False

[...,var,rsz_skip_crit_vt_swap]

bool False

[...,var,rsz_skip_final_sizing]

bool True

[...,var,rsz_skip_gate_cloning]

bool False

[...,var,rsz_skip_pin_swap]

bool False

[...,var,rsz_skip_size_down]

bool False

[...,var,rsz_skip_vt_swap]

bool False

[...,var,rsz_slew_margin]

float<0.0..100.0> 0.0

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.19.31. write_data#

Write output files

File: write_data.py

3.19.31.1. Methods#

WriteViewsTask.add_debuglevel(tool, category, level, clobber=False)[source]#
WriteViewsTask.add_openroad_debuglevel(tool: str, category: str, level: int, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Configures the debug logging level for a specific OpenROAD tool and category.

Parameters:
  • tool – The name of the OpenROAD tool (e.g., “GRT”, “PSM”).

  • category – The specific debug category or keyword within the tool.

  • level – The integer verbosity level for the debug output.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing debug level configuration. If False, appends this configuration to the existing list.

WriteViewsTask.add_openroad_globalconnectfileset(library: str, fileset: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a library and fileset pair to the global connect configuration.

Parameters:
  • library – The name of the library.

  • fileset – The name of the fileset.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing global connect settings. If False, appends to the existing settings.

WriteViewsTask.add_openroad_psmskipnets(nets: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds nets to skip during power grid analysis.

Parameters:
  • nets (Union[str, List[str]]) – The net(s) to skip.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

  • clobber (bool, optional) – If True, overwrites the existing list. Defaults to False.

WriteViewsTask.add_openroad_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenROAD execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘routing_congestion’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

WriteViewsTask.get_clock(clock_units_multiplier: float = 1.0) → Tuple[str, float][source]#

Finds the fastest clock the SDC files of this node define.

Parameters:

clock_units_multiplier – Scale applied to the period before it is returned.

Returns:

The name and period of the fastest clock, either of which is None when the SDC files do not give it.

WriteViewsTask.get_clock_port() → str | None[source]#

Finds the port the fastest clock of this node is attached to.

This is the name the clock carries in the design, which is not the name of the clock itself: create_clock -name core_clock [get_ports clock] names a clock core_clock on a port clock. A tool that has to agree with the SDC on what the clock pin is called – one generating the RTL the SDC constrains, say – wants this and not get_clock().

Returns:

The port name, None when the SDC files do not give it or the fastest clock is virtual and so attached to no port.

WriteViewsTask.set_asic_var(key: str, defvalue=None, check_pdk: bool = True, require_pdk: bool = False, pdk_key: str = None, check_mainlib: bool = True, require_mainlib: bool = False, mainlib_key: str = None, require: bool = False)[source]#

Set an ASIC parameter based on a prioritized lookup order.

This method attempts to set a parameter identified by key by checking values in a specific order: 1. The main library 2. The PDK 3. A provided default value (defvalue)

The first non-empty or non-None value found in this hierarchy will be used to set the parameter. If no value is found and defvalue is not provided, the parameter will not be set unless explicitly required.

Parameters:
  • key – The string key for the parameter to be set. This key is used to identify the parameter within the current object (self) and, by default, within the main library and PDK.

  • defvalue – An optional default value to use if the parameter is not found in the main library or PDK. If None and the parameter is not found, it will not be set unless require is True.

  • check_pdk – If True, the method will attempt to retrieve the parameter from the PDK. Defaults to True.

  • require_pdk – If True, the parameter must be defined in the PDK. An error will be raised if it’s not found and check_pdk is True. Defaults to False.

  • pdk_key – The specific key to use when looking up the parameter in the PDK. If None, key will be used.

  • check_mainlib – If True, the method will attempt to retrieve the parameter from the main library. Defaults to True.

  • require_mainlib – If True, the parameter must be defined in the main library. An error will be raised if it’s not found and check_mainlib is True. Defaults to False.

  • mainlib_key – The specific key to use when looking up the parameter in the main library. If None, key will be used.

  • require – If True, the parameter must be set by this method (either from a source or defvalue). An error will be raised if it cannot be set. Defaults to False.

WriteViewsTask.set_openroad_abstractlefbloatfactor(factor: int, step: str | None = None, index: str | None = None)[source]#

Sets the bloat factor to apply when writing the abstract LEF.

Parameters:
  • factor (int) – The bloat factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_abstractlefbloatlayers(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables filling all layers when writing the abstract LEF.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_applypexcorrection(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the calibrated per-layer pex correction.

When enabled (the default) the PDK’s rccorrection factors scale the rclayer values before set_layer_rc, so the pre-route parasitic estimate tracks signoff extraction. Disable it to run a node against the raw, uncalibrated estimate. A PDK with no rccorrection is unaffected either way.

Parameters:
  • enable – True to apply the correction, False to use the raw rclayer values.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_definepathgroups(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of path groups for timing reporting.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_earlytimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for hold corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_enablehier(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables hierarchical design support in OpenROAD.

Parameters:
  • enable – True to enable hierarchical design support, False to disable it.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_enableimages(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables the generation of design images at the end of the task.

Parameters:
  • enable – True to generate images, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_grtresistanceaware(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables resistance-aware global routing.

Applies to the main global route and to the incremental global routes issued around detailed placement.

Parameters:
  • enable – True to enable, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_heatmapbins(x: int, y: int, step: str | None = None, index: str | None = None) → None[source]#

Configures the resolution of the heatmap images.

Parameters:
  • x – The number of bins in the X direction.

  • y – The number of bins in the Y direction.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_latetimingderate(derate: float, step: str | None = None, index: str | None = None)[source]#

Sets the timing derating factor to use for setup corners.

Parameters:
  • derate (float) – The derating factor.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_loadsdcs(enable: bool, step: str | None = None, index: str | None = None) → None[source]#

Enables or disables loading SDC files before APR.

Parameters:
  • enable – True to load SDC files, False to disable.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_powercorner(corner: str, step: str | None = None, index: str | None = None) → None[source]#

Sets the specific process corner used for power analysis.

Parameters:
  • corner – The name of the timing/power corner.

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_psmenable(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables IR drop analysis.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables the generation of separate path groups per clock.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_writecdl(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables writing the CDL file.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_writeliberty(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables writing the Liberty timing model.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_writesdf(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables writing the SDF timing model.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.set_openroad_writespef(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables writing the SPEF file.

Parameters:
  • enable (bool) – True to enable, False to disable.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

WriteViewsTask.unset_debuglevel()[source]#

3.19.31.2. Data root#

Root

Specifications

openroad-ref

  • Path: python://siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.19.31.3. Variables#

Parameters

Type

Help

[...,var,apply_pex_correction]

bool

apply the calibrated per-layer pex correction (pdk ‘rccorrection’) to the pre-route parasitic estimate

[...,var,debug_level]

{(str,str,int<0..>)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,var,global_connect_fileset]

[(str,str)]

list of libraries and filesets to generate connects from

[...,var,grt_resistance_aware]

bool

true/false, when true global routing will consider wire resistance

[...,var,load_grt_setup]

bool

used to indicate if global routing information should be loaded

[...,var,load_sdcs]

bool

used to indicate if SDC files should be loaded before APR

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,ord_abstract_lef_bloat_factor]

int<1..>

Factor to apply when writing the abstract lef

[...,var,ord_abstract_lef_bloat_layers]

bool

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

[...,var,ord_enable_images]

bool

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

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>)

number of (X, Y) bins to use for heatmap image generation

[...,var,pex_corners]

{str}

set of pex corners to perform extraction on

[...,var,power_corner]

str

corner to use for power analysis

[...,var,psm_enable]

bool

true/false, when true enables IR drop analysis

[...,var,psm_skip_nets]

[str]

list of nets to skip power grid analysis on

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,rsz_default_pex_corner]

str

default corner to use for parasitic extraction

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,skip_reports]

{enum}

list of reports and images skip. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, design_stats, drv_violations, floating_nets, fmax, hold, ir_drop, logicdepth, markers_view, module_view, optimization_placement, overdriven_nets, placement_density, placement_view, power, power_density, report_buffers, routing_congestion, routing_view, scenarios, setup, snapshot, unconstrained

[...,var,sta_define_path_groups]

bool

if true will generate path groups for timing reporting

[...,var,sta_early_timing_derate]

float

timing derating factor to use for hold corners

[...,var,sta_late_timing_derate]

float

timing derating factor to use for setup corners

[...,var,sta_top_n_paths]

int<1..>

number of paths to report timing for

[...,var,sta_unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

[...,var,use_spef]

bool

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

[...,var,write_cdl]

bool

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

[...,var,write_liberty]

bool

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

[...,var,write_sdf]

bool

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

[...,var,write_spef]

bool

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

3.19.31.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.sdc

  • top.vg

  • top.lec.vg

  • top.def.gz

  • top.odb.gz

  • top.lef

  • top.lvs.vg

  • top.typical.spef

  • top.typical.lib

  • top.typical.sdf

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • constraint,timing,scenario,typical,check
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,pexcorner
  • library,freepdk45,fileset,openroad.pex,file,openrcx
  • library,freepdk45,fileset,views.lef,file,lef
  • library,freepdk45,pdk,pexmodelfileset,openroad,typical
  • library,freepdk45,tool,openroad,rccorrection
  • library,freepdk45,tool,openroad,rclayer
  • tool,openroad,task,write_data,var,apply_pex_correction
  • tool,openroad,task,write_data,var,enablehier
  • tool,openroad,task,write_data,var,grt_resistance_aware
  • tool,openroad,task,write_data,var,load_grt_setup
  • tool,openroad,task,write_data,var,load_sdcs
  • tool,openroad,task,write_data,var,opensta_generic_sdc
  • tool,openroad,task,write_data,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,write_data,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,write_data,var,ord_enable_images
  • tool,openroad,task,write_data,var,ord_heatmap_bins
  • tool,openroad,task,write_data,var,pex_corners
  • tool,openroad,task,write_data,var,power_corner
  • tool,openroad,task,write_data,var,psm_enable
  • tool,openroad,task,write_data,var,rsz_default_pex_corner
  • tool,openroad,task,write_data,var,sta_define_path_groups
  • tool,openroad,task,write_data,var,sta_early_timing_derate
  • tool,openroad,task,write_data,var,sta_late_timing_derate
  • tool,openroad,task,write_data,var,sta_top_n_paths
  • tool,openroad,task,write_data,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,write_data,var,use_spef
  • tool,openroad,task,write_data,var,write_cdl
  • tool,openroad,task,write_data,var,write_liberty
  • tool,openroad,task,write_data,var,write_sdf
  • tool,openroad,task,write_data,var,write_spef

[...,script]

[file]

apr/sc_write_data.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,apply_pex_correction]

bool True

[...,var,enablehier]

bool False

[...,var,grt_resistance_aware]

bool False

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,ord_abstract_lef_bloat_factor]

int<1..> 10

[...,var,ord_abstract_lef_bloat_layers]

bool True

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int<1..>,int<1..>) (16, 16)

[...,var,pex_corners]

{str} typical

[...,var,power_corner]

str typical

[...,var,psm_enable]

bool True

[...,var,reports]

{enum}
  • clock_placement
  • clock_skew
  • clock_trees
  • design_stats
  • drv_violations
  • floating_nets
  • fmax
  • hold
  • ir_drop
  • logicdepth
  • markers_view
  • optimization_placement
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • routing_congestion
  • routing_view
  • scenarios
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_default_pex_corner]

str typical

[...,var,sta_define_path_groups]

bool True

[...,var,sta_early_timing_derate]

float 0.0

[...,var,sta_late_timing_derate]

float 0.0

[...,var,sta_top_n_paths]

int<1..> 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,var,use_spef]

bool True

[...,var,write_cdl]

bool False

[...,var,write_liberty]

bool True

[...,var,write_sdf]

bool True

[...,var,write_spef]

bool True

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.20. opensta#

OpenSTA is a gate level static timing verifier.

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

Sources: The-OpenROAD-Project/OpenSTA

Installation: The-OpenROAD-Project/OpenSTA (also installed with OpenROAD)

File: __init__.py

3.20.1. timing#

Generate static timing reports for an ASIC target device.

File: timing.py

3.20.1.1. Methods#

TimingTask.add_opensta_poweractivity(scope: str, library: str, fileset: str, clobber: bool = False, step: str | None = None, index: str | None = None)[source]#

Adds a VCD source for vector-based power analysis.

Parameters:
  • scope (str) – The instance path of the design top within the VCD.

  • library (str) – The library (design) providing the VCD fileset.

  • fileset (str) – The fileset containing the VCD file.

  • clobber (bool) – If True, overwrites any existing entries. If False (default), the entry is appended.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

TimingTask.add_opensta_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenSTA execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘clock_skew’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

TimingTask.set_opensta_timingmode(mode: str, step: str | None = None, index: str | None = None)[source]#

Sets the timing mode to use.

Parameters:
  • mode (str) – The timing mode to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

TimingTask.set_opensta_topnpaths(n: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of paths to report timing for.

Parameters:
  • n (int) – The number of paths.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

TimingTask.set_opensta_uniquepathgroupsperclock(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables generating separate path groups per clock.

Parameters:
  • enable (bool) – Whether to enable unique path groups per clock.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

TimingTask.set_opensta_writeliberty(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables writing liberty files for every corner.

Parameters:
  • enable (bool) – Whether to enable writing liberty files.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

TimingTask.set_opensta_writesdf(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables writing SDF files for every corner.

Parameters:
  • enable (bool) – Whether to enable writing SDF files.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

3.20.1.2. Data root#

Root

Specifications

refdir-root

  • Path: python://siliconcompiler/tools/opensta

siliconcompiler

  • Path: python://siliconcompiler

3.20.1.3. Variables#

Parameters

Type

Help

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,power_activities]

[(str,str,str)]

list of (VCD scope, library, fileset) tuples specifying VCD files to read for vector-based power analysis. The scope is the instance path of the design top within the VCD. If empty, a VCD is read from the active filesets (or the step input) with no scope.

[...,var,reports]

{enum}

list of reports to generate, auto generated. Allowed values: check_setup, clock_skew, design_stats, drv_violations, fmax, hold, logicdepth, power, scenarios, setup, unconstrained

[...,var,skip_reports]

{enum}

list of reports to skip. Allowed values: check_setup, clock_skew, design_stats, drv_violations, fmax, hold, logicdepth, power, scenarios, setup, unconstrained

[...,var,timing_mode]

str

timing mode to use

[...,var,top_n_paths]

int<1..>

number of paths to report timing for

[...,var,unique_path_groups_per_clock]

bool

if true will generate separate path groups per clock

[...,var,write_liberty]

bool

if true will write liberty for every corner

[...,var,write_sdf]

bool

if true will write sdf for every corner

3.20.1.4. Configuration#

Keypath

Type

Value

[...,exe]

str sta

[...,format]

enum tcl

[...,refdir]

[dir]

scripts, refdir-root

[...,regex,errors]

[str] ^\[ERROR|^Error

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

{str}
  • tool,opensta,task,timing,var,reports
  • tool,opensta,task,timing,var,top_n_paths
  • tool,opensta,task,timing,var,unique_path_groups_per_clock
  • tool,opensta,task,timing,var,write_liberty
  • tool,opensta,task,timing,var,write_sdf

[...,script]

[file]

sc_timing.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int<1..> 2

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,reports]

{enum}
  • check_setup
  • clock_skew
  • design_stats
  • drv_violations
  • fmax
  • hold
  • logicdepth
  • power
  • scenarios
  • setup
  • unconstrained

[...,var,top_n_paths]

int<1..> 10

[...,var,unique_path_groups_per_clock]

bool False

[...,var,write_liberty]

bool False

[...,var,write_sdf]

bool False

[...,version]

[str] >=2.6.2

[...,vswitch]

[str] -version

3.20.2. fpga_timing#

Generate static timing reports for an FPGA target device.

File: timing.py

3.20.2.1. Methods#

FPGATimingTask.add_opensta_poweractivity(scope: str, library: str, fileset: str, clobber: bool = False, step: str | None = None, index: str | None = None)[source]#

Adds a VCD source for vector-based power analysis.

Parameters:
  • scope (str) – The instance path of the design top within the VCD.

  • library (str) – The library (design) providing the VCD fileset.

  • fileset (str) – The fileset containing the VCD file.

  • clobber (bool) – If True, overwrites any existing entries. If False (default), the entry is appended.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FPGATimingTask.add_opensta_skipreport(report_type: List[str] | str, step: str | None = None, index: str | None = None, clobber: bool = False) → None[source]#

Adds or sets report types to be skipped during OpenSTA execution.

Parameters:
  • report_type – The name of the report(s) to skip (e.g., ‘clock_skew’).

  • step – The specific step to apply this configuration to.

  • index – The specific index to apply this configuration to.

  • clobber – If True, overwrites the existing list of skipped reports. If False, appends to the existing list.

FPGATimingTask.set_opensta_timingmode(mode: str, step: str | None = None, index: str | None = None)[source]#

Sets the timing mode to use.

Parameters:
  • mode (str) – The timing mode to use.

  • step (str, optional) – The specific step to apply this configuration to.

  • index (str, optional) – The specific index to apply this configuration to.

FPGATimingTask.set_opensta_topnpaths(n: int,