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#

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

File: convert.py

3.1.1.1. Methods#

ConvertTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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_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.

3.1.1.2. Variables#

Parameters

Type

Help

[...,var,memorychannels]

int

Number of memory channels available

3.1.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str bambu

[...,output]

[file]

top.v

[...,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

[...,var,memorychannels]

int 1

[...,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

[...,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

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

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

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

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

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

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,file
  • tool,builtin,task,importfiles,var,dir

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 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

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#

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: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/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

[...,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

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]
  • tool,genfasm,task,bitstream,var,enable_images
  • tool,genfasm,task,bitstream,var,timing_paths
  • tool,genfasm,task,bitstream,var,timing_report_type
  • tool,genfasm,task,bitstream,var,enable_timing_analysis
  • library,z1000,tool,vpr,devicecode
  • library,z1000,tool,vpr,clock_model
  • library,z1000,tool,vpr,archfile
  • library,z1000,tool,vpr,graphfile
  • library,z1000,tool,vpr,channelwidth
  • library,z1000,tool,vpr,router_lookahead

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enable_images]

bool True

[...,var,enable_timing_analysis]

bool False

[...,var,timing_paths]

int 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

[...,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.

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

ShowTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: int | str | None = None, step: str | None = None, index: int | str | 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,showfiletype
  • tool,graphviz,task,show,var,showfilepath

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

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

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

ScreenshotTask.set_shownode(jobname: str | None = None, nodestep: str | None = None, nodeindex: int | str | None = None, step: str | None = None, index: int | str | 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,showfiletype
  • tool,graphviz,task,screenshot,var,showfilepath

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

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

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

3.9.1.2. Data root#

Root

Specifications

gtkwave

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/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,showfiletype
  • tool,gtkwave,task,show,var,showfilepath

[...,script]

[file]

sc_show.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 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. compile#

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

File: compile.py

3.10.1.1. Methods#

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.1.2. Variables#

Parameters

Type

Help

[...,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.1.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 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) and focuses today on combinational equivalence checking only.

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.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.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/klayout

3.13.1.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide

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

[...,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.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/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

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

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.3. export#

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

File: export.py

3.13.3.1. Methods#

ExportTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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 in microns.

  • 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: 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: 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: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/klayout

3.13.3.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide

[...,var,screenshot]

bool

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

[...,var,show_bins]

(int,int)

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

[...,var,show_linewidth]

int

Width of lines in detailed screenshots

[...,var,show_margin]

float

Margin around design in microns

[...,var,show_oversampling]

int

Image oversampling used in detailed screenshots

[...,var,show_resolution]

(int,int)

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]
  • tool,klayout,task,export,var,show_resolution
  • tool,klayout,task,export,var,show_bins
  • tool,klayout,task,export,var,show_margin
  • tool,klayout,task,export,var,show_linewidth
  • tool,klayout,task,export,var,show_oversampling
  • tool,klayout,task,export,var,stream
  • tool,klayout,task,export,var,timestamps
  • tool,klayout,task,export,var,screenshot
  • library,freepdk45,pdk,layermapfileset,klayout,def,klayout

[...,script]

[file]

klayout_export.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,var,screenshot]

bool True

[...,var,show_bins]

(int,int) (1, 1)

[...,var,show_linewidth]

int 0

[...,var,show_margin]

float 10

[...,var,show_oversampling]

int 2

[...,var,show_resolution]

(int,int) (4096, 4096)

[...,var,stream]

enum gds

[...,var,timestamps]

bool True

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.4. merge#

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

File: merge.py

3.13.4.1. Methods#

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]#
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.4.2. Data root#

Root

Specifications

refdir

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/klayout

3.13.4.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide

[...,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.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

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

[str]
  • tool,klayout,task,merge,var,reference
  • tool,klayout,task,merge,var,merge

[...,script]

[file]

klayout_merge.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.5. operations#

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

File: operations.py

3.13.5.1. Methods#

OperationsTask.add_operation(op, args, step=None, index=None)[source]#
OperationsTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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: str | None = None)[source]#

Sets the list of operations to perform.

Parameters:
  • operations (List[Tuple[str, str]]) – The list of operations.

  • 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_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.

OperationsTask.set_klayout_timestamps(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.5.2. Data root#

Root

Specifications

refdir

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/klayout

3.13.5.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide

[...,var,operations]

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

list of operations to perform

[...,var,stream]

enum

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

[...,var,timestamps]

bool

Export GDSII with timestamps

3.13.5.4. Configuration#

Keypath

Type

Value

[...,env,PYTHONUNBUFFERED]

str 1

[...,exe]

str klayout

[...,format]

enum json

[...,input]

[file]

top.gds

[...,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]
  • tool,klayout,task,operations,var,operations
  • 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

[...,var,stream]

enum gds

[...,var,timestamps]

bool True

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.6. screenshot#

Show a layout in kLayout

File: screenshot.py

3.13.6.1. Methods#

ScreenshotTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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.

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 in microns.

  • 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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

3.13.6.2. Data root#

Root

Specifications

refdir

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/klayout

3.13.6.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide

[...,var,show_bins]

(int,int)

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

[...,var,show_linewidth]

int

Width of lines in detailed screenshots

[...,var,show_margin]

float

Margin around design in microns

[...,var,show_oversampling]

int

Image oversampling used in detailed screenshots

[...,var,show_resolution]

(int,int)

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.6.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]
  • tool,klayout,task,screenshot,var,show_resolution
  • tool,klayout,task,screenshot,var,show_bins
  • tool,klayout,task,screenshot,var,show_margin
  • tool,klayout,task,screenshot,var,show_linewidth
  • tool,klayout,task,screenshot,var,show_oversampling
  • tool,klayout,task,screenshot,var,showexit
  • tool,klayout,task,screenshot,var,showfiletype
  • tool,klayout,task,screenshot,var,showfilepath

[...,script]

[file]

klayout_show.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,var,show_bins]

(int,int) (1, 1)

[...,var,show_linewidth]

int 0

[...,var,show_margin]

float 10

[...,var,show_oversampling]

int 2

[...,var,show_resolution]

(int,int) (4096, 4096)

[...,var,showexit]

bool True

[...,var,showfiletype]

str ascii

[...,version]

[str] >=0.28.0

[...,vswitch]

[str]
  • -zz
  • -v

3.13.7. show#

Show a layout in kLayout

File: show.py

3.13.7.1. Methods#

ShowTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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.

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

3.13.7.2. Data root#

Root

Specifications

refdir

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/klayout

3.13.7.3. Variables#

Parameters

Type

Help

[...,var,hide_layers]

[str]

list of layers to hide

[...,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
  • -rm

[...,refdir]

[dir]

scripts, refdir

[...,regex,errors]

[str] ERROR

[...,regex,warnings]

[str] (WARNING|warning)

[...,require]

[str]
  • tool,klayout,task,show,var,showexit
  • tool,klayout,task,show,var,showfiletype
  • tool,klayout,task,show,var,showfilepath

[...,script]

[file]

klayout_show.py

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,var,showexit]

bool False

[...,var,showfiletype]

str ascii

[...,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: http://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: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/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 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: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/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 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. tile#

Tiles input images into a single output image.

File: tile.py

3.15.1.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.1.2. Variables#

Parameters

Type

Help

[...,var,bins]

(int,int)

Number of bins along the (x, y)-axis

3.15.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str montage

[...,input]

[file]
  • top_X0_Y0.png

  • top_X0_Y1.png

  • top_X1_Y0.png

  • top_X1_Y1.png

[...,option]

[str]
  • -limit
  • memory
  • 8GiB
  • -limit
  • map
  • 8GiB
  • -limit
  • disk
  • 8GiB
  • -limit
  • width
  • 32KP
  • -limit
  • height
  • 32KP
  • -limit
  • area
  • 1GP

[...,output]

[file]

top.png

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,bins]

(int,int) (2, 2)

[...,version]

[str] >=6.9.0

[...,vswitch]

[str] -version

3.16. netgen#

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

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

Installation: RTimothyEdwards/netgen

Sources: RTimothyEdwards/netgen

File: __init__.py

3.16.1. lvs#

Perform LVS on the supplied netlists

File: lvs.py

3.16.1.1. Data root#

Root

Specifications

netgen

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/netgen

3.16.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:

[...,script]

[file]

sc_lvs.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str errors

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,version]

[str] >=1.5.192

[...,vswitch]

[str] -batch

3.17. 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.17.1. apr#

Perform automated place and route on FPGAs

File: apr.py

3.17.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.18. openroad#

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

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

Sources: The-OpenROAD-Project/OpenROAD

Installation: The-OpenROAD-Project/OpenROAD

File: __init__.py

3.18.1. clock_tree_synthesis#

Perform clock tree synthesis

File: clock_tree_synthesis.py

3.18.1.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]#
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_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_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_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.18.1.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.1.3. Variables#

Parameters

Type

Help

[...,var,cts_balance_levels]

bool

perform level balancing in clock tree synthesis

[...,var,cts_cluster_diameter]

float

clustering distance to use during clock tree synthesis in microns

[...,var,cts_cluster_size]

int

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

[...,var,cts_distance_between_buffers]

float

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)}

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

[...,var,dpl_max_displacement]

(float,float)

maximum cell movement in detailed placement 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,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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,clock_tree_synthesis,var,cts_distance_between_buffers
  • 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_balance_levels
  • tool,openroad,task,clock_tree_synthesis,var,cts_obstruction_aware
  • tool,openroad,task,clock_tree_synthesis,var,pad_detail_place
  • tool,openroad,task,clock_tree_synthesis,var,dpl_max_displacement
  • 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_define_path_groups
  • tool,openroad,task,clock_tree_synthesis,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,clock_tree_synthesis,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,clock_tree_synthesis,var,enablehier
  • 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,load_grt_setup
  • tool,openroad,task,clock_tree_synthesis,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,clock_tree_synthesis,var,power_corner

[...,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 2

[...,var,cts_balance_levels]

bool True

[...,var,cts_cluster_diameter]

float 100

[...,var,cts_cluster_size]

int 30

[...,var,cts_distance_between_buffers]

float 100

[...,var,cts_obstruction_aware]

bool True

[...,var,dpl_max_displacement]

(float,float) (0, 0)

[...,var,enablehier]

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,int) (16, 16)

[...,var,pad_detail_place]

int 0

[...,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
  • report_buffers
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.2. detailed_placement#

Perform detailed placement

File: detailed_placement.py

3.18.2.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]#
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_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_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_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.18.2.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.2.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

[...,var,dpl_max_displacement]

(float,float)

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

[...,var,dpo_enable]

bool

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

[...,var,dpo_max_displacement]

(float,float)

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,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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,detailed_placement,var,dpo_enable
  • tool,openroad,task,detailed_placement,var,dpo_max_displacement
  • tool,openroad,task,detailed_placement,var,pad_detail_place
  • tool,openroad,task,detailed_placement,var,dpl_max_displacement
  • 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_define_path_groups
  • tool,openroad,task,detailed_placement,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,detailed_placement,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,detailed_placement,var,enablehier
  • tool,openroad,task,detailed_placement,var,ord_enable_images
  • tool,openroad,task,detailed_placement,var,ord_heatmap_bins
  • tool,openroad,task,detailed_placement,var,load_grt_setup
  • tool,openroad,task,detailed_placement,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,detailed_placement,var,power_corner

[...,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 2

[...,var,dpl_max_displacement]

(float,float) (0, 0)

[...,var,dpo_enable]

bool True

[...,var,dpo_max_displacement]

(float,float) (5, 5)

[...,var,enablehier]

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,int) (16, 16)

[...,var,pad_detail_place]

int 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
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.3. detailed_route#

Perform detailed routing

File: detailed_route.py

3.18.3.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]#
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_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_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.18.3.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.3.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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

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,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • 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,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_define_path_groups
  • tool,openroad,task,detailed_route,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,detailed_route,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,detailed_route,var,enablehier
  • tool,openroad,task,detailed_route,var,ord_enable_images
  • tool,openroad,task,detailed_route,var,ord_heatmap_bins
  • tool,openroad,task,detailed_route,var,load_grt_setup
  • tool,openroad,task,detailed_route,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,detailed_route,var,power_corner

[...,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 2

[...,var,drt_disable_via_gen]

bool False

[...,var,drt_report_interval]

int 5

[...,var,enablehier]

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,int) (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
  • power_density
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.4. endcap_tapcell_insertion#

Perform endcap and tap cell insertion

File: endcap_tapcell_insertion.py

3.18.4.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]#
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_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_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.18.4.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.4.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • 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_define_path_groups
  • tool,openroad,task,endcap_tapcell_insertion,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,endcap_tapcell_insertion,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,endcap_tapcell_insertion,var,enablehier
  • 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,load_grt_setup
  • tool,openroad,task,endcap_tapcell_insertion,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check

[...,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 2

[...,var,enablehier]

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,int) (16, 16)

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • floating_nets
  • markers_view
  • overdriven_nets
  • placement_density
  • placement_view
  • routing_view
  • snapshot

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.5. fillercell_insertion#

Perform filler cell insertion

File: fillercell_insertion.py

3.18.5.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]#
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_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_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_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.18.5.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.5.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

[...,var,dpl_max_displacement]

(float,float)

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,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,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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,fillercell_insertion,var,dpl_use_decap_fillers
  • tool,openroad,task,fillercell_insertion,var,pad_detail_place
  • tool,openroad,task,fillercell_insertion,var,dpl_max_displacement
  • 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_define_path_groups
  • tool,openroad,task,fillercell_insertion,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,fillercell_insertion,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,fillercell_insertion,var,enablehier
  • tool,openroad,task,fillercell_insertion,var,ord_enable_images
  • tool,openroad,task,fillercell_insertion,var,ord_heatmap_bins
  • tool,openroad,task,fillercell_insertion,var,load_grt_setup
  • tool,openroad,task,fillercell_insertion,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,fillercell_insertion,var,power_corner

[...,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 2

[...,var,dpl_max_displacement]

(float,float) (0, 0)

[...,var,dpl_use_decap_fillers]

bool True

[...,var,enablehier]

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,int) (16, 16)

[...,var,pad_detail_place]

int 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
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.6. fillmetal_insertion#

Perform fill metal insertion

File: fillmetal_insertion.py

3.18.6.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]#
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_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_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.18.6.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.6.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

[...,var,enablehier]

bool

Enable hierarchical design support in OpenROAD when linking

[...,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,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • 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_define_path_groups
  • tool,openroad,task,fillmetal_insertion,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,fillmetal_insertion,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,fillmetal_insertion,var,enablehier
  • tool,openroad,task,fillmetal_insertion,var,ord_enable_images
  • tool,openroad,task,fillmetal_insertion,var,ord_heatmap_bins
  • tool,openroad,task,fillmetal_insertion,var,load_grt_setup
  • tool,openroad,task,fillmetal_insertion,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,fillmetal_insertion,var,fin_add_fill

[...,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 2

[...,var,enablehier]

bool False

[...,var,fin_add_fill]

bool True

[...,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,int) (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
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.7. global_placement#

Perform global placement

File: global_placement.py

3.18.7.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]#
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_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_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_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_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.18.7.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.7.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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

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

[...,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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_global_place]

int

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

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, 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, setup, snapshot, unconstrained

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,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_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, 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, 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

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.18.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]
  • tool,openroad,task,global_placement,var,pin_layer_horizontal
  • library,freepdk45,tool,openroad,pin_layer_horizontal
  • tool,openroad,task,global_placement,var,pin_layer_horizontal
  • tool,openroad,task,global_placement,var,pin_layer_vertical
  • library,freepdk45,tool,openroad,pin_layer_vertical
  • tool,openroad,task,global_placement,var,pin_layer_vertical
  • tool,openroad,task,global_placement,var,grt_macro_extension
  • tool,openroad,task,global_placement,var,grt_signal_min_layer
  • tool,openroad,task,global_placement,var,grt_clock_min_layer
  • tool,openroad,task,global_placement,var,grt_signal_max_layer
  • tool,openroad,task,global_placement,var,grt_clock_max_layer
  • tool,openroad,task,global_placement,var,gpl_enable_skip_io
  • tool,openroad,task,global_placement,var,gpl_enable_skip_initial_place
  • tool,openroad,task,global_placement,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,global_placement,var,gpl_timing_driven
  • tool,openroad,task,global_placement,var,gpl_routability_driven
  • tool,openroad,task,global_placement,var,place_density
  • library,nangate45,tool,openroad,place_density
  • tool,openroad,task,global_placement,var,place_density
  • tool,openroad,task,global_placement,var,pad_global_place
  • tool,openroad,task,global_placement,var,pad_global_place
  • 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_define_path_groups
  • tool,openroad,task,global_placement,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,global_placement,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,global_placement,var,enablehier
  • tool,openroad,task,global_placement,var,ord_enable_images
  • tool,openroad,task,global_placement,var,ord_heatmap_bins
  • tool,openroad,task,global_placement,var,load_grt_setup
  • tool,openroad,task,global_placement,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,global_placement,var,power_corner
  • tool,openroad,task,global_placement,var,enable_multibit_clustering
  • tool,openroad,task,global_placement,var,enable_scan_chains

[...,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 2

[...,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

[...,var,grt_clock_max_layer]

str metal7

[...,var,grt_clock_min_layer]

str metal2

[...,var,grt_macro_extension]

int 0

[...,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,int) (16, 16)

[...,var,pad_global_place]

int 0

[...,var,pin_layer_horizontal]

[str] metal5

[...,var,pin_layer_vertical]

[str] metal6

[...,var,place_density]

float 0.5

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • floating_nets
  • fmax
  • logicdepth
  • markers_view
  • module_view
  • overdriven_nets
  • placement_density
  • placement_view
  • power
  • power_density
  • report_buffers
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.8. global_route#

Perform global routing

File: global_route.py

3.18.8.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]#
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_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_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.18.8.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.8.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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

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

[...,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,global_route,var,grt_macro_extension
  • tool,openroad,task,global_route,var,grt_signal_min_layer
  • tool,openroad,task,global_route,var,grt_clock_min_layer
  • tool,openroad,task,global_route,var,grt_signal_max_layer
  • tool,openroad,task,global_route,var,grt_clock_max_layer
  • tool,openroad,task,global_route,var,grt_allow_congestion
  • tool,openroad,task,global_route,var,grt_overflow_iter
  • 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_define_path_groups
  • tool,openroad,task,global_route,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,global_route,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,global_route,var,enablehier
  • tool,openroad,task,global_route,var,ord_enable_images
  • tool,openroad,task,global_route,var,ord_heatmap_bins
  • tool,openroad,task,global_route,var,load_grt_setup
  • tool,openroad,task,global_route,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,global_route,var,power_corner
  • tool,openroad,task,global_route,var,grt_use_pin_access

[...,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 2

[...,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

[...,var,grt_overflow_iter]

int 100

[...,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,int) (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
  • power_density
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.9. 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.18.9.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]#
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_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_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.18.9.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

sc-common

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/_common

siliconcompiler

  • Path: python://siliconcompiler

3.18.9.3. Variables#

Parameters

Type

Help

[...,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)}

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,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,int)

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,remove_dead_logic]

bool

remove logic which does not drive a primary output

[...,var,remove_synth_buffers]

bool

remove buffers inserted by synthesis

[...,var,reports]

{enum}

list of reports and images to generate, auto generated. Allowed values: check_setup, clock_placement, clock_skew, clock_trees, 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, setup, snapshot, unconstrained

[...,var,routingblockage]

[(str,(float,float),(float,float))]

Routing blockage coordinates

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,init_floorplan,var,pin_layer_horizontal
  • library,freepdk45,tool,openroad,pin_layer_horizontal
  • tool,openroad,task,init_floorplan,var,pin_layer_horizontal
  • tool,openroad,task,init_floorplan,var,pin_layer_vertical
  • library,freepdk45,tool,openroad,pin_layer_vertical
  • tool,openroad,task,init_floorplan,var,pin_layer_vertical
  • 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_define_path_groups
  • tool,openroad,task,init_floorplan,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,init_floorplan,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,init_floorplan,var,enablehier
  • tool,openroad,task,init_floorplan,var,ord_enable_images
  • tool,openroad,task,init_floorplan,var,ord_heatmap_bins
  • tool,openroad,task,init_floorplan,var,load_grt_setup
  • tool,openroad,task,init_floorplan,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,init_floorplan,var,power_corner
  • tool,openroad,task,init_floorplan,var,ifp_snap_strategy
  • tool,openroad,task,init_floorplan,var,remove_synth_buffers
  • tool,openroad,task,init_floorplan,var,remove_dead_logic
  • tool,openroad,task,init_floorplan,var,assert_all_pins_placed
  • library,nangate45,asic,site
  • constraint,area,aspectratio
  • constraint,area,density
  • constraint,area,coremargin

[...,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 2

[...,var,assert_all_pins_placed]

bool False

[...,var,enablehier]

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,int) (16, 16)

[...,var,pin_layer_horizontal]

[str] metal5

[...,var,pin_layer_vertical]

[str] metal6

[...,var,power_corner]

str typical

[...,var,remove_dead_logic]

bool True

[...,var,remove_synth_buffers]

bool True

[...,var,reports]

{enum}
  • check_setup
  • floating_nets
  • logicdepth
  • markers_view
  • overdriven_nets
  • placement_view
  • power
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.10. macro_placement#

Macro placement

File: macro_placement.py

3.18.10.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]#
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_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_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.18.10.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.10.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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

[...,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,float)

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

[...,var,mpl_area_weight]

float

Weight for the area of current floorplan

[...,var,mpl_blockage_weight]

float

Weight for the boundary, or how far the hard macro clusters are from boundaries

[...,var,mpl_boundary_weight]

float

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,float,float,float)

Defines the global fence bounding box coordinates (llx, lly, urx, ury)

[...,var,mpl_fence_weight]

float

Weight for fence cost, or how far the macro is from zero fence violation

[...,var,mpl_guidance_weight]

float

Weight for guidance cost or clusters being placed near specified regions if users provide such constraints

[...,var,mpl_macro_blockage_weight]

float

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

maximum number of instances to use while clustering for macro placement

[...,var,mpl_max_levels]

int

maximum depth of physical hierarchical tree

[...,var,mpl_max_macros]

int

maximum number of macros to use while clustering for macro placement

[...,var,mpl_min_aspect_ratio]

float

Specifies the minimum aspect ratio of its width to height of a standard cell cluster

[...,var,mpl_min_instances]

int

minimum number of instances to use while clustering for macro placement

[...,var,mpl_min_macros]

int

minimum number of macros to use while clustering for macro placement

[...,var,mpl_notch_weight]

float

Weight for the notch, or the existence of dead space that cannot be used for placement & routing

[...,var,mpl_outline_weight]

float

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

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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_global_place]

int

global placement cell padding in number of sites

[...,var,place_density]

float

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,macro_placement,var,gpl_enable_skip_io
  • tool,openroad,task,macro_placement,var,gpl_enable_skip_initial_place
  • tool,openroad,task,macro_placement,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,macro_placement,var,gpl_timing_driven
  • tool,openroad,task,macro_placement,var,gpl_routability_driven
  • tool,openroad,task,macro_placement,var,place_density
  • library,nangate45,tool,openroad,place_density
  • tool,openroad,task,macro_placement,var,place_density
  • tool,openroad,task,macro_placement,var,pad_global_place
  • tool,openroad,task,macro_placement,var,pad_global_place
  • 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_define_path_groups
  • tool,openroad,task,macro_placement,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,macro_placement,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,macro_placement,var,enablehier
  • tool,openroad,task,macro_placement,var,ord_enable_images
  • tool,openroad,task,macro_placement,var,ord_heatmap_bins
  • tool,openroad,task,macro_placement,var,load_grt_setup
  • tool,openroad,task,macro_placement,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,macro_placement,var,macro_place_halo
  • library,nangate45,tool,openroad,macro_placement_halo
  • tool,openroad,task,macro_placement,var,macro_place_halo
  • tool,openroad,task,macro_placement,var,mpl_makeblockages
  • tool,openroad,task,macro_placement,var,mpl_bus_planning

[...,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 2

[...,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

[...,var,load_grt_setup]

bool False

[...,var,load_sdcs]

bool True

[...,var,macro_place_halo]

(float,float) (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,int) (16, 16)

[...,var,pad_global_place]

int 0

[...,var,place_density]

float 0.5

[...,var,power_corner]

str typical

[...,var,reports]

{enum}
  • floating_nets
  • markers_view
  • overdriven_nets
  • placement_view
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.11. metrics#

Extract metrics

File: metrics.py

3.18.11.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]#
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_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_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.18.11.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.11.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • 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_define_path_groups
  • tool,openroad,task,metrics,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,metrics,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,metrics,var,enablehier
  • tool,openroad,task,metrics,var,ord_enable_images
  • tool,openroad,task,metrics,var,ord_heatmap_bins
  • tool,openroad,task,metrics,var,load_grt_setup
  • tool,openroad,task,metrics,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,metrics,var,power_corner

[...,script]

[file]

apr/sc_metrics.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enablehier]

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,int) (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
  • power_density
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.12. pin_placement#

Perform IO pin placement refinement

File: pin_placement.py

3.18.12.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]#
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_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_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.18.12.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.12.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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

[...,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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_global_place]

int

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

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,pin_placement,var,pin_layer_horizontal
  • library,freepdk45,tool,openroad,pin_layer_horizontal
  • tool,openroad,task,pin_placement,var,pin_layer_horizontal
  • tool,openroad,task,pin_placement,var,pin_layer_vertical
  • library,freepdk45,tool,openroad,pin_layer_vertical
  • tool,openroad,task,pin_placement,var,pin_layer_vertical
  • tool,openroad,task,pin_placement,var,gpl_enable_skip_io
  • tool,openroad,task,pin_placement,var,gpl_enable_skip_initial_place
  • tool,openroad,task,pin_placement,var,gpl_uniform_placement_adjustment
  • tool,openroad,task,pin_placement,var,gpl_timing_driven
  • tool,openroad,task,pin_placement,var,gpl_routability_driven
  • tool,openroad,task,pin_placement,var,place_density
  • library,nangate45,tool,openroad,place_density
  • tool,openroad,task,pin_placement,var,place_density
  • tool,openroad,task,pin_placement,var,pad_global_place
  • tool,openroad,task,pin_placement,var,pad_global_place
  • 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_define_path_groups
  • tool,openroad,task,pin_placement,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,pin_placement,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,pin_placement,var,enablehier
  • tool,openroad,task,pin_placement,var,ord_enable_images
  • tool,openroad,task,pin_placement,var,ord_heatmap_bins
  • tool,openroad,task,pin_placement,var,load_grt_setup
  • tool,openroad,task,pin_placement,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check

[...,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 2

[...,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

[...,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,int) (16, 16)

[...,var,pad_global_place]

int 0

[...,var,pin_layer_horizontal]

[str] metal5

[...,var,pin_layer_vertical]

[str] metal6

[...,var,place_density]

float 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
  • setup
  • snapshot
  • unconstrained

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.13. power_grid#

Perform power grid insertion and connectivity analysis

File: power_grid.py

3.18.13.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]#
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_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_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.18.13.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.13.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • tool,openroad,task,power_grid,var,psm_enable
  • 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_define_path_groups
  • tool,openroad,task,power_grid,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,power_grid,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,power_grid,var,enablehier
  • tool,openroad,task,power_grid,var,ord_enable_images
  • tool,openroad,task,power_grid,var,ord_heatmap_bins
  • tool,openroad,task,power_grid,var,load_grt_setup
  • tool,openroad,task,power_grid,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,power_grid,var,fixed_pin_keepout
  • tool,openroad,task,power_grid,var,pdn_enable

[...,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 2

[...,var,enablehier]

bool False

[...,var,fixed_pin_keepout]

float 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,int) (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
  • snapshot

[...,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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.14. rcx_bench#

Builds the RCX extraction bench

File: rcx_bench.py

3.18.14.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]#
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 bench wires.

Parameters:
  • length (float) – The length in microns.

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

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

ORXBenchTask.set_openroad_benchmaxlayer(layer: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the maximum layer to generate the extraction bench for.

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.

ORXBenchTask.unset_debuglevel()[source]#

3.18.14.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

3.18.14.3. Variables#

Parameters

Type

Help

[...,var,bench_length]

float

Length of bench wires

[...,var,debug_level]

{(str,str,int)}

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

[...,var,max_layer]

str

Maximum layer to generate extraction bench for

3.18.14.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,output]

[file]
  • top.def

  • top.vg

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

[str]
  • tool,openroad,task,rcx_bench,var,max_layer
  • tool,openroad,task,rcx_bench,var,bench_length

[...,script]

[file]

sc_rcx.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,var,bench_length]

float 100

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.15. rcx_extract#

Convert extracted results into RCX.

File: rcx_extract.py

3.18.15.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]#
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.18.15.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

3.18.15.3. Variables#

Parameters

Type

Help

[...,var,corner]

str

Parasitic corner to generate RCX file for

[...,var,debug_level]

{(str,str,int)}

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

3.18.15.4. Configuration#

Keypath

Type

Value

[...,exe]

str openroad

[...,format]

enum tcl

[...,input]

[file]
  • top.def

  • top.None.spef

[...,output]

[file]

top.None.rcx

[...,refdir]

[dir]

scripts, openroad-ref

[...,regex,errors]

[str] ^\[ERROR

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

[str] tool,openroad,task,rcx_extract,var,corner

[...,script]

[file]

sc_rcx.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.16. rdlroute#

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

File: rdlroute.py

3.18.16.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, dataroot=None, step=None, index=None, clobber=False)[source]#
RDLRouteTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
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: 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.unset_debuglevel()[source]#

3.18.16.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

3.18.16.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

[...,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.18.16.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] 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 2

[...,var,fin_add_fill]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.17. repair_design#

Perform timing repair and tie-off cell insertion

File: repair_design.py

3.18.17.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]#
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_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_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_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.18.17.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.17.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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,ifp_tie_separation]

float

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,int)

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, 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, 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

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

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,rsz_slew_margin]

float

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, 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, 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

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.18.17.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]
  • tool,openroad,task,repair_design,var,rsz_cap_margin
  • tool,openroad,task,repair_design,var,rsz_slew_margin
  • 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_define_path_groups
  • tool,openroad,task,repair_design,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,repair_design,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,repair_design,var,enablehier
  • tool,openroad,task,repair_design,var,ord_enable_images
  • tool,openroad,task,repair_design,var,ord_heatmap_bins
  • tool,openroad,task,repair_design,var,load_grt_setup
  • tool,openroad,task,repair_design,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,repair_design,var,power_corner
  • tool,openroad,task,repair_design,var,ifp_tie_separation
  • tool,openroad,task,repair_design,var,rsz_buffer_inputs
  • tool,openroad,task,repair_design,var,rsz_buffer_outputs

[...,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 2

[...,var,enablehier]

bool False

[...,var,ifp_tie_separation]

float 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,int) (16, 16)

[...,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
  • report_buffers
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_buffer_inputs]

bool False

[...,var,rsz_buffer_outputs]

bool False

[...,var,rsz_cap_margin]

float 0.0

[...,var,rsz_slew_margin]

float 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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.18. repair_timing#

Perform setup and hold timing repairs

File: repair_timing.py

3.18.18.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_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]#
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_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_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_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_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_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_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_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_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.18.18.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.18.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

[...,var,dpl_max_displacement]

(float,float)

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,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,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,int)

number of (X, Y) bins to use for heatmap image generation

[...,var,pad_detail_place]

int

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, 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, setup, snapshot, unconstrained

[...,var,rsz_cap_margin]

float

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

[...,var,rsz_hold_slack_margin]

float

specifies the margin to apply when performing hold repair

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,rsz_recover_power]

float

percentage of paths to attempt to recover power (0 - 100)

[...,var,rsz_repair_tns]

float

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

[...,var,rsz_setup_slack_margin]

float

specifies the margin to apply when performing setup repair

[...,var,rsz_skip_drv_repair]

bool

skip design rule violation repair

[...,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_slew_margin]

float

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, 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, 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

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.18.18.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]
  • tool,openroad,task,repair_timing,var,dpl_use_decap_fillers
  • tool,openroad,task,repair_timing,var,rsz_setup_slack_margin
  • tool,openroad,task,repair_timing,var,rsz_hold_slack_margin
  • tool,openroad,task,repair_timing,var,rsz_skip_pin_swap
  • tool,openroad,task,repair_timing,var,rsz_skip_gate_cloning
  • tool,openroad,task,repair_timing,var,rsz_repair_tns
  • tool,openroad,task,repair_timing,var,rsz_recover_power
  • tool,openroad,task,repair_timing,var,rsz_cap_margin
  • tool,openroad,task,repair_timing,var,rsz_slew_margin
  • tool,openroad,task,repair_timing,var,pad_detail_place
  • tool,openroad,task,repair_timing,var,dpl_max_displacement
  • 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_define_path_groups
  • tool,openroad,task,repair_timing,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,repair_timing,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,repair_timing,var,enablehier
  • tool,openroad,task,repair_timing,var,ord_enable_images
  • tool,openroad,task,repair_timing,var,ord_heatmap_bins
  • tool,openroad,task,repair_timing,var,load_grt_setup
  • tool,openroad,task,repair_timing,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,repair_timing,var,power_corner
  • tool,openroad,task,repair_timing,var,rsz_skip_drv_repair
  • tool,openroad,task,repair_timing,var,rsz_skip_setup_repair
  • tool,openroad,task,repair_timing,var,rsz_skip_hold_repair
  • tool,openroad,task,repair_timing,var,rsz_skip_recover_power

[...,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 2

[...,var,dpl_max_displacement]

(float,float) (0, 0)

[...,var,dpl_use_decap_fillers]

bool True

[...,var,enablehier]

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,int) (16, 16)

[...,var,pad_detail_place]

int 0

[...,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
  • report_buffers
  • routing_congestion
  • routing_view
  • setup
  • snapshot
  • unconstrained

[...,var,rsz_cap_margin]

float 0.0

[...,var,rsz_hold_slack_margin]

float 0.0

[...,var,rsz_recover_power]

float 100

[...,var,rsz_repair_tns]

float 100

[...,var,rsz_setup_slack_margin]

float 0.0

[...,var,rsz_skip_drv_repair]

bool False

[...,var,rsz_skip_gate_cloning]

bool True

[...,var,rsz_skip_hold_repair]

bool False

[...,var,rsz_skip_pin_swap]

bool True

[...,var,rsz_skip_recover_power]

bool False

[...,var,rsz_skip_setup_repair]

bool False

[...,var,rsz_slew_margin]

float 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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.19. screenshot#

Generate a PNG file from a layout file

File: screenshot.py

3.18.19.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]#
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.

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_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_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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

ScreenshotTask.unset_debuglevel()[source]#

3.18.19.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.19.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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,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,int)

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, 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, setup, snapshot, unconstrained

[...,var,rsz_parasitics]

file

file used to specify the parasitics for estimation

[...,var,show_vertical_resolution]

int

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, 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, 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

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.18.19.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]
  • 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_define_path_groups
  • tool,openroad,task,screenshot,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,screenshot,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,screenshot,var,enablehier
  • tool,openroad,task,screenshot,var,ord_enable_images
  • tool,openroad,task,screenshot,var,ord_heatmap_bins
  • tool,openroad,task,screenshot,var,load_grt_setup
  • tool,openroad,task,screenshot,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,screenshot,var,showexit
  • tool,openroad,task,screenshot,var,showfiletype
  • tool,openroad,task,screenshot,var,showfilepath
  • tool,openroad,task,screenshot,var,show_vertical_resolution
  • tool,openroad,task,screenshot,var,include_report_images

[...,script]

[file]

sc_open.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enablehier]

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,int) (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,show_vertical_resolution]

int 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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.20. show#

Show a design in openroad

File: show.py

3.18.20.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]#
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.

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_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_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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

ShowTask.unset_debuglevel()[source]#

3.18.20.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.20.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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,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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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.18.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]
  • 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_define_path_groups
  • tool,openroad,task,show,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,show,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,show,var,enablehier
  • tool,openroad,task,show,var,ord_enable_images
  • tool,openroad,task,show,var,ord_heatmap_bins
  • tool,openroad,task,show,var,load_grt_setup
  • tool,openroad,task,show,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,show,var,showexit
  • tool,openroad,task,show,var,showfiletype
  • tool,openroad,task,show,var,showfilepath

[...,script]

[file]

sc_open.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enablehier]

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,int) (16, 16)

[...,var,power_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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=24Q3-2011

[...,vswitch]

[str] -version

3.18.21. write_data#

Write output files

File: write_data.py

3.18.21.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]#
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_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_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.18.21.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.21.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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,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

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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, 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

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

  • 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]
  • tool,openroad,task,write_data,var,psm_enable
  • 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_define_path_groups
  • tool,openroad,task,write_data,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,write_data,var,opensta_generic_sdc
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,write_data,var,enablehier
  • tool,openroad,task,write_data,var,ord_enable_images
  • tool,openroad,task,write_data,var,ord_heatmap_bins
  • tool,openroad,task,write_data,var,load_grt_setup
  • tool,openroad,task,write_data,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,write_data,var,power_corner
  • tool,openroad,task,write_data,var,pex_corners
  • tool,openroad,task,write_data,var,use_spef
  • tool,openroad,task,write_data,var,ord_abstract_lef_bloat_layers
  • tool,openroad,task,write_data,var,ord_abstract_lef_bloat_factor
  • tool,openroad,task,write_data,var,write_cdl
  • tool,openroad,task,write_data,var,write_spef
  • tool,openroad,task,write_data,var,write_liberty
  • tool,openroad,task,write_data,var,write_sdf

[...,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 2

[...,var,enablehier]

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 10

[...,var,ord_abstract_lef_bloat_layers]

bool True

[...,var,ord_enable_images]

bool True

[...,var,ord_heatmap_bins]

(int,int) (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
  • 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
  • setup
  • snapshot
  • unconstrained

[...,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 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.18.22. 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.18.22.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]#
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_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_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.18.22.2. Data root#

Root

Specifications

openroad-ref

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/openroad

siliconcompiler

  • Path: python://siliconcompiler

3.18.22.3. Variables#

Parameters

Type

Help

[...,var,debug_level]

{(str,str,int)}

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

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,heatmap_grid]

(float,float)

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,int)

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, 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, setup, snapshot, unconstrained

[...,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, 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, setup, snapshot, unconstrained

[...,var,source_disconnection_rate]

float

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

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.18.22.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]
  • 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_define_path_groups
  • tool,openroad,task,irdrop_analysis,var,sta_unique_path_groups_per_clock
  • tool,openroad,task,irdrop_analysis,var,opensta_generic_sdc
  • tool,openroad,task,irdrop_analysis,var,psm_enable
  • library,freepdk45,fileset,views.lef,file,lef
  • tool,openroad,task,irdrop_analysis,var,enablehier
  • tool,openroad,task,irdrop_analysis,var,ord_enable_images
  • tool,openroad,task,irdrop_analysis,var,ord_heatmap_bins
  • tool,openroad,task,irdrop_analysis,var,load_grt_setup
  • tool,openroad,task,irdrop_analysis,var,load_sdcs
  • constraint,timing,scenario,typical,pexcorner
  • constraint,timing,scenario,typical,libcorner
  • constraint,timing,scenario,typical,check
  • tool,openroad,task,irdrop_analysis,var,source_disconnection_rate
  • tool,openroad,task,irdrop_analysis,var,source_disconnection_seed
  • tool,openroad,task,irdrop_analysis,var,heatmap_grid

[...,script]

[file]

apr/sc_irdrop.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enablehier]

bool False

[...,var,heatmap_grid]

(float,float) (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,int) (16, 16)

[...,var,power_corner]

str typical

[...,var,psm_enable]

bool True

[...,var,source_disconnection_rate]

float 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 10

[...,var,sta_unique_path_groups_per_clock]

bool False

[...,version]

[str] >=v2.0-26866

[...,vswitch]

[str] -version

3.19. opensta#

OpenSTA is a gate level static timing verifier.

Documentation: The-OpenROAD-Project/OpenSTA

Sources: The-OpenROAD-Project/OpenSTA

Installation: The-OpenROAD-Project/OpenSTA (also installed with OpenROAD)

File: __init__.py

3.19.1. timing#

Generate static timing reports for an ASIC target device.

File: timing.py

3.19.1.1. Methods#

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.19.1.2. Data root#

Root

Specifications

refdir-root

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/opensta

siliconcompiler

  • Path: python://siliconcompiler

3.19.1.3. Variables#

Parameters

Type

Help

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,timing_mode]

str

timing mode to use

[...,var,top_n_paths]

int

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.19.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,top_n_paths
  • tool,opensta,task,timing,var,unique_path_groups_per_clock
  • tool,opensta,task,timing,var,opensta_generic_sdc
  • tool,opensta,task,timing,var,write_sdf
  • tool,opensta,task,timing,var,write_liberty

[...,script]

[file]

sc_timing.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,top_n_paths]

int 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.19.2. fpga_timing#

Generate static timing reports for an FPGA target device.

File: timing.py

3.19.2.1. Methods#

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

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

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

FPGATimingTask.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.19.2.2. Data root#

Root

Specifications

refdir-root

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/opensta

siliconcompiler

  • Path: python://siliconcompiler

3.19.2.3. Variables#

Parameters

Type

Help

[...,var,opensta_generic_sdc]

file

generic opensta SDC file

[...,var,timing_mode]

str

timing mode to use

[...,var,top_n_paths]

int

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.19.2.4. Configuration#

Keypath

Type

Value

[...,exe]

str sta

[...,format]

enum tcl

[...,input]

[file]
  • top.sdc

  • top.typical.sdf

[...,refdir]

[dir]

scripts, refdir-root

[...,regex,errors]

[str] ^\[ERROR|^Error

[...,regex,warnings]

[str] ^\[WARNING|^Warning

[...,require]

[str]
  • tool,opensta,task,fpga_timing,var,top_n_paths
  • tool,opensta,task,fpga_timing,var,unique_path_groups_per_clock
  • tool,opensta,task,fpga_timing,var,opensta_generic_sdc
  • tool,opensta,task,fpga_timing,var,write_sdf
  • tool,opensta,task,fpga_timing,var,write_liberty

[...,script]

[file]

sc_timing.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,opensta_generic_sdc]

file

tools/_common/sdc/sc_constraints.sdc, siliconcompiler

[...,var,top_n_paths]

int 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. slang#

slang is a software library that provides various components for lexing, parsing, type checking, and elaborating SystemVerilog code. It comes with an executable tool that can compile and lint any SystemVerilog project, but it is also intended to be usable as a front end for synthesis tools, simulators, linters, code editors, and refactoring tools.

Documentation: https://sv-lang.com/

Sources: MikePopoloski/slang

Installation: https://sv-lang.com/building.html

File: __init__.py

3.20.1. elaborate#

Elaborate verilog design files and generate a unified file.

File: elaborate.py

3.20.1.1. Methods#

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

Enables or disables adding source file path information to the output.

Parameters:
  • enable (bool) – True to include source paths, False to exclude.

  • 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. Variables#

Parameters

Type

Help

[...,var,include_source_paths]

bool

true/false, if true add the source file path information

3.20.1.3. Configuration#

Keypath

Type

Value

[...,output]

[file]

top.v

[...,require]

[str]
  • option,design
  • option,fileset
  • tool,slang,task,elaborate,var,include_source_paths

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,include_source_paths]

bool True

3.20.2. lint#

Lint system verilog

File: lint.py

3.20.2.1. Configuration#

Keypath

Type

Value

[...,require]

[str]
  • option,design
  • option,fileset

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

3.21. surelog#

Surelog is a SystemVerilog pre-processor, parser, elaborator, and UHDM compiler that provides IEEE design and testbench C/C++ VPI and a Python AST API.

Documentation: chipsalliance/Surelog

Sources: chipsalliance/Surelog

Installation: chipsalliance/Surelog

File: __init__.py

3.21.1. elaborate#

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: parse.py

3.21.1.1. Methods#

ElaborateTask.set_surelog_disableinfo(disable: bool, step: str | None = None, index: str | None = None)[source]#

Disables or enables logging info messages.

Parameters:
  • disable (bool) – Whether to disable logging info messages.

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

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

ElaborateTask.set_surelog_disablenote(disable: bool, step: str | None = None, index: str | None = None)[source]#

Disables or enables logging note messages.

Parameters:
  • disable (bool) – Whether to disable logging note messages.

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

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

ElaborateTask.set_surelog_disablewritecache(disable: bool, step: str | None = None, index: str | None = None)[source]#

Disables or enables writing to the cache.

Parameters:
  • disable (bool) – Whether to disable writing to the cache.

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

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

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

Enables or disables low memory mode.

Parameters:
  • enable (bool) – Whether to enable low memory mode.

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

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

3.21.1.2. Variables#

Parameters

Type

Help

[...,var,disable_info]

bool

true/false, when true instructs Surelog to not log infos.

[...,var,disable_note]

bool

true/false, when true instructs Surelog to not log notes.

[...,var,disable_write_cache]

bool

true/false, when true instructs Surelog to not write to its cache.

[...,var,enable_lowmem]

bool

true/false, when true instructs Surelog to minimize its maximum memory usage.

3.21.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str surelog

[...,output]

[file]

top.v

[...,regex,errors]

[str] ^\[(ERR|FTL|SNT):

[...,regex,warnings]

[str] ^\[WRN:

[...,require]

[str]
  • tool,surelog,task,elaborate,var,enable_lowmem
  • tool,surelog,task,elaborate,var,disable_write_cache
  • tool,surelog,task,elaborate,var,disable_info
  • tool,surelog,task,elaborate,var,disable_note
  • option,design
  • option,fileset

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,disable_info]

bool False

[...,var,disable_note]

bool False

[...,var,disable_write_cache]

bool False

[...,var,enable_lowmem]

bool False

[...,version]

[str] >=1.51

[...,vswitch]

[str] --version

3.22. surfer#

Surfer is a waveform viewer with a focus on a snappy usable interface and extensibility.

Documentation: surfer-project/surfer/-/wikis/home

Sources: surfer-project/surfer

Installation: surfer-project/surfer#installation

File: __init__.py

3.22.1. show#

A specialized OpenTask for tasks that display files in a viewer.

ShowTask is intended for read-only visualization: the backend (e.g. a GUI layout viewer) renders the file and the user inspects it. Use this when the goal is to look at a file rather than to drive an interactive tool session; for the latter, use OpenTask directly. For headless image generation, use the ScreenshotTask subclass.

Subclasses should implement get_supported_task_extentions to declare which file extensions they can render.

File: show.py

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

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

3.22.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.22.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str surfer

[...,require]

[str]
  • tool,surfer,task,show,var,showexit
  • tool,surfer,task,show,var,showfiletype
  • tool,surfer,task,show,var,showfilepath

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,showexit]

bool False

[...,var,showfiletype]

str fst

[...,version]

[str] >=0.3.0

[...,vswitch]

[str] --version

3.23. sv2v#

sv2v converts SystemVerilog (IEEE 1800-2017) to Verilog (IEEE 1364-2005), with an emphasis on supporting synthesizable language constructs. The primary goal of this project is to create a completely free and open-source tool for converting SystemVerilog to Verilog. While methods for performing this conversion already exist, they generally either rely on commercial tools, or are limited in scope.

Documentation: zachjs/sv2v

Sources: zachjs/sv2v

Installation: zachjs/sv2v

File: __init__.py

3.23.1. convert#

Convert SystemVerilog to verilog

File: convert.py

3.23.1.1. Configuration#

Keypath

Type

Value

[...,exe]

str sv2v

[...,input]

[file]

top.sv

[...,output]

[file]

top.v

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,version]

[str] >=0.0.9

[...,vswitch]

[str] --numeric-version

3.24. verilator#

Verilator is a free and open-source software tool which converts Verilog (a hardware description language) to a cycle-accurate behavioral model in C++ or SystemC.

For all tasks, this driver runs Verilator using the -sv switch to enable parsing a subset of SystemVerilog features.

Documentation: https://verilator.org/guide/latest

Sources: verilator/verilator

Installation: https://verilator.org/guide/latest/install.html

File: __init__.py

3.24.1. compile#

Compiles Verilog and C/C++ sources into an executable. In addition to the standard RTL inputs, this task reads C/C++ sources. Outputs an executable in outputs/<design>.vexe.

File: compile.py

3.24.1.1. Methods#

CompileTask.add_verilator_cflags(flag: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds flags for the C++ compiler.

Parameters:
  • flag (Union[str, List[str]]) – The flag(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.

CompileTask.add_verilator_cincludes(include: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds include directories for the C++ compiler.

Parameters:
  • include (Union[str, List[str]]) – The include directory/directories 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.

CompileTask.add_verilator_ldflags(flag: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds flags for the linker.

Parameters:
  • flag (Union[str, List[str]]) – The flag(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.

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

Enables or disables random initialization of registers.

Parameters:
  • enable (bool) – Whether to enable random initialization.

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

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

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

Sets the compilation mode for Verilator.

Parameters:
  • mode (str) – The compilation mode.

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

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

CompileTask.set_verilator_pinsbv(width: int, step: str | None = None, index: str | None = None)[source]#

Sets the datatype width for SystemC inputs/outputs.

Parameters:
  • width (int) – The bit width.

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

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

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

Enables or disables trace generation.

Parameters:
  • enable (bool) – Whether to enable trace generation.

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

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

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

Sets the type of wave file to create when trace is enabled.

Parameters:
  • trace_type (str) – The trace type.

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

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

3.24.1.2. Variables#

Parameters

Type

Help

[...,var,cflags]

[str]

flags to provide to the C++ compiler invoked by Verilator

[...,var,cincludes]

[dir]

include directories to provide to the C++ compiler invoked by Verilator

[...,var,config]

[file]

Verilator configuration file

[...,var,enable_assert]

bool

true/false, when true assertions are enabled in Verilator.

[...,var,initialize_random]

bool

true/false, when true registers will reset with a random value

[...,var,ldflags]

[str]

flags to provide to the linker invoked by Verilator

[...,var,mode]

enum

defines compilation mode for Verilator. Allowed values: cc, systemc

[...,var,pins_bv]

int

controls datatypes used to represent SystemC inputs/outputs. See –pins-bv in Verilator docs for more info

[...,var,trace]

bool

if true, enables trace generation

[...,var,trace_type]

enum

specifies type of wave file to create when [trace] is set. Allowed values: fst, vcd

3.24.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str verilator

[...,output]

[file]

top.vexe

[...,regex,errors]

[str] ^\%Error

[...,regex,warnings]

[str] ^\%Warning

[...,require]

[str]
  • tool,verilator,task,compile,var,enable_assert
  • option,design
  • option,fileset
  • tool,verilator,task,compile,var,mode
  • tool,verilator,task,compile,var,trace
  • tool,verilator,task,compile,var,trace_type
  • tool,verilator,task,compile,var,initialize_random
  • library,<design>,fileset,docs,file,c

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enable_assert]

bool False

[...,var,initialize_random]

bool False

[...,var,mode]

enum cc

[...,var,trace]

bool False

[...,var,trace_type]

enum vcd

[...,version]

[str] >=4.034

[...,vswitch]

[str] --version

3.24.2. lint#

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: lint.py

3.24.2.1. Variables#

Parameters

Type

Help

[...,var,config]

[file]

Verilator configuration file

[...,var,enable_assert]

bool

true/false, when true assertions are enabled in Verilator.

3.24.2.2. Configuration#

Keypath

Type

Value

[...,exe]

str verilator

[...,regex,errors]

[str] ^\%Error

[...,regex,warnings]

[str] ^\%Warning

[...,require]

[str]
  • tool,verilator,task,lint,var,enable_assert
  • option,design
  • option,fileset

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,enable_assert]

bool False

[...,version]

[str] >=4.034

[...,vswitch]

[str] --version

3.25. vivado#

Vivado is an FPGA programming tool suite from Xilinx used to program Xilinx devices.

Documentation: https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vivado.html

File: __init__.py

3.25.1. bitstream#

Generates bitstream of implemented design.

File: bitstream.py

3.25.1.1. Data root#

Root

Specifications

vivado

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/vivado

3.25.1.2. Configuration#

Keypath

Type

Value

[...,exe]

str vivado

[...,format]

enum tcl

[...,input]

[file]

top.dcp

[...,option]

[str]
  • -nolog
  • -nojournal
  • -mode
  • batch
  • -source

[...,output]

[file]
  • top.vg

  • top.dcp

  • top.xdc

  • top.bit

[...,refdir]

[dir]

scripts, vivado

[...,regex,errors]

[str] ^ERROR:

[...,regex,warnings]

[str] ^(CRITICAL )?WARNING:

[...,script]

[file]

sc_run.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,version]

[str] >=2021

[...,vswitch]

[str] -version

3.25.2. place#

Performs placement.

File: place.py

3.25.2.1. Data root#

Root

Specifications

vivado

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/vivado

3.25.2.2. Configuration#

Keypath

Type

Value

[...,exe]

str vivado

[...,format]

enum tcl

[...,input]

[file]

top.dcp

[...,option]

[str]
  • -nolog
  • -nojournal
  • -mode
  • batch
  • -source

[...,output]

[file]
  • top.vg

  • top.dcp

  • top.xdc

[...,refdir]

[dir]

scripts, vivado

[...,regex,errors]

[str] ^ERROR:

[...,regex,warnings]

[str] ^(CRITICAL )?WARNING:

[...,script]

[file]

sc_run.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,version]

[str] >=2021

[...,vswitch]

[str] -version

3.25.3. route#

Performs routing.

File: route.py

3.25.3.1. Data root#

Root

Specifications

vivado

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/vivado

3.25.3.2. Configuration#

Keypath

Type

Value

[...,exe]

str vivado

[...,format]

enum tcl

[...,input]

[file]

top.dcp

[...,option]

[str]
  • -nolog
  • -nojournal
  • -mode
  • batch
  • -source

[...,output]

[file]
  • top.vg

  • top.dcp

  • top.xdc

[...,refdir]

[dir]

scripts, vivado

[...,regex,errors]

[str] ^ERROR:

[...,regex,warnings]

[str] ^(CRITICAL )?WARNING:

[...,script]

[file]

sc_run.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,version]

[str] >=2021

[...,vswitch]

[str] -version

3.25.4. syn_fpga#

Performs FPGA synthesis.

File: syn_fpga.py

3.25.4.1. Methods#

SynthesisTask.set_vivado_synthdirective(directive: str, step: str | None = None, index: str | None = None)[source]#

Sets the synthesis directive.

Parameters:
  • directive (str) – The synthesis directive.

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

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

SynthesisTask.set_vivado_synthmode(mode: str, step: str | None = None, index: str | None = None)[source]#

Sets the synthesis mode.

Parameters:
  • mode (str) – The synthesis mode.

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

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

3.25.4.2. Data root#

Root

Specifications

vivado

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/vivado

3.25.4.3. Variables#

Parameters

Type

Help

[...,var,synth_directive]

str

synthesis directive

[...,var,synth_mode]

str

synthesis mode

3.25.4.4. Configuration#

Keypath

Type

Value

[...,exe]

str vivado

[...,format]

enum tcl

[...,input]

[file]

top.v

[...,option]

[str]
  • -nolog
  • -nojournal
  • -mode
  • batch
  • -source

[...,output]

[file]
  • top.vg

  • top.dcp

  • top.xdc

[...,refdir]

[dir]

scripts, vivado

[...,regex,errors]

[str] ^ERROR:

[...,regex,warnings]

[str] ^(CRITICAL )?WARNING:

[...,require]

[str]
  • tool,vivado,task,syn_fpga,var,synth_directive
  • tool,vivado,task,syn_fpga,var,synth_mode

[...,script]

[file]

sc_run.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,synth_directive]

str Default

[...,var,synth_mode]

str none

[...,version]

[str] >=2021

[...,vswitch]

[str] -version

3.26. vpr#

VPR (Versatile Place and Route) is an open source CAD tool designed for the exploration of new FPGA architectures and CAD algorithms, at the packing, placement and routing phases of the CAD flow. VPR takes, as input, a description of an FPGA architecture along with a technology-mapped user circuit. It then performs packing, placement, and routing to map the circuit onto the FPGA. The output of VPR includes the FPGA configuration needed to implement the circuit and statistics about the final mapped design (eg. critical path delay, area, etc).

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

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

Installation: verilog-to-routing/vtr-verilog-to-routing

File: __init__.py

3.26.1. place#

Perform automated place with VPR

File: place.py

3.26.1.1. Methods#

PlaceTask.auto_constraints_file()[source]#

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

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.26.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str vpr

[...,input]

[file]

top.blif

[...,output]

[file]
  • top.blif

  • top.net

  • top.place

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] ^Warning

[...,require]

[str]
  • tool,vpr,task,place,var,enable_images
  • tool,vpr,task,place,var,timing_paths
  • tool,vpr,task,place,var,timing_report_type
  • tool,vpr,task,place,var,enable_timing_analysis
  • library,z1000,tool,vpr,devicecode
  • library,z1000,tool,vpr,clock_model
  • library,z1000,tool,vpr,archfile
  • library,z1000,tool,vpr,graphfile
  • library,z1000,tool,vpr,channelwidth
  • library,z1000,tool,vpr,router_lookahead

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enable_images]

bool True

[...,var,enable_timing_analysis]

bool False

[...,var,timing_paths]

int 20

[...,var,timing_report_type]

enum aggregated

[...,version]

[str] >=v8.0.0-15021

[...,vswitch]

[str] --version

3.26.2. route#

Perform automated route with VPR

File: route.py

3.26.2.1. Methods#

RouteTask.auto_constraints_file()[source]#
RouteTask.set_vpr_genpostimplementationnetlist(enable: bool, step: str | None = None, index: str | None = None)[source]#

Enables or disables generating a post-implementation netlist.

Parameters:
  • enable (bool) – Whether to generate the netlist.

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

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

RouteTask.set_vpr_maxrouteriterations(iterations: int, step: str | None = None, index: str | None = None)[source]#

Sets the maximum number of routing iterations.

Parameters:
  • iterations (int) – The maximum 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.

RouteTask.set_vpr_timingcorner(corner: str, step: str | None = None, index: str | None = None)[source]#

Sets the timing corner for files generated by the post-implementation netlist.

Parameters:
  • corner (str) – The timing corner.

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

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

3.26.2.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,gen_post_implementation_netlist]

bool

set to true to have VPR generate a post-implementation netlist

[...,var,max_router_iterations]

int

set maximum number of routing iterations

[...,var,router_lookahead]

enum

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

[...,var,timing_corner]

str

set the timing corner for files generated by the post-implementation netlist

[...,var,timing_paths]

int

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.26.2.3. Configuration#

Keypath

Type

Value

[...,exe]

str vpr

[...,input]

[file]
  • top.blif

  • top.net

  • top.place

[...,output]

[file]
  • top.route

  • top.blif

  • top.net

  • top.place

  • top.vg

  • top.sdc

  • top.typical.sdf

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] ^Warning

[...,require]

[str]
  • tool,vpr,task,route,var,enable_images
  • tool,vpr,task,route,var,timing_paths
  • tool,vpr,task,route,var,timing_report_type
  • tool,vpr,task,route,var,enable_timing_analysis
  • library,z1000,tool,vpr,devicecode
  • library,z1000,tool,vpr,clock_model
  • library,z1000,tool,vpr,archfile
  • library,z1000,tool,vpr,graphfile
  • library,z1000,tool,vpr,channelwidth
  • library,z1000,tool,vpr,router_lookahead
  • tool,vpr,task,route,var,max_router_iterations
  • tool,vpr,task,route,var,gen_post_implementation_netlist
  • tool,vpr,task,route,var,timing_corner

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enable_images]

bool True

[...,var,enable_timing_analysis]

bool False

[...,var,gen_post_implementation_netlist]

bool False

[...,var,max_router_iterations]

int 50

[...,var,timing_corner]

str typical

[...,var,timing_paths]

int 20

[...,var,timing_report_type]

enum aggregated

[...,version]

[str] >=v8.0.0-15021

[...,vswitch]

[str] --version

3.26.3. screenshot#

Screenshot placed and/or routed designs

File: screenshot.py

3.26.3.1. Methods#

ScreenshotTask.auto_constraints_file()[source]#
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.

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

3.26.3.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,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,timing_paths]

int

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.26.3.3. Configuration#

Keypath

Type

Value

[...,exe]

str vpr

[...,output]

[file]

top.png

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] ^Warning

[...,require]

[str]
  • tool,vpr,task,screenshot,var,enable_images
  • tool,vpr,task,screenshot,var,timing_paths
  • tool,vpr,task,screenshot,var,timing_report_type
  • tool,vpr,task,screenshot,var,enable_timing_analysis
  • library,z1000,tool,vpr,devicecode
  • library,z1000,tool,vpr,clock_model
  • library,z1000,tool,vpr,archfile
  • library,z1000,tool,vpr,graphfile
  • library,z1000,tool,vpr,channelwidth
  • library,z1000,tool,vpr,router_lookahead
  • tool,vpr,task,screenshot,var,showexit
  • tool,vpr,task,screenshot,var,showfiletype

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enable_images]

bool True

[...,var,enable_timing_analysis]

bool False

[...,var,showexit]

bool True

[...,var,showfiletype]

str route

[...,var,timing_paths]

int 20

[...,var,timing_report_type]

enum aggregated

[...,version]

[str] >=v8.0.0-15021

[...,vswitch]

[str] --version

3.26.4. show#

Show placed and/or routed designs in VPR GUI

File: show.py

3.26.4.1. Methods#

ShowTask.auto_constraints_file()[source]#
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.

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: int | str | None = None)[source]#

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

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

Sets the path to the file to be displayed.

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

Sets the type of the file to be displayed.

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

Sets the source node information for the file being displayed.

3.26.4.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,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,timing_paths]

int

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.26.4.3. Configuration#

Keypath

Type

Value

[...,exe]

str vpr

[...,regex,errors]

[str] ^Error

[...,regex,warnings]

[str] ^Warning

[...,require]

[str]
  • tool,vpr,task,show,var,enable_images
  • tool,vpr,task,show,var,timing_paths
  • tool,vpr,task,show,var,timing_report_type
  • tool,vpr,task,show,var,enable_timing_analysis
  • library,z1000,tool,vpr,devicecode
  • library,z1000,tool,vpr,clock_model
  • library,z1000,tool,vpr,archfile
  • library,z1000,tool,vpr,graphfile
  • library,z1000,tool,vpr,channelwidth
  • library,z1000,tool,vpr,router_lookahead
  • tool,vpr,task,show,var,showexit
  • tool,vpr,task,show,var,showfiletype

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 2

[...,var,enable_images]

bool True

[...,var,enable_timing_analysis]

bool False

[...,var,showexit]

bool False

[...,var,showfiletype]

str route

[...,var,timing_paths]

int 20

[...,var,timing_report_type]

enum aggregated

[...,version]

[str] >=v8.0.0-15021

[...,vswitch]

[str] --version

3.27. xdm#

Xyce XDM netlist converter, used to convert PSPICE and HSPICE netists into Xyce format.

Sources: Xyce/XDM

Installation: Xyce/XDM

Status: SC integration WIP

File: __init__.py

3.27.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.27.1.1. Methods#

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

Enables or disables renaming the output file.

Parameters:
  • enable (bool) – Whether to rename the output file.

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

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

3.27.1.2. Variables#

Parameters

Type

Help

[...,var,rename]

bool

true/false: indicate whether to rename the output file to match the naming scheme for siliconcompiler

3.27.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str xdm_bdl

[...,require]

[str] tool,xdm,task,convert,var,rename

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,rename]

bool True

[...,version]

[str] >=v2.7.0

[...,vswitch]

[str] -h

3.28. xyce#

Xyce is a high performance SPICE-compatible circuit simulator capable capable of solving extremely large circuit problems by supporting large-scale parallel computing platforms. It also supports serial execution on all common desktop platforms, and small-scale parallel runs on Unix-like systems.

Documentation: https://xyce.sandia.gov/documentation-tutorials/

Sources: https://xyce.sandia.gov/downloads/source-code/

Installation: https://xyce.sandia.gov/documentation-tutorials/building-guide/

Status: SC integration WIP

File: __init__.py

3.28.1. simulate#

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: simulate.py

3.28.1.1. Methods#

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

Enables or disables dumping all signals.

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.

SimulateTask.set_xyce_traceformat(trace_format: str, step: str | None = None, index: int | str | None = None)[source]#

Sets the format to use for traces.

Parameters:
  • trace_format (str) – The format to use for traces.

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

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

3.28.1.2. Variables#

Parameters

Type

Help

[...,var,trace]

bool

true/false, enable dumping all signals

[...,var,trace_format]

enum

Format to use for traces. Allowed values: ASCII, binary

3.28.1.3. Configuration#

Keypath

Type

Value

[...,exe]

str Xyce

[...,regex,errors]

[str] error

[...,regex,warnings]

[str] warning

[...,require]

[str]
  • tool,xyce,task,simulate,var,trace
  • tool,xyce,task,simulate,var,trace_format

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,threads]

int 1

[...,var,trace]

bool False

[...,var,trace_format]

enum ASCII

[...,version]

[str] >=v7.8

[...,vswitch]

[str] -v

3.29. yosys#

Yosys is a framework for RTL synthesis that takes synthesizable Verilog-2005 design and converts it to BLIF, EDIF, BTOR, SMT, Verilog netlist etc. The tool supports logical synthesis and tech mapping to ASIC standard cell libraries, FPGA architectures. In addition it has built in formal methods for property and equivalence checking.

Documentation: https://yosyshq.readthedocs.io/projects/yosys/en/latest/

Sources: YosysHQ/yosys

Installation: YosysHQ/yosys

File: __init__.py

3.29.1. lec_asic#

Perform logical equivalence checks

File: lec_asic.py

3.29.1.1. Methods#

ASICLECTask.add_synthesis_corner(corner, step=None, index=None, clobber=True)[source]#

Deprecated

ASICLECTask.add_yosys_synthesiscorner(corner: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a timing corner to use for synthesis.

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

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

ASICLECTask.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
ASICLECTask.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.

ASICLECTask.set_yosys_inductionsteps(steps: int, step: str | None = None, index: str | None = None)[source]#

Sets the number of induction steps for yosys equivalence checking.

Parameters:
  • steps (int) – The number of steps.

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

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

3.29.1.2. Data root#

Root

Specifications

siliconcompiler-yosys

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/yosys

3.29.1.3. Variables#

Parameters

Type

Help

[...,var,induction_steps]

int

Number of induction steps for yosys equivalence checking

[...,var,synthesis_corner]

{str}

Timing corners to use for synthesis

[...,var,synthesis_libraries]

[file]

generated liberty files for use with synthesis for standard cell libraries

3.29.1.4. Configuration#

Keypath

Type

Value

[...,exe]

str yosys

[...,format]

enum tcl

[...,input]

[file]
  • top.vg

  • top.v

[...,option]

[str] -c

[...,refdir]

[dir]

scripts, siliconcompiler-yosys

[...,regex,errors]

[str] ^ERROR

[...,regex,warnings]

[str] Warning:

[...,require]

[str]
  • tool,yosys,task,lec_asic,var,synthesis_corner
  • asic,delaymodel
  • asic,asiclib
  • tool,yosys,task,lec_asic,var,induction_steps

[...,script]

[file]

sc_lec.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,induction_steps]

int 10

[...,var,synthesis_corner]

{str}
  • generic
  • typical

[...,version]

[str] >=0.48

[...,vswitch]

[str] --version

3.29.2. syn_asic#

Perform ASIC synthesis

File: syn_asic.py

3.29.2.1. Methods#

ASICSynthesis.add_synthesis_corner(corner, step=None, index=None, clobber=True)[source]#

Deprecated

ASICSynthesis.add_yosys_blackboxmodules(modules: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds modules to exclude from synthesis by replacing them with empty blackboxes.

Parameters:
  • modules (Union[str, List[str]]) – The module name(s) to blackbox.

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

ASICSynthesis.add_yosys_preservemodules(modules: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds modules to prevent flattening.

Parameters:
  • modules (Union[str, List[str]]) – The module name(s) to preserve.

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

ASICSynthesis.add_yosys_synthesiscorner(corner: str, step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds a timing corner to use for synthesis.

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

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

ASICSynthesis.add_yosys_synthextramap(map: str | List[str], step: str | None = None, index: str | None = None, clobber: bool = False)[source]#

Adds files used in synthesis to perform additional techmapping.

Parameters:
  • map (Union[str, List[str]]) – The map 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.

ASICSynthesis.get_clock(clock_units_multiplier: float = 1.0) Tuple[str, float][source]#
ASICSynthesis.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.

ASICSynthesis.set_yosys_abcclockderating(derating: float, step: str | None = None, index: str | None = None)[source]#

Sets the derating to apply to the clock period for ABC synthesis.

Parameters:
  • derating (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.

ASICSynthesis.set_yosys_abcclockperiod(period: float, step: str | None = None, index: str | None = None)[source]#

Sets the clock period to use for synthesis.

Parameters:
  • period (float) – The clock period in ps.

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

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

ASICSynthesis.set_yosys_abcconstraintdriver(driver: str, step: str | None = None, index: str | None = None)[source]#

Sets the buffer that drives the ABC techmapping.

Parameters:
  • driver (str) – The driver cell name.

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

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

ASICSynthesis.set_yosys_abcconstraintload(load: float, step: str | None = None, index: str | None = None)[source]#

Sets the capacitive load for the ABC techmapping.

Parameters:
  • load (float) – The load in fF.

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

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

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

Enables or disables adding buffers.

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.

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

Enables or disables adding tie high and tie low cells.

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.

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

Enables or disables attempting to determine how to flatten the design.

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.

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

Enables or disables renaming wires based on registers.

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.

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

Enables or disables invoking synth with the -flatten option.

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.

ASICSynthesis.set_yosys_hierarchyseparator(separator: str, step: str | None = None, index: str | None = None)[source]#

Sets the hierarchy separator used during design flattening.

Parameters:
  • separator (str) – The separator character.

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

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

ASICSynthesis.set_yosys_hierthreshold(threshold: int, step: str | None = None, index: str | None = None)[source]#

Sets the instance limit for the number of cells in a module to preserve.

Parameters:
  • threshold (int) – The instance limit.

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

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

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

Enables or disables attempting to lock the design with moosic.

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.

ASICSynthesis.set_yosys_lockdesignkey(key: str, step: str | None = None, index: str | None = None)[source]#

Sets the lock locking key.

Parameters:
  • key (str) – The key.

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

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

ASICSynthesis.set_yosys_lockdesignport(port: str, step: str | None = None, index: str | None = None)[source]#

Sets the lock locking port name.

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

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

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

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

Enables or disables techmapping adders in Yosys.

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.

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

Enables or disables mapping clockgates during synthesis.

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.

ASICSynthesis.set_yosys_memorylibmap(file: str, step: str | None = None, index: str | None = None)[source]#

Sets the file used to map memories with Yosys.

Parameters:
  • file (str) – The path to the library map file.

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

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

ASICSynthesis.set_yosys_memorytechmap(file: str, step: str | None = None, index: str | None = None)[source]#

Sets the file used to techmap memories with Yosys.

Parameters:
  • file (str) – The path to the technology map file.

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

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

ASICSynthesis.set_yosys_minclockgatefanout(fanout: int, step: str | None = None, index: str | None = None)[source]#

Sets the minimum clockgate fanout.

Parameters:
  • fanout (int) – The minimum fanout.

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

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

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

Enables or disables marking undriven nets during 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.

ASICSynthesis.set_yosys_strategy(strategy: str, step: str | None = None, index: str | None = None)[source]#

Sets the ABC synthesis strategy.

Parameters:
  • strategy (str) – The strategy name (e.g., ‘DELAY1’, ‘AREA2’).

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

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

ASICSynthesis.set_yosys_tieundefined(tie: str, step: str | None = None, index: str | None = None)[source]#

Sets how to handle undefined signals in the netlist.

Parameters:
  • tie (str) – The tie strategy (‘high’, ‘low’, ‘none’).

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

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

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

Enables or disables using the slang frontend.

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.

3.29.2.2. Data root#

Root

Specifications

siliconcompiler-yosys

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/yosys

yosys-techmaps

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/yosys

3.29.2.3. Variables#

Parameters

Type

Help

[...,var,abc_clock_derating]

float

Derating to apply to the clock period for abc synthesis

[...,var,abc_clock_period]

float

Clock period to use for synthesis in ps, if more than one clock is specified, the smallest period is used.

[...,var,abc_constraint_driver]

str

Buffer that drives the abc techmapping, defaults to first buffer specified

[...,var,abc_constraint_file]

file

File used to pass in constraints to abc

[...,var,abc_constraint_load]

float

Capacitive load for the abc techmapping in fF, if not specified it will not be used.

[...,var,add_buffers]

bool

true/false, flag to indicate whether to add buffers or not.

[...,var,add_tieoffs]

bool

true/false, flag to indicate add tie high and tie low cells.

[...,var,auto_flatten]

bool

true/false, attempt to determine how to flatten the design

[...,var,autoname]

bool

true/false, call autoname to rename wires based on registers

[...,var,blackbox_modules]

[str]

List of modules in input files to exclude from synthesis by replacing them with empty blackboxes

[...,var,flatten]

bool

true/false, invoke synth with the -flatten option

[...,var,hier_threshold]

int

Instance limit for the number of cells in a module to preserve.

[...,var,hierarchy_separator]

str

control the hierarchy separator used during design flattening

[...,var,lock_design]

bool

true/false, if true will attempt to lock the design with moosic

[...,var,lock_design_key]

str

lock locking key

[...,var,lock_design_port]

str

lock locking port name

[...,var,map_adders]

bool

true/false, techmap adders in Yosys

[...,var,map_clockgates]

bool

Map clockgates during synthesis.

[...,var,memory_libmap]

file

File used to map memories with yosys

[...,var,memory_techmap]

file

File used to techmap memories with yosys

[...,var,min_clockgate_fanout]

int

Minimum clockgate fanout.

[...,var,opt_undriven]

bool

true/false, flag to indicate if optimizations should mark undriven nets

[...,var,preserve_modules]

[str]

List of modules in input files to prevent flatten from “flattening”

[...,var,strategy]

enum

ABC synthesis strategy. Allowed values: AREA0, AREA1, AREA2, AREA3, DELAY0, DELAY1, DELAY2, DELAY3, DELAY4

[...,var,synth_extra_map]

[file]

Files used in synthesis to perform additional techmapping

[...,var,synthesis_corner]

{str}

Timing corners to use for synthesis

[...,var,synthesis_libraries]

[file]

generated liberty files for use with synthesis for standard cell libraries

[...,var,tie_undef]

enum

Flag to indicate how to handle undefined signals in netlist. Allowed values: high, low, none

[...,var,use_slang]

bool

true/false, if true will attempt to use the slang frontend

3.29.2.4. Configuration#

Keypath

Type

Value

[...,exe]

str yosys

[...,format]

enum tcl

[...,option]

[str] -c

[...,output]

[file]
  • top.vg

  • top.netlist.json

[...,refdir]

[dir]

scripts, siliconcompiler-yosys

[...,regex,errors]

[str] ^ERROR

[...,regex,warnings]

[str] Warning:

[...,require]

[str]
  • tool,yosys,task,syn_asic,var,synthesis_corner
  • asic,delaymodel
  • asic,asiclib
  • asic,mainlib
  • library,<design>,fileset,docs,file,verilog
  • library,nangate45,tool,yosys,driver_cell
  • tool,yosys,task,syn_asic,var,abc_constraint_driver
  • library,nangate45,tool,yosys,abc_clock_multiplier
  • tool,yosys,task,syn_asic,var,abc_clock_derating
  • library,nangate45,tool,yosys,tristatebuffermap
  • library,nangate45,tool,yosys,techmap
  • tool,yosys,task,syn_asic,var,map_adders
  • tool,yosys,task,syn_asic,var,use_slang
  • tool,yosys,task,syn_asic,var,add_buffers
  • tool,yosys,task,syn_asic,var,tie_undef
  • tool,yosys,task,syn_asic,var,add_tieoffs
  • tool,yosys,task,syn_asic,var,opt_undriven
  • tool,yosys,task,syn_asic,var,flatten
  • tool,yosys,task,syn_asic,var,auto_flatten
  • tool,yosys,task,syn_asic,var,hier_threshold
  • tool,yosys,task,syn_asic,var,hierarchy_separator
  • tool,yosys,task,syn_asic,var,map_clockgates
  • tool,yosys,task,syn_asic,var,min_clockgate_fanout
  • tool,yosys,task,syn_asic,var,lock_design

[...,script]

[file]

sc_synth_asic.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,abc_clock_derating]

float 0

[...,var,abc_constraint_driver]

str BUF_X4

[...,var,add_buffers]

bool True

[...,var,add_tieoffs]

bool True

[...,var,auto_flatten]

bool True

[...,var,autoname]

bool True

[...,var,flatten]

bool True

[...,var,hier_threshold]

int 1000

[...,var,hierarchy_separator]

str /

[...,var,lock_design]

bool False

[...,var,map_adders]

bool False

[...,var,map_clockgates]

bool False

[...,var,min_clockgate_fanout]

int 8

[...,var,opt_undriven]

bool True

[...,var,synthesis_corner]

{str}
  • generic
  • typical

[...,var,tie_undef]

enum low

[...,var,use_slang]

bool False

[...,version]

[str] >=0.48

[...,vswitch]

[str] --version

3.29.3. syn_fpga#

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: syn_fpga.py

3.29.3.1. Methods#

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

Enables or disables buffer insertion during synthesis.

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.

FPGASynthesis.set_yosys_synthoptmode(mode: str, step: str | None = None, index: str | None = None)[source]#

Sets the optimization mode for synthesis.

Parameters:
  • mode (str) – The optimization mode (‘none’, ‘delay’, ‘area’).

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

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

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

Enables or disables using the slang frontend.

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.

3.29.3.2. Data root#

Root

Specifications

siliconcompiler-yosys

  • Path: /home/docs/checkouts/readthedocs.org/user_builds/siliconcompiler/checkouts/latest/siliconcompiler/tools/yosys

3.29.3.3. Variables#

Parameters

Type

Help

[...,var,synth_insert_buffers]

bool

perform buffer insertion

[...,var,synth_opt_mode]

enum

optimization mode: ‘none’ for a balanced optimization, ‘delay’ to prioritize path delay, ‘area’ to prioritize utilization. Allowed values: area, delay, none

[...,var,use_slang]

bool

true/false, if true will attempt to use the slang frontend

3.29.3.4. Configuration#

Keypath

Type

Value

[...,exe]

str yosys

[...,format]

enum tcl

[...,option]

[str] -c

[...,output]

[file]
  • top.vg

  • top.netlist.json

  • top.blif

[...,refdir]

[dir]

scripts, siliconcompiler-yosys

[...,regex,errors]

[str] ^ERROR

[...,regex,warnings]

[str] Warning:

[...,require]

[str]
  • library,<design>,fileset,docs,file,verilog
  • tool,yosys,task,syn_fpga,var,use_slang

[...,script]

[file]

sc_synth_fpga.tcl

[...,stderr,destination]

enum log

[...,stderr,suffix]

str log

[...,stdout,destination]

enum log

[...,stdout,suffix]

str log

[...,var,synth_insert_buffers]

bool True

[...,var,synth_opt_mode]

enum none

[...,var,use_slang]

bool False

[...,version]

[str] >=0.48

[...,vswitch]

[str] --version