1. Schema#

1.1. Parameter Fields#

copy#

Whether to copy files into build directory, applies to files only

example#

List of two strings, the first string containing an example for specifying the parameter using a command line switch, and a second string for setting the value using the core Python API. The examples can be pruned/filtered before the schema is dumped into a JSON file.

hashalgo#

Hashing algorithm used to calculate filehash value.

help#

Complete parameter help doc string. The help string serves as ground truth for describing the parameter functionality and should be used for long help descriptions in command line interface programs and for automated schema document generation. The long help can be pruned/filtered before the schema is dumped into a JSON file.

lock#

Boolean value dictating whether the parameter can be modified by the set/get/add core API methods. A value of True specifiers that the parameter is locked and cannot be modified. Attempts to write to to a locked parameter shall result in an exception/error that blocks compilation progress.

node#

Dictionary containing fields whose values may vary on a per-step/index basis. Sub-fields are described in Per-node Parameter Fields

notes#

User entered ‘notes’/’disclaimers’ about value being set.

pernode#

Enables/disables setting of value on a per node basis. Allowed values are ‘never’, ‘option’, or ‘required’.

require#

Boolean value dictating whether the parameter is required for a run.

scope#

Scope of parameter in schema

switch#

String that specifies the equivalent switch to use in command line interfaces. The switch string must start with a ‘-’ and cannot contain spaces.

shorthelp#

Short help string to be used in cases where brevity matters. Use cases include JSON dictionary dumps and command line interface help functions.

type#

The parameter type. Supported types include Python compatible types (‘int’, ‘float’, ‘str’, and ‘bool’) and two custom file types (‘file’ and ‘dir’). The ‘file’ and ‘dir’ type specify that the parameter is a ‘regular’ file or directory as described by Posix. Enums can be specified using the < and > (eg. <input,output> specifies an enum that has the possible values of input and output.) All types can be specified as a Python compatible list type by enclosing the type value in brackets. (ie. [str] specifies that the parameter is a list of strings). Types can also be specified as tuples, using the Python-like parentheses syntax (eg. [(float,float)] specifies a list of 2-float tuples). Additionally types can also be specified as sets, using the Python-like curly brackets syntax (eg. {str} specifies a set of strings). Input arguments and return values of the set/get/add core methods are encoded as native Python types. When exporting the manifest to JSON, values are converted to the equivalent JSON type. Most types have a straightforward mapping, but note that values of “None” get mapped to “null”, and both tuples and lists get mapped to arrays. Tuple-type parameters have their values normalized back into tuple form when a JSON manifest is read in.

unit#

Implied unit for parameter value.

1.2. Per-node Parameter Fields#

The following fields are specified inside the node dictionary on a per-step/index basis. Default values for each field are stored under the special keys "default", "default", and global values are specified under the special keys "global", "global".

author#

File author. The author string records the person/entity that authored/created each item in the list of files within ‘value’ parameter field. The ‘author’ field can be used to validate the provenance of the data used for compilation.

date#

String containing the data stamp of each item in the list of files within ‘value’ parameter field. The ‘date’ field can be used to validate the provenance of the data used for compilation.

filehash#

Calculated file hash value for each file in the ‘value’ field of the parameter.

signature#

String recording a unique machine calculated string for each item in the list of files within ‘value’ parameter field. The ‘signature’ field can be used to validate the provenance of the data used for compilation.

value#

Parameter value

1.3. Project Parameters#

1.3.1. Project#

The Project class is the core object in SiliconCompiler, representing a complete hardware design project. It manages design parameters, libraries, flowgraphs, metrics, and provides methods for compilation, data collection, and reporting.

File: project.py

Class Project

1.3.1.1. arg#

1.3.1.1.1. index#

Description

ARG: index argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_index <str>

Example (CLI)

-arg_index 0

Example (API)

project.set('arg', 'index', '0')

1.3.1.1.2. step#

Description

ARG: step argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_step <str>

Example (CLI)

-arg_step 'route'

Example (API)

project.set('arg', 'step', 'route')

1.3.1.2. checklist#

Class Checklist

Class Criteria

1.3.1.2.1. criteria#

Simple list of signoff criteria for checklist item which must all be met for signoff. Each signoff criteria consists of a metric, a relational operator, and a value in the form ‘metric op value’.

Description

Checklist: item criteria

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_criteria 'standard item <str>'

Example (CLI)

-checklist_criteria 'ISO D000 errors==0'

Example (API)

check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')

1.3.1.2.2. dataformat#

Free text description of the type of data files acceptable as checklist signoff validation.

Description

Checklist: item data format

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_dataformat 'standard item <str>'

Example (CLI)

-checklist_dataformat 'ISO D000 README'

Example (API)

check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')

1.3.1.2.3. description#

A short one line description of the checklist item.

Description

Checklist: item description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_description 'standard item <str>'

Example (CLI)

-checklist_description 'ISO D000 A-DESCRIPTION'

Example (API)

check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')

1.3.1.2.4. ok#

Boolean check mark for the checklist item. A value of True indicates a human has inspected the all item dictionary parameters and verified they check out.

Description

Checklist: item ok

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -checklist_ok 'standard item <bool>'

Example (CLI)

-checklist_ok 'ISO D000 true'

Example (API)

check.set('checklist', 'ISO', 'D000', 'ok', True)

1.3.1.2.5. rationale#

Rationale for the checklist item. Rationale should be a unique alphanumeric code used by the standard or a short one line or single word description.

Description

Checklist: item rationale

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_rationale 'standard item <str>'

Example (CLI)

-checklist_rationale 'ISO D000 reliability'

Example (API)

check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')

1.3.1.2.6. report#

Filepath to report(s) of specified type documenting the successful validation of the checklist item.

Description

Checklist: item report

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_report 'standard item <file>'

Example (CLI)

-checklist_report 'ISO D000 my.rpt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')

1.3.1.2.7. requirement#

A complete requirement description of the checklist item entered as a multi-line string.

Description

Checklist: item requirement

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_requirement 'standard item <str>'

Example (CLI)

-checklist_requirement 'ISO D000 DOCSTRING'

Example (API)

check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')

1.3.1.2.8. task#

Flowgraph job and task used to verify the checklist item. The parameter should be left empty for manual and for tool flows that bypass the SC infrastructure.

Description

Checklist: item task

Type

[(str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_task 'standard item <(str,str,str)>'

Example (CLI)

-checklist_task 'ISO D000 (job0,place,0)'

Example (API)

check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))

1.3.1.2.9. waiver#

Filepath to report(s) documenting waivers for the checklist item specified on a per metric basis.

Description

Checklist: item metric waivers

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_waiver 'standard item metric <file>'

Example (CLI)

-checklist_waiver 'ISO D000 bold my.txt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')

1.3.1.3. flowgraph#

Class Flowgraph

Class FlowgraphNodeSchema

1.3.1.3.1. args#

User-specified arguments passed to the task’s setup() method. This allows for customizing a specific node’s behavior without affecting other nodes running the same task.

Description

Flowgraph: Node-specific arguments

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_args 'flow step index <str>'

Example (CLI)

-flowgraph_args 'asicflow cts 0 buffer_cells'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')

1.3.1.3.2. goal#

Goals specified on a per-node and per-metric basis used to determine whether a task run is considered successful. A task run may be considered failing if the absolute value of any of its reported metrics is larger than the goal for that metric (if set). This is often used for metrics like ‘errors’ or ‘setupwns’ where the goal is 0.

Description

Flowgraph: Metric goals

Type

float

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_goal 'flow step index metric <float>'

Example (CLI)

-flowgraph_goal 'asicflow cts 0 errors 0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)

1.3.1.3.3. input#

A list of inputs for this flowgraph node, where each input is specified as a (step, index) tuple. This defines the dependencies of this node.

Description

Flowgraph: Node inputs

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_input 'flow step index <(str,str)>'

Example (CLI)

-flowgraph_input 'asicflow cts 0 (place,0)'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))

1.3.1.3.4. task#

Name of the task (e.g., ‘place’, ‘syn’, ‘join’) associated with the node’s tool.

Description

Flowgraph: Task selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_task 'flow step index <str>'

Example (CLI)

-flowgraph_task 'asicflow myplace 0 place'

Example (API)

flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')

1.3.1.3.5. taskmodule#

Full Python module path and class name of the task, formatted as ‘<full.module.path>/<ClassName>’. This is used to import and instantiate the correct Task class for setup and execution.

Description

Flowgraph: Task module

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_taskmodule 'flow step index <str>'

Example (CLI)

-flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')

1.3.1.3.6. tool#

Name of the tool (e.g., ‘openroad’, ‘yosys’, ‘builtin’) that this node will execute.

Description

Flowgraph: Tool selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_tool 'flow step index <str>'

Example (CLI)

-flowgraph_tool 'asicflow place 0 openroad'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')

1.3.1.3.7. weight#

Weights specified on a per-node and per-metric basis, used by optimization tasks (like ‘minimum’) to calculate a “goodness” score for a run. The score is typically a weighted sum of metric results.

Description

Flowgraph: Metric weights

Type

float

Per step/index

never

Scope

global

Default Value

0.0

CLI Switch

  • -flowgraph_weight 'flow step index metric <float>'

Example (CLI)

-flowgraph_weight 'asicflow cts 0 area_cells 1.0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)

1.3.1.4. history#

1.3.1.5. library#

Class _ProjectLibrary

1.3.1.6. metric#

Class MetricSchema

1.3.1.6.1. errors#

Metric tracking the total number of errors on a per step and index basis.

Description

Metric: total errors

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_errors 'step index <int>'

Example (CLI)

-metric_errors 'dfm 0 0'

Example (API)

project.set('metric', 'errors', 0, step='dfm', index=0)

1.3.1.6.2. exetime#

Metric tracking time spent by the EDA executable [tool,<tool>,task,<task>,exe] on a per step and index basis. It does not include the SiliconCompiler runtime overhead or time waiting for I/O operations and inter-processor communication to complete.

Description

Metric: exetime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_exetime 'step index <float>'

Example (CLI)

-metric_exetime 'dfm 0 10.0'

Example (API)

project.set('metric', 'exetime', 10.0, step='dfm', index=0)

1.3.1.6.3. memory#

Metric tracking total peak program memory footprint on a per step and index basis.

Description

Metric: memory

Type

float

Scope

job

Unit

B

Default Value

None

CLI Switch

  • -metric_memory 'step index <float>'

Example (CLI)

-metric_memory 'dfm 0 10e9'

Example (API)

project.set('metric', 'memory', 10e9, step='dfm', index=0)

1.3.1.6.4. tasktime#

Metric tracking the total amount of time spent on a task from beginning to end, including data transfers and pre/post processing.

Description

Metric: tasktime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_tasktime 'step index <float>'

Example (CLI)

-metric_tasktime 'dfm 0 10.0'

Example (API)

project.set('metric', 'tasktime', 10.0, step='dfm', index=0)

1.3.1.6.5. totaltime#

Metric tracking the total amount of time spent from the beginning of the run up to and including the current step and index.

Description

Metric: totaltime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_totaltime 'step index <float>'

Example (CLI)

-metric_totaltime 'dfm 0 10.0'

Example (API)

project.set('metric', 'totaltime', 10.0, step='dfm', index=0)

1.3.1.6.6. warnings#

Metric tracking the total number of warnings on a per step and index basis.

Description

Metric: total warnings

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_warnings 'step index <int>'

Example (CLI)

-metric_warnings 'dfm 0 0'

Example (API)

project.set('metric', 'warnings', 0, step='dfm', index=0)

1.3.1.7. option#

Class OptionSchema

1.3.1.7.1. alias#

List of filesets to alias during a run. When an alias is specific it will be used instead of the source fileset. It is useful when you want to substitute a fileset from one library with a fileset from another, without changing the original design’s code. For example, you might use it to swap in a different version of an IP block or a specific test environment.

Description

Option: Fileset alias mapping

Type

[(str,str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))

1.3.1.7.2. autoissue#

Enables automatic generation of testcases if the specific node fails

Description

Option: Enables automatic generation of testcases

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -autoissue <bool>

Example (API)

option.set('autoissue', True)

1.3.1.7.3. breakpoint#

Set a breakpoint on specific steps. If the step is a TCL based tool, then the breakpoints stops the flow inside the EDA tool. If the step is a command line tool, then the flow drops into a Python interpreter.

Description

Option: breakpoint list

Type

bool

Scope

job

Default Value

False

CLI Switch

  • -breakpoint <bool>

Example (CLI)

-breakpoint true

Example (API)

option.set('breakpoint', True)

1.3.1.7.4. builddir#

The default build directory is in the local ‘./build’ where SC was executed. This can be used to set an alternate compilation directory path.

Description

Option: build directory

Type

dir

Per step/index

never

Scope

global

Default Value

build

CLI Switch

  • -builddir <dir>

Example (CLI)

-builddir ./build_the_future

Example (API)

option.set('builddir', './build_the_future')

1.3.1.7.5. cachedir#

Filepath to cache used for package data sources. If the cache parameter is empty, “.sc/cache” directory in the user’s home directory will be used.

Description

Option: user cache directory

Type

dir

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -cachedir <dir>

Example (CLI)

-cachedir /home/user/.sc/cache

Example (API)

option.set('cachedir', '/home/user/.sc/cache')

1.3.1.7.6. clean#

Run a job from the start and do not use any of the previous job. If [option,jobincr] is True, the old job is preserved and a new job number is assigned.

Description

Option: cleanup previous job

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -clean <bool>

Example (CLI)

-clean

Example (API)

option.set('clean', True)

1.3.1.7.7. continue#

Attempt to continue even when errors are encountered in the SC implementation. The default behavior is to quit executing the flow if a task ends and the errors metric is greater than 0. Note that the flow will always cease executing if the tool returns a nonzero status code.

Description

Option: continue-on-error

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -continue <bool>

Example (CLI)

-continue

Example (API)

option.set('continue', True)

1.3.1.7.8. credentials#

Filepath to credentials used for remote processing. If the credentials parameter is empty, the remote processing client program tries to access the “.sc/credentials” file in the user’s home directory. The file supports the following fields:

address=<server address> port=<server port> (optional) username=<user id> (optional) password=<password / key used for authentication> (optional)

Description

Option: user credentials file

Type

file

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -credentials <file>

Example (CLI)

-credentials /home/user/.sc/credentials

Example (API)

option.set('credentials', '/home/user/.sc/credentials')

1.3.1.7.9. design#

Name of the top level library

Description

Option: Design library name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -design <str>

Example (CLI)

-design hello_world

Example (API)

option.set('design', 'hello_world')

1.3.1.7.10. env#

Certain tools and reference flows require global environment variables to be set. These variables can be managed externally or specified through the env variable.

Description

Option: environment variables

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('env', 'PDK_HOME', '/disk/mypdk')

1.3.1.7.11. fileset#

List of filesets to use from the selected design library

Description

Option: Selected design filesets

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('fileset', 'rtl')

1.3.1.7.12. flow#

Sets the flow for the current run. The flow name must match up with a ‘flow’ in the flowgraph

Description

Option: flow target

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flow <str>

Example (CLI)

-flow asicflow

Example (API)

option.set('flow', 'asicflow')

1.3.1.7.13. from#

Inclusive list of steps to start execution from. The default is to start at all entry steps in the flow graph.

Description

Option: starting step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -from <str>

Example (CLI)

-from 'import'

Example (API)

option.set('from', 'import')

1.3.1.7.14. hash#

Enables hashing of all inputs and outputs during compilation. The hash values are stored in the hashvalue field of the individual parameters.

Description

Option: file hashing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -hash <bool>

Example (CLI)

-hash

Example (API)

option.set('hash', True)

1.3.1.7.15. jobincr#

Forces an auto-update of the jobname parameter if a directory matching the jobname is found in the build directory. If the jobname does not include a trailing digit, then the number ‘1’ is added to the jobname before updating the jobname parameter.

Description

Option: autoincrement jobname

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -jobincr <bool>

Example (CLI)

-jobincr

Example (API)

option.set('jobincr', True)

1.3.1.7.16. jobname#

Jobname during invocation of Project.run(). The jobname combined with a defined director structure (<dir>/<design>/<jobname>/<step>/<index>) enables multiple levels of transparent job, step, and index introspection.

Description

Option: job name

Type

str

Per step/index

never

Scope

global

Default Value

job0

CLI Switch

  • -jobname <str>

Example (CLI)

-jobname may1

Example (API)

option.set('jobname', 'may1')

1.3.1.7.17. nice#

Sets the type of execution priority of each individual flowgraph steps. If the parameter is undefined, nice will not be used. For more information see Unix ‘nice’.

Description

Option: tool scheduling priority

Type

int

Scope

global

Default Value

None

CLI Switch

  • -nice <int>

Example (CLI)

-nice 5

Example (API)

option.set('nice', 5)

1.3.1.7.18. nodashboard#

Disables the dashboard during execution

Description

Option: Disables the dashboard

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodashboard <bool>

Example (API)

option.set('nodashboard', True)

1.3.1.7.19. nodisplay#

This flag prevents SiliconCompiler from opening GUI windows.

Description

Option: headless execution

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodisplay <bool>

Example (CLI)

-nodisplay

Example (API)

option.set('nodisplay', True)

1.3.1.7.20. novercheck#

Disables strict version checking on all invoked tools if True. The list of supported version numbers is defined in the [tool,<tool>,task,<task>,version].

Description

Option: disable version checking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -novercheck <bool>

Example (CLI)

-novercheck

Example (API)

option.set('novercheck', True)

1.3.1.7.21. optmode#

The compiler has modes to prioritize run time and ppa. Modes include.

(O0) = Exploration mode for debugging setup (O1) = Higher effort and better PPA than O0 (O2) = Higher effort and better PPA than O1 (O3) = Signoff quality. Better PPA and higher run times than O2 (O4-O98) = Reserved (compiler/target dependent) (O99) = Experimental highest possible effort, may be unstable

Description

Option: optimization mode

Type

int

Scope

global

Default Value

0

CLI Switch

  • -O<str>
  • -optmode <str>

Example (CLI)

-O3

-optmode 3

Example (API)

option.set('optmode', 'O3')

1.3.1.7.22. prune#

List of starting nodes for branches to be pruned. The default is to not prune any nodes/branches.

Description

Option: flowgraph pruning

Type

[(str,str)]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -prune 'node <(str,str)>'

Example (CLI)

-prune (syn,0)

Example (API)

option.set('prune', ('syn', '0'))

1.3.1.7.23. quiet#

The -quiet option forces all steps to print to a log file. This can be useful with Modern EDA tools which print significant content to the screen.

Description

Option: quiet execution

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -quiet <bool>

Example (CLI)

-quiet

Example (API)

option.set('quiet', True)

1.3.1.7.24. remote#

Sends job for remote processing if set to true. The remote option requires a credentials file to be placed in the home directory. Fore more information, see the credentials parameter.

Description

Option: enable remote processing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -remote <bool>

Example (CLI)

-remote

Example (API)

option.set('remote', True)

1.3.1.7.25. scheduler#

Class SchedulerSchema

1.3.1.7.25.1. cores#

Specifies the number CPU cores required to run the job. For the slurm scheduler, this translates to the ‘-c’ switch. For more information, see the job scheduler documentation

Description

Option: Scheduler core constraint

Type

int

Scope

global

Default Value

None

CLI Switch

  • -cores <int>

Example (CLI)

-cores 48

Example (API)

option.set('cores', 48)

1.3.1.7.25.2. defer#

Defer initiation of job until the specified time. The parameter is pass through string for remote job scheduler such as slurm. For more information about the exact format specification, see the job scheduler documentation. Examples of valid slurm specific values include: now+1hour, 16:00, 010-01-20T12:34:00. For more information, see the job scheduler documentation.

Description

Option: scheduler start time

Type

str

Scope

global

Default Value

None

CLI Switch

  • -defer <str>

Example (CLI)

-defer 16:00

Example (API)

option.set('defer', '16:00')

1.3.1.7.25.3. maxnodes#

Maximum number of concurrent nodes to run in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum concurrent nodes

Type

int

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -maxnodes <int>

Example (CLI)

-maxnodes 4

Example (API)

option.set('maxnodes', 4)

1.3.1.7.25.4. maxthreads#

Maximum number of threads for each task in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum number of threads to assign a task

Type

int

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('maxthreads', 4)

1.3.1.7.25.5. memory#

Specifies the amount of memory required to run the job, specified in MB. For the slurm scheduler, this translates to the ‘–mem’ switch. For more information, see the job scheduler documentation

Description

Option: scheduler memory constraint

Type

int

Scope

global

Unit

MB

Default Value

None

CLI Switch

  • -memory <int>

Example (CLI)

-memory 8000

Example (API)

option.set('memory', 8000)

1.3.1.7.25.6. msgcontact#

List of email addresses to message on a [option,scheduler,msgevent]. Support for email messages relies on job scheduler daemon support. For more information, see the job scheduler documentation.

Description

Option: message contact

Type

{str}

Scope

global

Default Value

[]

CLI Switch

  • -msgcontact <str>

Example (CLI)

-msgcontact 'wile.e.coyote@acme.com'

Example (API)

option.set('msgcontact', 'wiley@acme.com')

1.3.1.7.25.7. msgevent#

Directs job scheduler to send a message to the user in [option,scheduler,msgcontact] when certain events occur during a task.

  • fail: send an email on failures

  • timeout: send an email on timeouts

  • begin: send an email at the start of a node task

  • end: send an email at the end of a node task

  • summary: send a summary email at the end of the run

  • all: send an email on any event

Description

Option: message event trigger

Type

[enum]

Allowed values

  • all

  • begin

  • end

  • fail

  • summary

  • timeout

Scope

global

Default Value

[]

CLI Switch

  • -msgevent <str>

Example (CLI)

-msgevent all

Example (API)

option.set('msgevent', 'all')

1.3.1.7.25.8. name#

Sets the type of job scheduler to be used for each individual flowgraph steps. If the parameter is undefined, the steps are executed on the same machine that the SC was launched on. If ‘slurm’ is used, the host running the ‘sc’ command must be running a ‘slurmctld’ daemon managing a Slurm cluster. Additionally, the build directory ([option,builddir]) must be located in shared storage which can be accessed by all hosts in the cluster.

Description

Option: scheduler platform

Type

enum

Allowed values

  • docker

  • lsf

  • sge

  • slurm

Scope

global

Default Value

None

CLI Switch

  • -scheduler <str>

Example (CLI)

-scheduler slurm

Example (API)

option.set('name', 'slurm')

1.3.1.7.25.9. options#

Advanced/export options passed through unchanged to the job scheduler as-is. (The user specified options must be compatible with the rest of the scheduler parameters entered.(memory etc). For more information, see the job scheduler documentation.

Description

Option: scheduler arguments

Type

[str]

Scope

global

Default Value

[]

CLI Switch

  • -scheduler_options <str>

Example (CLI)

-scheduler_options "--pty"

Example (API)

option.set('options', "--pty")

1.3.1.7.25.10. queue#

Send the job to the specified queue. With slurm, this translates to ‘partition’. The queue name must match the name of an existing job scheduler queue. For more information, see the job scheduler documentation

Description

Option: scheduler queue

Type

str

Scope

global

Default Value

None

CLI Switch

  • -queue <str>

Example (CLI)

-queue nightrun

Example (API)

option.set('queue', 'nightrun')

1.3.1.7.26. timeout#

Timeout value in seconds. The timeout value is compared against the wall time tracked by the SC runtime to determine if an operation should continue.

Description

Option: timeout value

Type

float

Scope

global

Unit

s

Default Value

None

CLI Switch

  • -timeout <float>

Example (CLI)

-timeout 3600

Example (API)

option.set('timeout', 3600)

1.3.1.7.27. to#

Inclusive list of steps to end execution with. The default is to go to all exit steps in the flow graph.

Description

Option: ending step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -to <str>

Example (CLI)

-to 'syn'

Example (API)

option.set('to', 'syn')

1.3.1.7.28. track#

Turns on tracking of all ‘record’ parameters during each task, otherwise only tool and runtime information will be recorded. Tracking will result in potentially sensitive data being recorded in the manifest so only turn on this feature if you have control of the final manifest.

Description

Option: enable provenance tracking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -track <bool>

Example (CLI)

-track

Example (API)

option.set('track', True)

1.3.1.8. record#

Class RecordSchema

1.3.1.8.1. arch#

Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)

Description

Record: hardware architecture

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_arch 'step index <str>'

Example (CLI)

-record_arch 'dfm 0 x86_64'

Example (API)

schema.set('record', 'arch', 'x86_64', step='dfm', index=0)

1.3.1.8.2. distro#

Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)

Description

Record: distro name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_distro 'step index <str>'

Example (CLI)

-record_distro 'dfm 0 ubuntu'

Example (API)

schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)

1.3.1.8.3. endtime#

Record tracking the end time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: end time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_endtime 'step index <str>'

Example (CLI)

-record_endtime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'endtime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.1.8.4. inputnode#

List of selected inputs for the current step/index specified as (in_step, in_index) tuple.

Description

Record: node inputs

Type

[(str,str)]

Scope

job

Default Value

[]

CLI Switch

  • -record_inputnode 'step index <(str,str)>'

Example (CLI)

-record_inputnode 'cts 0 (place,42)'

Example (API)

schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')

1.3.1.8.5. ipaddr#

Record tracking the IP address per step and index basis.

Description

Record: IP address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_ipaddr 'step index <str>'

Example (CLI)

-record_ipaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)

1.3.1.8.6. kernelversion#

Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction between os kernels and os distributions.

Description

Record: O/S kernel version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_kernelversion 'step index <str>'

Example (CLI)

-record_kernelversion 'dfm 0 5.11.0-34-generic'

Example (API)

schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)

1.3.1.8.7. macaddr#

Record tracking the MAC address per step and index basis.

Description

Record: MAC address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_macaddr 'step index <str>'

Example (CLI)

-record_macaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)

1.3.1.8.8. machine#

Record tracking the machine name per step and index basis. (myhost, localhost, …

Description

Record: machine name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_machine 'step index <str>'

Example (CLI)

-record_machine 'dfm 0 carbon'

Example (API)

schema.set('record', 'machine', 'carbon', step='dfm', index=0)

1.3.1.8.9. osversion#

Record tracking the O/S version per step and index basis. Since there is not standard version system for operating systems, extracting information from is platform dependent. For Linux based operating systems, the ‘osversion’ is the version of the distro.

Description

Record: O/S version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_osversion 'step index <str>'

Example (CLI)

-record_osversion 'dfm 0 20.04.1-Ubuntu'

Example (API)

schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)

1.3.1.8.10. platform#

Record tracking the platform name per step and index basis. (linux, windows, freebsd)

Description

Record: platform name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_platform 'step index <str>'

Example (CLI)

-record_platform 'dfm 0 linux'

Example (API)

schema.set('record', 'platform', 'linux', step='dfm', index=0)

1.3.1.8.11. publickey#

Record tracking the public key per step and index basis.

Description

Record: public key

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_publickey 'step index <str>'

Example (CLI)

-record_publickey 'dfm 0 <key>'

Example (API)

schema.set('record', 'publickey', '<key>', step='dfm', index=0)

1.3.1.8.12. pythonpackage#

Record tracking for the python packages installed.

Description

Record: python packages

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -record_pythonpackage '<str>'

Example (CLI)

-record_pythonpackage 'siliconcompiler==0.28.0'

Example (API)

schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')

1.3.1.8.13. pythonversion#

Record tracking the Python version per step and index basis. Version of python used to run this task.

Description

Record: Python version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_pythonversion 'step index <str>'

Example (CLI)

-record_pythonversion 'dfm 0 3.12.3'

Example (API)

schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)

1.3.1.8.14. region#

Record tracking the cloud region per step and index basis. Recommended naming methodology:

  • local: node is the local machine

  • onprem: node in on-premises IT infrastructure

  • public: generic public cloud

  • govcloud: generic US government cloud

  • <region>: cloud and entity specific region string name

Description

Record: cloud region

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_region 'step index <str>'

Example (CLI)

-record_region 'dfm 0 "US Gov Boston"'

Example (API)

schema.set('record', 'region', '"US Gov Boston"', step='dfm', index=0)

1.3.1.8.15. remoteid#

Record tracking the job ID for a remote run.

Description

Record: remote job ID

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -record_remoteid '<str>'

Example (CLI)

-record_remoteid '0123456789abcdeffedcba9876543210'

Example (API)

schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')

1.3.1.8.16. scversion#

Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.

Description

Record: software version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_scversion 'step index <str>'

Example (CLI)

-record_scversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'scversion', '1.0', step='dfm', index=0)

1.3.1.8.17. starttime#

Record tracking the start time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: start time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_starttime 'step index <str>'

Example (CLI)

-record_starttime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'starttime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.1.8.18. status#

Record tracking for the status of a node.

Description

Record: node execution status

Type

enum

Allowed values

  • error

  • pending

  • queued

  • running

  • skipped

  • success

  • timeout

Scope

job

Default Value

None

CLI Switch

  • -record_status 'step index <str>'

Example (CLI)

-record_status 'syn 0 success'

Example (API)

schema.set('record', 'status', 'success', step='syn', index='0')

1.3.1.8.19. toolargs#

Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.

Description

Record: tool CLI arguments

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolargs 'step index <str>'

Example (CLI)

-record_toolargs 'dfm 0 "-I include/ foo.v"'

Example (API)

schema.set('record', 'toolargs', '"-I include/ foo.v"', step='dfm', index=0)

1.3.1.8.20. toolexitcode#

Record tracking the tool exit code per step and index basis.

Description

Record: tool exit code

Type

int

Scope

job

Default Value

None

CLI Switch

  • -record_toolexitcode 'step index <int>'

Example (CLI)

-record_toolexitcode 'dfm 0 0'

Example (API)

schema.set('record', 'toolexitcode', 0, step='dfm', index=0)

1.3.1.8.21. toolpath#

Record tracking the tool path per step and index basis. Full path to tool executable used to run this task.

Description

Record: tool path

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolpath 'step index <str>'

Example (CLI)

-record_toolpath 'dfm 0 /usr/bin/openroad'

Example (API)

schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)

1.3.1.8.22. toolversion#

Record tracking the tool version per step and index basis. The tool version captured corresponds to the ‘tool’ parameter within the ‘tool’ dictionary.

Description

Record: tool version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolversion 'step index <str>'

Example (CLI)

-record_toolversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'toolversion', '1.0', step='dfm', index=0)

1.3.1.8.23. userid#

Record tracking the userid per step and index basis.

Description

Record: userid

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_userid 'step index <str>'

Example (CLI)

-record_userid 'dfm 0 wiley'

Example (API)

schema.set('record', 'userid', 'wiley', step='dfm', index=0)

1.3.1.9. schemaversion#

Description

Schema version number

Type

str

Per step/index

never

Scope

global

Default Value

0.54.0

Example (API)

project.get('schemaversion')

1.3.1.10. tool#

1.3.1.10.1. task#

Class Task

1.3.1.10.1.1. dataroot#
1.3.1.10.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.3.1.10.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.3.1.10.1.2. env#

Environment variables to set for individual tasks. Keys and values should be set in accordance with the task’s documentation. Most tasks do not require extra environment variables to function.

Description

Task: environment variables

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_task_env 'tool task env <str>'

Example (CLI)

-tool_task_env 'openroad cts MYVAR 42'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')

1.3.1.10.1.3. exe#

Tool executable name.

Description

Tool: executable name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_exe 'tool <str>'

Example (CLI)

-tool_exe 'openroad openroad'

Example (API)

task.set('tool', 'openroad', 'exe', 'openroad')

1.3.1.10.1.4. format#

File format for tool manifest handoff.

Description

Tool: file format

Type

enum

Allowed values

  • json

  • tcl

  • yaml

Scope

job

Default Value

None

CLI Switch

  • -tool_format 'tool <str>'

Example (CLI)

-tool_format 'yosys tcl'

Example (API)

task.set('tool', 'yosys', 'format', 'tcl')

1.3.1.10.1.5. input#

List of data files to be copied from previous flowgraph steps ‘output’ directory. The list of steps to copy files from is defined by the list defined by the dictionary key [flowgraph,<flow>,<step>,<index>,input]. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: input files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_input 'tool task <file>'

Example (CLI)

-tool_task_input 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')

1.3.1.10.1.6. licenseserver#

Defines a set of tool-specific environment variables used by the executable that depend on license key servers to control access. For multiple servers, separate servers with a colon. The named license variables are read at runtime (Task.run()) and the environment variables are set.

Description

Tool: license servers

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_licenseserver 'name key <str>'

Example (CLI)

-tool_licenseserver 'atask ACME_LICENSE 1700@server'

Example (API)

task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')

1.3.1.10.1.7. option#

List of command line options for the task executable, specified on a per task and per step basis. Options must not include spaces. For multiple argument options, each option is a separate list element.

Description

Task: executable options

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_option 'tool task <str>'

Example (CLI)

-tool_task_option 'openroad cts -no_init'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')

1.3.1.10.1.8. output#

List of data files written to the ‘output’ directory of the tool/task/step/index used in the keypath. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: output files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_output 'tool task <file>'

Example (CLI)

-tool_task_output 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')

1.3.1.10.1.9. path#

File system path to tool executable. The path is prepended to the system PATH environment variable for batch and interactive runs. The path parameter can be left blank if the [tool,<tool>,task,<task>,exe] is already in the environment search path.

Description

Tool: executable path

Type

dir

Scope

job

Default Value

None

CLI Switch

  • -tool_path 'tool <dir>'

Example (CLI)

-tool_path 'openroad /usr/local/bin'

Example (API)

task.set('tool', 'openroad', 'path', '/usr/local/bin')

1.3.1.10.1.10. postscript#

Path to a user supplied script to execute after the main execution stage of the step but before the design is saved. Exact entry point depends on the step and main script being executed. An example of a postscript entry point would be immediately after global placement.

Description

Task: post-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_postscript 'tool task <file>'

Example (CLI)

-tool_task_postscript 'yosys syn syn_post.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')

1.3.1.10.1.11. prescript#

Path to a user supplied script to execute after reading in the design but before the main execution stage of the step. Exact entry point depends on the step and main script being executed. An example of a prescript entry point would be immediately before global placement.

Description

Task: pre-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_prescript 'tool task <file>'

Example (CLI)

-tool_task_prescript 'yosys syn syn_pre.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')

1.3.1.10.1.12. refdir#

Path to directories containing reference flow scripts, specified on a per step and index basis.

Description

Task: script directory

Type

[dir]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_refdir 'tool task <dir>'

Example (CLI)

-tool_task_refdir 'yosys syn ./myref'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')

1.3.1.10.1.13. regex#

A list of piped together grep commands. Each entry represents a set of command line arguments for grep including the regex pattern to match. Starting with the first list entry, each grep output is piped into the following grep command in the list. Supported grep options include -v and -e. Patterns starting with “-” should be directly preceded by the -e option. The following example illustrates the concept.

UNIX grep:

$ grep WARNING place.log | grep -v "bbox" > place.warnings

SiliconCompiler:

task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',
         ["WARNING", "-v bbox"])

The “errors” and “warnings” suffixes are special cases. When set, the number of matches found for these regexes will be added to the errors and warnings metrics for the task, respectively. This will also cause the logfile to be added to the [tool,<tool>,task,<task>,report,...] parameter for those metrics, if not already present.

Description

Task: regex filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_regex 'tool task suffix <str>'

Example (CLI)

-tool_task_regex 'openroad place errors "'-v ERROR'"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')

1.3.1.10.1.14. report#

List of report files associated with a specific ‘metric’. The file path specified is relative to the run directory of the current task.

Description

Task: metric report files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_report 'tool task metric <file>'

Example (CLI)

-tool_task_report 'openroad place holdtns "place 0 place.log"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')

1.3.1.10.1.15. require#

List of keypaths to required task parameters. The list is used by Project.check_manifest() to verify that all parameters have been set up before step execution begins.

Description

Task: parameter requirements

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_require 'tool task <str>'

Example (CLI)

-tool_task_require 'openroad cts design'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')

1.3.1.10.1.16. sbom#

Paths to software bill of material (SBOM) document file of the tool specified on a per version basis. The SBOM includes critical package information about the tool including the list of included components, licenses, and copyright. The SBOM file is generally provided as in a a standardized open data format such as SPDX.

Description

Tool: software BOM

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_sbom 'tool version <file>'

Example (CLI)

-tool_sbom 'yosys 1.0.1 ys_sbom.json'

Example (API)

task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')

1.3.1.10.1.17. script#

Path to the entry script called by the executable specified on a per task and per step basis.

Description

Task: entry script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_script 'tool task <file>'

Example (CLI)

-tool_task_script 'yosys syn syn.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')

1.3.1.10.1.18. stderr#
1.3.1.10.1.18.1. destination#

Defines where to direct the output generated over stderr. Supported options are: none: the stream generated to STDERR is ignored log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>

Description

Task: destination for stderr

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_destination 'tool task <str>'

Example (CLI)

-tool_task_stderr_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')

1.3.1.10.1.18.2. suffix#

Specifies the file extension for the content redirected from stderr.

Description

Task: file suffix for redirected stderr

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_suffix 'tool task <str>'

Example (CLI)

-tool_task_stderr_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')

1.3.1.10.1.19. stdout#
1.3.1.10.1.19.1. destination#

Defines where to direct the output generated over stdout. Supported options are: none: the stream generated to STDOUT is ignored. log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>.

Description

Task: destination for stdout

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_destination 'tool task <str>'

Example (CLI)

-tool_task_stdout_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')

1.3.1.10.1.19.2. suffix#

Specifies the file extension for the content redirected from stdout.

Description

Task: file suffix for redirected stdout

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_suffix 'tool task <str>'

Example (CLI)

-tool_task_stdout_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')

1.3.1.10.1.20. threads#

Thread parallelism to use for execution specified on a per task and per step basis. If not specified, SC queries the operating system and sets the threads based on the maximum thread count supported by the hardware.

Description

Task: thread parallelism

Type

int

Scope

job

Default Value

None

CLI Switch

  • -tool_task_threads 'tool task <int>'

Example (CLI)

-tool_task_threads 'magic drc 64'

Example (API)

task.set('tool', 'magic', 'task', 'drc', 'threads', '64')

1.3.1.10.1.21. vendor#

Name of the tool vendor. Parameter can be used to set vendor specific technology variables in the PDK and libraries. For open source projects, the project name should be used in place of vendor.

Description

Tool: vendor

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -tool_vendor 'tool <str>'

Example (CLI)

-tool_vendor 'yosys yosys'

Example (API)

task.set('tool', 'yosys', 'vendor', 'yosys')

1.3.1.10.1.22. version#

List of acceptable versions of the tool executable to be used. Each entry in this list must be a version specifier as described by Python PEP-440. During task execution, the tool is called with the ‘vswitch’ to check the runtime executable version. If the version of the system executable is not allowed by any of the specifiers in ‘version’, then the job is halted pre-execution. For backwards compatibility, entries that do not conform to the standard will be interpreted as a version with an ‘==’ specifier. This check can be disabled by setting [option,novercheck] to True.

Description

Tool: version

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_version 'tool <str>'

Example (CLI)

-tool_version 'openroad >=v2.0'

Example (API)

task.set('tool', 'openroad', 'version', '>=v2.0')

1.3.1.10.1.23. vswitch#

Command line switch to use with executable used to print out the version number. Common switches include -v, -version, --version. Some tools may require extra flags to run in batch mode.

Description

Tool: executable version switch

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_vswitch 'tool <str>'

Example (CLI)

-tool_vswitch 'openroad -version'

Example (API)

task.set('tool', 'openroad', 'vswitch', '-version')

1.3.1.10.1.24. warningoff#

A list of tool warnings for which printing should be suppressed. Generally this is done on a per design basis after review has determined that warning can be safely ignored The code for turning off warnings can be found in the specific task reference manual.

Description

Task: warning filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_warningoff 'tool task <str>'

Example (CLI)

-tool_task_warningoff 'verilator lint COMBDLY'

Example (API)

task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')

1.3.2. ASIC#

The ASIC class extends the base Project class to provide specialized functionality and schema parameters for Application-Specific Integrated Circuit (ASIC) design flows.

It includes specific constraints (timing, component, pin, area) and ASIC-related options such as PDK selection, main logic library, additional ASIC libraries, delay models, and routing layer limits.

File: asic.py

Class ASIC

1.3.2.1. arg#

1.3.2.1.1. index#

Description

ARG: index argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_index <str>

Example (CLI)

-arg_index 0

Example (API)

project.set('arg', 'index', '0')

1.3.2.1.2. step#

Description

ARG: step argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_step <str>

Example (CLI)

-arg_step 'route'

Example (API)

project.set('arg', 'step', 'route')

1.3.2.2. asic#

1.3.2.2.1. asiclib#

List of all selected logic libraries to use for optimization for a given library architecture (9T, 11T, etc).

Description

ASIC: logic libraries

Type

{str}

Per step/index

never

Scope

global

Default Value

[]

Example (API)

asic.set('asic', 'asiclib', 'nangate45')

1.3.2.2.2. delaymodel#

Delay model to use for the target libs. Commonly supported values are nldm and ccs.

Description

ASIC: delay model

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

asic.set('asic', 'delaymodel', 'ccs')

1.3.2.2.3. mainlib#

Main logic library to use during the run

Description

ASIC: main logic library

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('asic', 'mainlib', 'nangate45')

1.3.2.2.4. maxlayer#

Maximum metal layer to be used for automated place and route

Description

ASIC: maximum routing layer

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('asic', 'maxlayer', 'M7')

1.3.2.2.5. minlayer#

Minimum metal layer to be used for automated place and route

Description

ASIC: Minimum routing layer

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('asic', 'minlayer', 'M2')

1.3.2.2.6. pdk#

Target PDK used during compilation.

Description

ASIC: PDK target

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('asic', 'pdk', 'freepdk45')

1.3.2.3. checklist#

Class Checklist

Class Criteria

1.3.2.3.1. criteria#

Simple list of signoff criteria for checklist item which must all be met for signoff. Each signoff criteria consists of a metric, a relational operator, and a value in the form ‘metric op value’.

Description

Checklist: item criteria

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_criteria 'standard item <str>'

Example (CLI)

-checklist_criteria 'ISO D000 errors==0'

Example (API)

check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')

1.3.2.3.2. dataformat#

Free text description of the type of data files acceptable as checklist signoff validation.

Description

Checklist: item data format

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_dataformat 'standard item <str>'

Example (CLI)

-checklist_dataformat 'ISO D000 README'

Example (API)

check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')

1.3.2.3.3. description#

A short one line description of the checklist item.

Description

Checklist: item description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_description 'standard item <str>'

Example (CLI)

-checklist_description 'ISO D000 A-DESCRIPTION'

Example (API)

check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')

1.3.2.3.4. ok#

Boolean check mark for the checklist item. A value of True indicates a human has inspected the all item dictionary parameters and verified they check out.

Description

Checklist: item ok

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -checklist_ok 'standard item <bool>'

Example (CLI)

-checklist_ok 'ISO D000 true'

Example (API)

check.set('checklist', 'ISO', 'D000', 'ok', True)

1.3.2.3.5. rationale#

Rationale for the checklist item. Rationale should be a unique alphanumeric code used by the standard or a short one line or single word description.

Description

Checklist: item rationale

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_rationale 'standard item <str>'

Example (CLI)

-checklist_rationale 'ISO D000 reliability'

Example (API)

check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')

1.3.2.3.6. report#

Filepath to report(s) of specified type documenting the successful validation of the checklist item.

Description

Checklist: item report

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_report 'standard item <file>'

Example (CLI)

-checklist_report 'ISO D000 my.rpt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')

1.3.2.3.7. requirement#

A complete requirement description of the checklist item entered as a multi-line string.

Description

Checklist: item requirement

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_requirement 'standard item <str>'

Example (CLI)

-checklist_requirement 'ISO D000 DOCSTRING'

Example (API)

check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')

1.3.2.3.8. task#

Flowgraph job and task used to verify the checklist item. The parameter should be left empty for manual and for tool flows that bypass the SC infrastructure.

Description

Checklist: item task

Type

[(str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_task 'standard item <(str,str,str)>'

Example (CLI)

-checklist_task 'ISO D000 (job0,place,0)'

Example (API)

check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))

1.3.2.3.9. waiver#

Filepath to report(s) documenting waivers for the checklist item specified on a per metric basis.

Description

Checklist: item metric waivers

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_waiver 'standard item metric <file>'

Example (CLI)

-checklist_waiver 'ISO D000 bold my.txt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')

1.3.2.4. constraint#

Class ASICConstraint

1.3.2.4.1. area#

Class ASICAreaConstraint

1.3.2.4.1.1. aspectratio#

Description

Constraint: layout aspect ratio

Type

float

Scope

global

Default Value

1.0

CLI Switch

  • -constraint_aspectratio <float>

Example (API)

asic.set('constraint', 'aspectratio', 2.0)

1.3.2.4.1.2. corearea#

Description

Constraint: layout core area

Type

[(float,float)]

Scope

global

Unit

um

Default Value

[]

CLI Switch

  • -constraint_corearea <(float,float)>

Example (API)

asic.set('constraint', 'corearea', (0, 0))

1.3.2.4.1.3. coremargin#

Description

Constraint: layout core margin

Type

float

Scope

global

Unit

um

Default Value

None

CLI Switch

  • -constraint_coremargin <float>

Example (API)

asic.set('constraint', 'coremargin', 1)

1.3.2.4.1.4. density#

Description

Constraint: layout density

Type

float

Scope

global

Default Value

None

CLI Switch

  • -constraint_density <float>

Example (API)

asic.set('constraint', 'density', 30)

1.3.2.4.1.5. diearea#

Description

Constraint: die area outline

Type

[(float,float)]

Scope

global

Unit

um

Default Value

[]

CLI Switch

  • -constraint_diearea <(float,float)>

Example (API)

asic.set('constraint', 'diearea', (0, 0))

1.3.2.4.2. component#

Class ASICComponentConstraints

Class ASICComponentConstraint

1.3.2.4.2.1. halo#

Description

Constraint: component halo

Type

(float,float)

Scope

global

Unit

um

Default Value

None

CLI Switch

  • -constraint_component_halo 'inst <(float,float)>'

Example (CLI)

-constraint_component_halo 'i0 (1,1)'

Example (API)

asic.set('constraint', 'component', 'i0', 'halo', (1, 1))

1.3.2.4.2.2. partname#

Description

Constraint: component part name

Type

str

Scope

global

Default Value

None

Example (API)

asic.set('constraint', 'component', 'i0', 'partname', 'filler_x1')

1.3.2.4.2.3. placement#

Description

Constraint: component placement

Type

(float,float)

Scope

global

Unit

um

Default Value

None

Example (API)

asic.set('constraint', 'component', 'i0', 'placement', (2.0, 3.0))

1.3.2.4.2.4. rotation#

Description

Constraint: component rotation

Type

enum

Allowed values

  • MX

  • MX_R180

  • MX_R270

  • MX_R90

  • MY

  • MY_R180

  • MY_R270

  • MY_R90

  • MZ

  • MZ_MX

  • MZ_MX_R180

  • MZ_MX_R270

  • MZ_MX_R90

  • MZ_MY

  • MZ_MY_R180

  • MZ_MY_R270

  • MZ_MY_R90

  • MZ_R180

  • MZ_R270

  • MZ_R90

  • R0

  • R180

  • R270

  • R90

Scope

global

Default Value

R0

CLI Switch

  • -constraint_component_rotation 'inst <str>'

Example (CLI)

-constraint_component_rotation 'i0 R90'

Example (API)

asic.set('constraint', 'component', 'i0', 'rotation', 'R90')

1.3.2.4.3. pin#

Class ASICPinConstraints

Class ASICPinConstraint

1.3.2.4.3.1. layer#

Pin metal layer constraint specified on a per pin basis. Metal names should either be the PDK specific metal stack name or an integer with ‘1’ being the lowest routing layer.

Description

Constraint: pin layer

Type

str

Scope

global

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'layer', 'm4')

1.3.2.4.3.2. length#

Pin length constraint. Package pin length refers to the length of the electrical pins extending out from (or into) a component. This parameter represents goal/intent, not an exact specification. The layout system may adjust dimensions to meet competing goals such as manufacturing design rules and grid placement guidelines.

Description

Constraint: pin length

Type

float

Scope

global

Unit

um

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'length', 1.0)

1.3.2.4.3.3. order#

The relative position of the named pin in a vector of pins on the side specified by the ‘side’ option. Pin order counting is done clockwise. If multiple pins on the same side have the same order number, the actual order is at the discretion of the tool.

Description

Constraint: pin order

Type

int

Scope

global

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'order', 1)

1.3.2.4.3.4. placement#

Placement location of a named pin, specified as a (x,y) tuple of floats with respect to the lower left corner of the substrate. The location refers to the center of the pin. The ‘placement’ parameter is a goal/intent, not an exact specification. The layout system may adjust sizes to meet competing goals such as manufacturing design rules and grid placement guidelines.

Description

Constraint: pin placement

Type

(float,float)

Scope

global

Unit

um

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'placement', (2.0, 3.0))

1.3.2.4.3.5. shape#

Pin shape constraint specified on a per pin basis. In 3D design systems, the pin shape represents the cross section of the pin in the direction orthogonal to the signal flow direction. The ‘pill’ (aka stadium) shape, is rectangle with semicircles at a pair of opposite sides. The other pin shapes represent common geometric shape definitions.

Description

Constraint: pin shape

Type

enum

Allowed values

  • circle

  • hexagon

  • octagon

  • oval

  • pill

  • polygon

  • rectangle

  • square

Scope

global

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'shape', 'circle')

1.3.2.4.3.6. side#

Side of block where the named pin should be placed. Sides are enumerated as integers with ‘1’ being the lower left side, with the side index incremented on right turn in a clock wise fashion. In case of conflict between ‘lower’ and ‘left’, ‘left’ has precedence. The side option and order option are orthogonal to the placement option.

Description

Constraint: pin side

Type

int

Scope

global

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'side', 1)

1.3.2.4.3.7. width#

Pin width constraint. Package pin width is the lateral (side-to-side) thickness of a pin on a physical component. This parameter represents goal/intent, not an exact specification. The layout system may adjust dimensions to meet competing goals such as manufacturing design rules and grid placement guidelines.

Description

Constraint: pin width

Type

float

Scope

global

Unit

um

Default Value

None

Example (API)

asic.set('constraint', 'pin', 'nreset', 'width', 1.0)

1.3.2.4.4. timing#

Class ASICTimingConstraintSchema

1.3.2.4.4.1. mode#

Class TimingModeSchema

1.3.2.4.4.1.1. sdcfileset#

List of timing constraint sets files to use for the scenario. The

values are combined with any constraints specified by the design ‘constraint’ parameter. If no constraints are found, a default constraint file is used based on the clock definitions.

Description

Constraint: SDC files

Type

[(str,str)]

Scope

global

Default Value

[]

CLI Switch

  • -constraint_timing_file 'scenario <file>'

Example (API)

mode.set('constraint', 'timing', 'worst', 'file', 'hello.sdc')

1.3.2.4.4.2. scenario#

Class ASICTimingScenarioSchema

1.3.2.4.4.2.1. check#

List of checks for to perform for the scenario. The checks must align with the capabilities of the EDA tools and flow being used. Checks generally include objectives like meeting setup and hold goals and minimize power. Standard check names include setup, hold, power, noise, reliability.

Description

Constraint: timing checks

Type

[enum]

Allowed values

  • dynamicpower

  • hold

  • leakagepower

  • maxcap

  • maxtran

  • mincap

  • power

  • setup

  • signalem

Scope

global

Default Value

[]

CLI Switch

  • -constraint_timing_check 'scenario <str>'

Example (API)

asic.add('constraint', 'timing', 'worst', 'check', 'setup')

1.3.2.4.4.2.2. libcorner#

List of characterization corners used to select

timing files for all logiclibs and macrolibs.

Description

Constraint: library corner

Type

{str}

Scope

global

Default Value

[]

CLI Switch

  • -constraint_timing_libcorner 'scenario <str>'

Example (API)

asic.set('constraint', 'timing', 'worst', 'libcorner', 'ttt')

1.3.2.4.4.2.3. mode#

Operating mode for the scenario. Operating mode strings

can be values such as test, functional, standby.

Description

Constraint: operating mode

Type

str

Scope

global

Default Value

None

CLI Switch

  • -constraint_timing_mode 'scenario <str>'

Example (API)

asic.set('constraint', 'timing', 'worst', 'mode', 'test')

1.3.2.4.4.2.4. opcond#

Operating condition applied to the scenario. The value

can be used to access specific conditions within the library timing models from the [asic,asiclib] timing models.

Description

Constraint: operating condition

Type

str

Scope

global

Default Value

None

CLI Switch

  • -constraint_timing_opcond 'scenario <str>'

Example (API)

asic.set('constraint', 'timing', 'worst', 'opcond', 'typical_1.0')

1.3.2.4.4.2.5. pexcorner#

Parasitic corner applied to the scenario. The

’pexcorner’ string must match a corner found in [pdk,pexmodelfileset,...].

Description

Constraint: pex corner

Type

str

Scope

global

Default Value

None

CLI Switch

  • -constraint_timing_pexcorner 'scenario <str>'

Example (API)

asic.set('constraint', 'timing', 'worst', 'pexcorner', 'max')

1.3.2.4.4.2.6. temperature#

Chip temperature applied to the scenario specified in degrees C.

Description

Constraint: temperature

Type

float

Scope

global

Unit

C

Default Value

None

CLI Switch

  • -constraint_timing_temperature 'scenario <float>'

Example (API)

asic.set('constraint', 'timing', 'worst', 'temperature', '125')

1.3.2.4.4.2.7. voltage#

Operating voltage applied to a specific pin in the scenario.

Description

Constraint: pin voltage level

Type

float

Scope

global

Unit

V

Default Value

None

CLI Switch

  • -constraint_timing_voltage 'scenario pin <float>'

Example (API)

asic.set('constraint', 'timing', 'worst', 'voltage', 'VDD', '0.9')

1.3.2.5. flowgraph#

Class Flowgraph

Class FlowgraphNodeSchema

1.3.2.5.1. args#

User-specified arguments passed to the task’s setup() method. This allows for customizing a specific node’s behavior without affecting other nodes running the same task.

Description

Flowgraph: Node-specific arguments

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_args 'flow step index <str>'

Example (CLI)

-flowgraph_args 'asicflow cts 0 buffer_cells'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')

1.3.2.5.2. goal#

Goals specified on a per-node and per-metric basis used to determine whether a task run is considered successful. A task run may be considered failing if the absolute value of any of its reported metrics is larger than the goal for that metric (if set). This is often used for metrics like ‘errors’ or ‘setupwns’ where the goal is 0.

Description

Flowgraph: Metric goals

Type

float

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_goal 'flow step index metric <float>'

Example (CLI)

-flowgraph_goal 'asicflow cts 0 errors 0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)

1.3.2.5.3. input#

A list of inputs for this flowgraph node, where each input is specified as a (step, index) tuple. This defines the dependencies of this node.

Description

Flowgraph: Node inputs

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_input 'flow step index <(str,str)>'

Example (CLI)

-flowgraph_input 'asicflow cts 0 (place,0)'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))

1.3.2.5.4. task#

Name of the task (e.g., ‘place’, ‘syn’, ‘join’) associated with the node’s tool.

Description

Flowgraph: Task selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_task 'flow step index <str>'

Example (CLI)

-flowgraph_task 'asicflow myplace 0 place'

Example (API)

flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')

1.3.2.5.5. taskmodule#

Full Python module path and class name of the task, formatted as ‘<full.module.path>/<ClassName>’. This is used to import and instantiate the correct Task class for setup and execution.

Description

Flowgraph: Task module

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_taskmodule 'flow step index <str>'

Example (CLI)

-flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')

1.3.2.5.6. tool#

Name of the tool (e.g., ‘openroad’, ‘yosys’, ‘builtin’) that this node will execute.

Description

Flowgraph: Tool selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_tool 'flow step index <str>'

Example (CLI)

-flowgraph_tool 'asicflow place 0 openroad'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')

1.3.2.5.7. weight#

Weights specified on a per-node and per-metric basis, used by optimization tasks (like ‘minimum’) to calculate a “goodness” score for a run. The score is typically a weighted sum of metric results.

Description

Flowgraph: Metric weights

Type

float

Per step/index

never

Scope

global

Default Value

0.0

CLI Switch

  • -flowgraph_weight 'flow step index metric <float>'

Example (CLI)

-flowgraph_weight 'asicflow cts 0 area_cells 1.0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)

1.3.2.6. history#

1.3.2.7. library#

Class _ProjectLibrary

1.3.2.8. metric#

Class ASICMetricsSchema

1.3.2.8.1. averagepower#

Metric tracking the average workload power of the design specified on a per step and index basis. Power metric depend heavily on the method being used for extraction: dynamic vs static, workload specification (vcd vs saif), power models, process/voltage/temperature. The power averagepower metric tries to capture the data that would usually be reflected inside a datasheet given the appropriate footnote conditions.

Description

Metric: averagepower

Type

float

Scope

job

Unit

mw

Default Value

None

CLI Switch

  • -metric_averagepower 'step index <float>'

Example (CLI)

-metric_averagepower 'place 0 0.01'

Example (API)

asic.set('metric', 'averagepower', 0.01, step='place', index=0)

1.3.2.8.2. buffers#

Metric tracking the total number of buffer instances in the design on a per step and index basis.

Description

Metric: buffers

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_buffers 'step index <int>'

Example (CLI)

-metric_buffers 'place 0 100'

Example (API)

asic.set('metric', 'buffers', 50, step='place', index=0)

1.3.2.8.3. cellarea#

Metric tracking the total cell area (ignoring fillers) occupied by the design.

Description

Metric: cellarea

Type

float

Scope

job

Unit

um^2

Default Value

None

CLI Switch

  • -metric_cellarea 'step index <float>'

Example (CLI)

-metric_cellarea 'place 0 100.00'

Example (API)

asic.set('metric', 'cellarea', 100.00, step='place', index=0)

1.3.2.8.4. cells#

Metric tracking the total number of cell instances in the design on a per step and index basis.

Description

Metric: cells

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_cells 'step index <int>'

Example (CLI)

-metric_cells 'place 0 100'

Example (API)

asic.set('metric', 'cells', 50, step='place', index=0)

1.3.2.8.5. drcs#

Metric tracking the total number of physical design rule violations on a per step and index basis.

Description

Metric: total drcs

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_drcs 'step index <int>'

Example (CLI)

-metric_drcs 'dfm 0 0'

Example (API)

asic.set('metric', 'drcs', 0, step='dfm', index=0)

1.3.2.8.6. drvs#

Metric tracking the total number of design rule violations on a per step and index basis.

Description

Metric: total drvs

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_drvs 'step index <int>'

Example (CLI)

-metric_drvs 'dfm 0 0'

Example (API)

asic.set('metric', 'drvs', 0, step='dfm', index=0)

1.3.2.8.7. errors#

Metric tracking the total number of errors on a per step and index basis.

Description

Metric: total errors

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_errors 'step index <int>'

Example (CLI)

-metric_errors 'dfm 0 0'

Example (API)

project.set('metric', 'errors', 0, step='dfm', index=0)

1.3.2.8.8. exetime#

Metric tracking time spent by the EDA executable [tool,<tool>,task,<task>,exe] on a per step and index basis. It does not include the SiliconCompiler runtime overhead or time waiting for I/O operations and inter-processor communication to complete.

Description

Metric: exetime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_exetime 'step index <float>'

Example (CLI)

-metric_exetime 'dfm 0 10.0'

Example (API)

project.set('metric', 'exetime', 10.0, step='dfm', index=0)

1.3.2.8.9. fmax#

Metric tracking the maximum clock frequency on a per step and index basis.

Description

Metric: fmax

Type

float

Scope

job

Unit

Hz

Default Value

None

CLI Switch

  • -metric_fmax 'step index <float>'

Example (CLI)

-metric_fmax 'place 0 100e6'

Example (API)

asic.set('metric', 'fmax', 100e6, step='place', index=0)

1.3.2.8.10. holdpaths#

Metric tracking the total number of timing paths violating hold constraints.

Description

Metric: holdpaths

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_holdpaths 'step index <int>'

Example (CLI)

-metric_holdpaths 'place 0 10'

Example (API)

asic.set('metric', 'holdpaths', 10, step='place', index=0)

1.3.2.8.11. holdskew#

Metric tracking the hold clock skew on a per step and index basis.

Description

Metric: holdskew

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdskew 'step index <float>'

Example (CLI)

-metric_holdskew 'place 0 0.01'

Example (API)

asic.set('metric', 'holdskew', 0.01, step='place', index=0)

1.3.2.8.12. holdslack#

Metric tracking the worst hold slack (positive or negative) on a per step and index basis.

Description

Metric: holdslack

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdslack 'step index <float>'

Example (CLI)

-metric_holdslack 'place 0 0.01'

Example (API)

asic.set('metric', 'holdslack', 0.01, step='place', index=0)

1.3.2.8.13. holdtns#

Metric tracking the total negative hold slack (TNS) on a per step and index basis.

Description

Metric: holdtns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdtns 'step index <float>'

Example (CLI)

-metric_holdtns 'place 0 0.01'

Example (API)

asic.set('metric', 'holdtns', 0.01, step='place', index=0)

1.3.2.8.14. holdwns#

Metric tracking the worst negative hold slack (positive values truncated to zero) on a per step and index basis.

Description

Metric: holdwns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdwns 'step index <float>'

Example (CLI)

-metric_holdwns 'place 0 0.01'

Example (API)

asic.set('metric', 'holdwns', 0.01, step='place', index=0)

1.3.2.8.15. inverters#

Metric tracking the total number of inverter instances in the design on a per step and index basis.

Description

Metric: inverters

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_inverters 'step index <int>'

Example (CLI)

-metric_inverters 'place 0 100'

Example (API)

asic.set('metric', 'inverters', 50, step='place', index=0)

1.3.2.8.16. irdrop#

Metric tracking the peak IR drop in the design based on extracted power and ground rail parasitics, library power models, and switching activity. The switching activity calculated on a per node basis is taken from one of three possible sources, in order of priority: VCD file, SAIF file, ‘activityfactor’ parameter.

Description

Metric: peak IR drop

Type

float

Scope

job

Unit

mv

Default Value

None

CLI Switch

  • -metric_irdrop 'step index <float>'

Example (CLI)

-metric_irdrop 'place 0 0.05'

Example (API)

asic.set('metric', 'irdrop', 0.05, step='place', index=0)

1.3.2.8.17. leakagepower#

Metric tracking the leakage power with rails active but without any dynamic switching activity of the design specified on a per step and index basis. Power metric depend heavily on the method being used for extraction: dynamic vs static, workload specification (vcd vs saif), power models, process/voltage/temperature. The power leakagepower metric tries to capture the data that would usually be reflected inside a datasheet given the appropriate footnote conditions.

Description

Metric: leakagepower

Type

float

Scope

job

Unit

mw

Default Value

None

CLI Switch

  • -metric_leakagepower 'step index <float>'

Example (CLI)

-metric_leakagepower 'place 0 0.01'

Example (API)

asic.set('metric', 'leakagepower', 0.01, step='place', index=0)

1.3.2.8.18. logicdepth#

Metric tracking the logic depth of the design. This is determined by the number of logic gates between the start of the critital timing path to the end of the path.

Description

Metric: logic depth

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_logicdepth 'step index <int>'

Example (CLI)

-metric_logicdepth 'place 0 8'

Example (API)

asic.set('metric', 'logicdepth', 8, step='place', index=0)

1.3.2.8.19. macroarea#

Metric tracking the total macro cell area occupied by the design.

Description

Metric: macroarea

Type

float

Scope

job

Unit

um^2

Default Value

None

CLI Switch

  • -metric_macroarea 'step index <float>'

Example (CLI)

-metric_macroarea 'place 0 100.00'

Example (API)

asic.set('metric', 'macroarea', 100.00, step='place', index=0)

1.3.2.8.20. macros#

Metric tracking the total number of macros in the design on a per step and index basis.

Description

Metric: macros

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_macros 'step index <int>'

Example (CLI)

-metric_macros 'place 0 100'

Example (API)

asic.set('metric', 'macros', 50, step='place', index=0)

1.3.2.8.21. memory#

Metric tracking total peak program memory footprint on a per step and index basis.

Description

Metric: memory

Type

float

Scope

job

Unit

B

Default Value

None

CLI Switch

  • -metric_memory 'step index <float>'

Example (CLI)

-metric_memory 'dfm 0 10e9'

Example (API)

project.set('metric', 'memory', 10e9, step='dfm', index=0)

1.3.2.8.22. nets#

Metric tracking the total number of nets in the design on a per step and index basis.

Description

Metric: nets

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_nets 'step index <int>'

Example (CLI)

-metric_nets 'place 0 100'

Example (API)

asic.set('metric', 'nets', 50, step='place', index=0)

1.3.2.8.23. overflow#

Metric tracking the total number of overflow tracks for the routing on per step and index basis. Any non-zero number suggests an over congested design. To analyze where the congestion is occurring inspect the router log files for detailed per metal overflow reporting and open up the design to find routing hotspots.

Description

Metric: overflow

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_overflow 'step index <int>'

Example (CLI)

-metric_overflow 'place 0 0'

Example (API)

asic.set('metric', 'overflow', 50, step='place', index=0)

1.3.2.8.24. padcellarea#

Metric tracking the total io pad cell area occupied by the design.

Description

Metric: padcellarea

Type

float

Scope

job

Unit

um^2

Default Value

None

CLI Switch

  • -metric_padcellarea 'step index <float>'

Example (CLI)

-metric_padcellarea 'place 0 100.00'

Example (API)

asic.set('metric', 'padcellarea', 100.00, step='place', index=0)

1.3.2.8.25. peakpower#

Metric tracking the worst case total peak power of the design specified on a per step and index basis. Power metric depend heavily on the method being used for extraction: dynamic vs static, workload specification (vcd vs saif), power models, process/voltage/temperature. The power peakpower metric tries to capture the data that would usually be reflected inside a datasheet given the appropriate footnote conditions.

Description

Metric: peakpower

Type

float

Scope

job

Unit

mw

Default Value

None

CLI Switch

  • -metric_peakpower 'step index <float>'

Example (CLI)

-metric_peakpower 'place 0 0.01'

Example (API)

asic.set('metric', 'peakpower', 0.01, step='place', index=0)

1.3.2.8.26. pins#

Metric tracking the total number of pins in the design on a per step and index basis.

Description

Metric: pins

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_pins 'step index <int>'

Example (CLI)

-metric_pins 'place 0 100'

Example (API)

asic.set('metric', 'pins', 50, step='place', index=0)

1.3.2.8.27. registers#

Metric tracking the total number of register instances in the design on a per step and index basis.

Description

Metric: registers

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_registers 'step index <int>'

Example (CLI)

-metric_registers 'place 0 100'

Example (API)

asic.set('metric', 'registers', 50, step='place', index=0)

1.3.2.8.28. setuppaths#

Metric tracking the total number of timing paths violating setup constraints.

Description

Metric: setuppaths

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_setuppaths 'step index <int>'

Example (CLI)

-metric_setuppaths 'place 0 10'

Example (API)

asic.set('metric', 'setuppaths', 10, step='place', index=0)

1.3.2.8.29. setupskew#

Metric tracking the setup clock skew on a per step and index basis.

Description

Metric: setupskew

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setupskew 'step index <float>'

Example (CLI)

-metric_setupskew 'place 0 0.01'

Example (API)

asic.set('metric', 'setupskew', 0.01, step='place', index=0)

1.3.2.8.30. setupslack#

Metric tracking the worst setup slack (positive or negative) on a per step and index basis.

Description

Metric: setupslack

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setupslack 'step index <float>'

Example (CLI)

-metric_setupslack 'place 0 0.01'

Example (API)

asic.set('metric', 'setupslack', 0.01, step='place', index=0)

1.3.2.8.31. setuptns#

Metric tracking the total negative setup slack (TNS) on a per step and index basis.

Description

Metric: setuptns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setuptns 'step index <float>'

Example (CLI)

-metric_setuptns 'place 0 0.01'

Example (API)

asic.set('metric', 'setuptns', 0.01, step='place', index=0)

1.3.2.8.32. setupwns#

Metric tracking the worst negative setup slack (positive values truncated to zero) on a per step and index basis.

Description

Metric: setupwns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setupwns 'step index <float>'

Example (CLI)

-metric_setupwns 'place 0 0.01'

Example (API)

asic.set('metric', 'setupwns', 0.01, step='place', index=0)

1.3.2.8.33. stdcellarea#

Metric tracking the total standard cell area occupied by the design.

Description

Metric: stdcellarea

Type

float

Scope

job

Unit

um^2

Default Value

None

CLI Switch

  • -metric_stdcellarea 'step index <float>'

Example (CLI)

-metric_stdcellarea 'place 0 100.00'

Example (API)

asic.set('metric', 'stdcellarea', 100.00, step='place', index=0)

1.3.2.8.34. tasktime#

Metric tracking the total amount of time spent on a task from beginning to end, including data transfers and pre/post processing.

Description

Metric: tasktime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_tasktime 'step index <float>'

Example (CLI)

-metric_tasktime 'dfm 0 10.0'

Example (API)

project.set('metric', 'tasktime', 10.0, step='dfm', index=0)

1.3.2.8.35. totalarea#

Metric tracking the total physical die area occupied by the design.

Description

Metric: totalarea

Type

float

Scope

job

Unit

um^2

Default Value

None

CLI Switch

  • -metric_totalarea 'step index <float>'

Example (CLI)

-metric_totalarea 'place 0 100.00'

Example (API)

asic.set('metric', 'totalarea', 100.00, step='place', index=0)

1.3.2.8.36. totaltime#

Metric tracking the total amount of time spent from the beginning of the run up to and including the current step and index.

Description

Metric: totaltime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_totaltime 'step index <float>'

Example (CLI)

-metric_totaltime 'dfm 0 10.0'

Example (API)

project.set('metric', 'totaltime', 10.0, step='dfm', index=0)

1.3.2.8.37. transistors#

Metric tracking the total number of transistors in the design on a per step and index basis.

Description

Metric: transistors

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_transistors 'step index <int>'

Example (CLI)

-metric_transistors 'place 0 100'

Example (API)

asic.set('metric', 'transistors', 50, step='place', index=0)

1.3.2.8.38. unconstrained#

Metric tracking the total number of unconstrained timing paths on a per step and index basis.

Description

Metric: total unconstrained

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_unconstrained 'step index <int>'

Example (CLI)

-metric_unconstrained 'dfm 0 0'

Example (API)

asic.set('metric', 'unconstrained', 0, step='dfm', index=0)

1.3.2.8.39. utilization#

Metric tracking the area utilization of the design calculated as 100 * (cellarea/totalarea).

Description

Metric: area utilization

Type

float

Scope

job

Unit

%

Default Value

None

CLI Switch

  • -metric_utilization 'step index <float>'

Example (CLI)

-metric_utilization 'place 0 50.00'

Example (API)

asic.set('metric', 'utilization', 50.00, step='place', index=0)

1.3.2.8.40. vias#

Metric tracking the total number of vias in the design on a per step and index basis.

Description

Metric: vias

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_vias 'step index <int>'

Example (CLI)

-metric_vias 'place 0 100'

Example (API)

asic.set('metric', 'vias', 50, step='place', index=0)

1.3.2.8.41. warnings#

Metric tracking the total number of warnings on a per step and index basis.

Description

Metric: total warnings

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_warnings 'step index <int>'

Example (CLI)

-metric_warnings 'dfm 0 0'

Example (API)

project.set('metric', 'warnings', 0, step='dfm', index=0)

1.3.2.8.42. wirelength#

Metric tracking the total wirelength of the design on a per step and index basis.

Description

Metric: wirelength

Type

float

Scope

job

Unit

um

Default Value

None

CLI Switch

  • -metric_wirelength 'step index <float>'

Example (CLI)

-metric_wirelength 'place 0 100.0'

Example (API)

asic.set('metric', 'wirelength', 50.0, step='place', index=0)

1.3.2.9. option#

Class OptionSchema

1.3.2.9.1. alias#

List of filesets to alias during a run. When an alias is specific it will be used instead of the source fileset. It is useful when you want to substitute a fileset from one library with a fileset from another, without changing the original design’s code. For example, you might use it to swap in a different version of an IP block or a specific test environment.

Description

Option: Fileset alias mapping

Type

[(str,str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))

1.3.2.9.2. autoissue#

Enables automatic generation of testcases if the specific node fails

Description

Option: Enables automatic generation of testcases

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -autoissue <bool>

Example (API)

option.set('autoissue', True)

1.3.2.9.3. breakpoint#

Set a breakpoint on specific steps. If the step is a TCL based tool, then the breakpoints stops the flow inside the EDA tool. If the step is a command line tool, then the flow drops into a Python interpreter.

Description

Option: breakpoint list

Type

bool

Scope

job

Default Value

False

CLI Switch

  • -breakpoint <bool>

Example (CLI)

-breakpoint true

Example (API)

option.set('breakpoint', True)

1.3.2.9.4. builddir#

The default build directory is in the local ‘./build’ where SC was executed. This can be used to set an alternate compilation directory path.

Description

Option: build directory

Type

dir

Per step/index

never

Scope

global

Default Value

build

CLI Switch

  • -builddir <dir>

Example (CLI)

-builddir ./build_the_future

Example (API)

option.set('builddir', './build_the_future')

1.3.2.9.5. cachedir#

Filepath to cache used for package data sources. If the cache parameter is empty, “.sc/cache” directory in the user’s home directory will be used.

Description

Option: user cache directory

Type

dir

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -cachedir <dir>

Example (CLI)

-cachedir /home/user/.sc/cache

Example (API)

option.set('cachedir', '/home/user/.sc/cache')

1.3.2.9.6. clean#

Run a job from the start and do not use any of the previous job. If [option,jobincr] is True, the old job is preserved and a new job number is assigned.

Description

Option: cleanup previous job

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -clean <bool>

Example (CLI)

-clean

Example (API)

option.set('clean', True)

1.3.2.9.7. continue#

Attempt to continue even when errors are encountered in the SC implementation. The default behavior is to quit executing the flow if a task ends and the errors metric is greater than 0. Note that the flow will always cease executing if the tool returns a nonzero status code.

Description

Option: continue-on-error

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -continue <bool>

Example (CLI)

-continue

Example (API)

option.set('continue', True)

1.3.2.9.8. credentials#

Filepath to credentials used for remote processing. If the credentials parameter is empty, the remote processing client program tries to access the “.sc/credentials” file in the user’s home directory. The file supports the following fields:

address=<server address> port=<server port> (optional) username=<user id> (optional) password=<password / key used for authentication> (optional)

Description

Option: user credentials file

Type

file

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -credentials <file>

Example (CLI)

-credentials /home/user/.sc/credentials

Example (API)

option.set('credentials', '/home/user/.sc/credentials')

1.3.2.9.9. design#

Name of the top level library

Description

Option: Design library name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -design <str>

Example (CLI)

-design hello_world

Example (API)

option.set('design', 'hello_world')

1.3.2.9.10. env#

Certain tools and reference flows require global environment variables to be set. These variables can be managed externally or specified through the env variable.

Description

Option: environment variables

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('env', 'PDK_HOME', '/disk/mypdk')

1.3.2.9.11. fileset#

List of filesets to use from the selected design library

Description

Option: Selected design filesets

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('fileset', 'rtl')

1.3.2.9.12. flow#

Sets the flow for the current run. The flow name must match up with a ‘flow’ in the flowgraph

Description

Option: flow target

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flow <str>

Example (CLI)

-flow asicflow

Example (API)

option.set('flow', 'asicflow')

1.3.2.9.13. from#

Inclusive list of steps to start execution from. The default is to start at all entry steps in the flow graph.

Description

Option: starting step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -from <str>

Example (CLI)

-from 'import'

Example (API)

option.set('from', 'import')

1.3.2.9.14. hash#

Enables hashing of all inputs and outputs during compilation. The hash values are stored in the hashvalue field of the individual parameters.

Description

Option: file hashing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -hash <bool>

Example (CLI)

-hash

Example (API)

option.set('hash', True)

1.3.2.9.15. jobincr#

Forces an auto-update of the jobname parameter if a directory matching the jobname is found in the build directory. If the jobname does not include a trailing digit, then the number ‘1’ is added to the jobname before updating the jobname parameter.

Description

Option: autoincrement jobname

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -jobincr <bool>

Example (CLI)

-jobincr

Example (API)

option.set('jobincr', True)

1.3.2.9.16. jobname#

Jobname during invocation of Project.run(). The jobname combined with a defined director structure (<dir>/<design>/<jobname>/<step>/<index>) enables multiple levels of transparent job, step, and index introspection.

Description

Option: job name

Type

str

Per step/index

never

Scope

global

Default Value

job0

CLI Switch

  • -jobname <str>

Example (CLI)

-jobname may1

Example (API)

option.set('jobname', 'may1')

1.3.2.9.17. nice#

Sets the type of execution priority of each individual flowgraph steps. If the parameter is undefined, nice will not be used. For more information see Unix ‘nice’.

Description

Option: tool scheduling priority

Type

int

Scope

global

Default Value

None

CLI Switch

  • -nice <int>

Example (CLI)

-nice 5

Example (API)

option.set('nice', 5)

1.3.2.9.18. nodashboard#

Disables the dashboard during execution

Description

Option: Disables the dashboard

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodashboard <bool>

Example (API)

option.set('nodashboard', True)

1.3.2.9.19. nodisplay#

This flag prevents SiliconCompiler from opening GUI windows.

Description

Option: headless execution

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodisplay <bool>

Example (CLI)

-nodisplay

Example (API)

option.set('nodisplay', True)

1.3.2.9.20. novercheck#

Disables strict version checking on all invoked tools if True. The list of supported version numbers is defined in the [tool,<tool>,task,<task>,version].

Description

Option: disable version checking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -novercheck <bool>

Example (CLI)

-novercheck

Example (API)

option.set('novercheck', True)

1.3.2.9.21. optmode#

The compiler has modes to prioritize run time and ppa. Modes include.

(O0) = Exploration mode for debugging setup (O1) = Higher effort and better PPA than O0 (O2) = Higher effort and better PPA than O1 (O3) = Signoff quality. Better PPA and higher run times than O2 (O4-O98) = Reserved (compiler/target dependent) (O99) = Experimental highest possible effort, may be unstable

Description

Option: optimization mode

Type

int

Scope

global

Default Value

0

CLI Switch

  • -O<str>
  • -optmode <str>

Example (CLI)

-O3

-optmode 3

Example (API)

option.set('optmode', 'O3')

1.3.2.9.22. prune#

List of starting nodes for branches to be pruned. The default is to not prune any nodes/branches.

Description

Option: flowgraph pruning

Type

[(str,str)]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -prune 'node <(str,str)>'

Example (CLI)

-prune (syn,0)

Example (API)

option.set('prune', ('syn', '0'))

1.3.2.9.23. quiet#

The -quiet option forces all steps to print to a log file. This can be useful with Modern EDA tools which print significant content to the screen.

Description

Option: quiet execution

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -quiet <bool>

Example (CLI)

-quiet

Example (API)

option.set('quiet', True)

1.3.2.9.24. remote#

Sends job for remote processing if set to true. The remote option requires a credentials file to be placed in the home directory. Fore more information, see the credentials parameter.

Description

Option: enable remote processing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -remote <bool>

Example (CLI)

-remote

Example (API)

option.set('remote', True)

1.3.2.9.25. scheduler#

Class SchedulerSchema

1.3.2.9.25.1. cores#

Specifies the number CPU cores required to run the job. For the slurm scheduler, this translates to the ‘-c’ switch. For more information, see the job scheduler documentation

Description

Option: Scheduler core constraint

Type

int

Scope

global

Default Value

None

CLI Switch

  • -cores <int>

Example (CLI)

-cores 48

Example (API)

option.set('cores', 48)

1.3.2.9.25.2. defer#

Defer initiation of job until the specified time. The parameter is pass through string for remote job scheduler such as slurm. For more information about the exact format specification, see the job scheduler documentation. Examples of valid slurm specific values include: now+1hour, 16:00, 010-01-20T12:34:00. For more information, see the job scheduler documentation.

Description

Option: scheduler start time

Type

str

Scope

global

Default Value

None

CLI Switch

  • -defer <str>

Example (CLI)

-defer 16:00

Example (API)

option.set('defer', '16:00')

1.3.2.9.25.3. maxnodes#

Maximum number of concurrent nodes to run in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum concurrent nodes

Type

int

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -maxnodes <int>

Example (CLI)

-maxnodes 4

Example (API)

option.set('maxnodes', 4)

1.3.2.9.25.4. maxthreads#

Maximum number of threads for each task in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum number of threads to assign a task

Type

int

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('maxthreads', 4)

1.3.2.9.25.5. memory#

Specifies the amount of memory required to run the job, specified in MB. For the slurm scheduler, this translates to the ‘–mem’ switch. For more information, see the job scheduler documentation

Description

Option: scheduler memory constraint

Type

int

Scope

global

Unit

MB

Default Value

None

CLI Switch

  • -memory <int>

Example (CLI)

-memory 8000

Example (API)

option.set('memory', 8000)

1.3.2.9.25.6. msgcontact#

List of email addresses to message on a [option,scheduler,msgevent]. Support for email messages relies on job scheduler daemon support. For more information, see the job scheduler documentation.

Description

Option: message contact

Type

{str}

Scope

global

Default Value

[]

CLI Switch

  • -msgcontact <str>

Example (CLI)

-msgcontact 'wile.e.coyote@acme.com'

Example (API)

option.set('msgcontact', 'wiley@acme.com')

1.3.2.9.25.7. msgevent#

Directs job scheduler to send a message to the user in [option,scheduler,msgcontact] when certain events occur during a task.

  • fail: send an email on failures

  • timeout: send an email on timeouts

  • begin: send an email at the start of a node task

  • end: send an email at the end of a node task

  • summary: send a summary email at the end of the run

  • all: send an email on any event

Description

Option: message event trigger

Type

[enum]

Allowed values

  • all

  • begin

  • end

  • fail

  • summary

  • timeout

Scope

global

Default Value

[]

CLI Switch

  • -msgevent <str>

Example (CLI)

-msgevent all

Example (API)

option.set('msgevent', 'all')

1.3.2.9.25.8. name#

Sets the type of job scheduler to be used for each individual flowgraph steps. If the parameter is undefined, the steps are executed on the same machine that the SC was launched on. If ‘slurm’ is used, the host running the ‘sc’ command must be running a ‘slurmctld’ daemon managing a Slurm cluster. Additionally, the build directory ([option,builddir]) must be located in shared storage which can be accessed by all hosts in the cluster.

Description

Option: scheduler platform

Type

enum

Allowed values

  • docker

  • lsf

  • sge

  • slurm

Scope

global

Default Value

None

CLI Switch

  • -scheduler <str>

Example (CLI)

-scheduler slurm

Example (API)

option.set('name', 'slurm')

1.3.2.9.25.9. options#

Advanced/export options passed through unchanged to the job scheduler as-is. (The user specified options must be compatible with the rest of the scheduler parameters entered.(memory etc). For more information, see the job scheduler documentation.

Description

Option: scheduler arguments

Type

[str]

Scope

global

Default Value

[]

CLI Switch

  • -scheduler_options <str>

Example (CLI)

-scheduler_options "--pty"

Example (API)

option.set('options', "--pty")

1.3.2.9.25.10. queue#

Send the job to the specified queue. With slurm, this translates to ‘partition’. The queue name must match the name of an existing job scheduler queue. For more information, see the job scheduler documentation

Description

Option: scheduler queue

Type

str

Scope

global

Default Value

None

CLI Switch

  • -queue <str>

Example (CLI)

-queue nightrun

Example (API)

option.set('queue', 'nightrun')

1.3.2.9.26. timeout#

Timeout value in seconds. The timeout value is compared against the wall time tracked by the SC runtime to determine if an operation should continue.

Description

Option: timeout value

Type

float

Scope

global

Unit

s

Default Value

None

CLI Switch

  • -timeout <float>

Example (CLI)

-timeout 3600

Example (API)

option.set('timeout', 3600)

1.3.2.9.27. to#

Inclusive list of steps to end execution with. The default is to go to all exit steps in the flow graph.

Description

Option: ending step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -to <str>

Example (CLI)

-to 'syn'

Example (API)

option.set('to', 'syn')

1.3.2.9.28. track#

Turns on tracking of all ‘record’ parameters during each task, otherwise only tool and runtime information will be recorded. Tracking will result in potentially sensitive data being recorded in the manifest so only turn on this feature if you have control of the final manifest.

Description

Option: enable provenance tracking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -track <bool>

Example (CLI)

-track

Example (API)

option.set('track', True)

1.3.2.10. record#

Class RecordSchema

1.3.2.10.1. arch#

Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)

Description

Record: hardware architecture

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_arch 'step index <str>'

Example (CLI)

-record_arch 'dfm 0 x86_64'

Example (API)

schema.set('record', 'arch', 'x86_64', step='dfm', index=0)

1.3.2.10.2. distro#

Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)

Description

Record: distro name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_distro 'step index <str>'

Example (CLI)

-record_distro 'dfm 0 ubuntu'

Example (API)

schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)

1.3.2.10.3. endtime#

Record tracking the end time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: end time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_endtime 'step index <str>'

Example (CLI)

-record_endtime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'endtime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.2.10.4. inputnode#

List of selected inputs for the current step/index specified as (in_step, in_index) tuple.

Description

Record: node inputs

Type

[(str,str)]

Scope

job

Default Value

[]

CLI Switch

  • -record_inputnode 'step index <(str,str)>'

Example (CLI)

-record_inputnode 'cts 0 (place,42)'

Example (API)

schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')

1.3.2.10.5. ipaddr#

Record tracking the IP address per step and index basis.

Description

Record: IP address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_ipaddr 'step index <str>'

Example (CLI)

-record_ipaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)

1.3.2.10.6. kernelversion#

Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction between os kernels and os distributions.

Description

Record: O/S kernel version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_kernelversion 'step index <str>'

Example (CLI)

-record_kernelversion 'dfm 0 5.11.0-34-generic'

Example (API)

schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)

1.3.2.10.7. macaddr#

Record tracking the MAC address per step and index basis.

Description

Record: MAC address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_macaddr 'step index <str>'

Example (CLI)

-record_macaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)

1.3.2.10.8. machine#

Record tracking the machine name per step and index basis. (myhost, localhost, …

Description

Record: machine name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_machine 'step index <str>'

Example (CLI)

-record_machine 'dfm 0 carbon'

Example (API)

schema.set('record', 'machine', 'carbon', step='dfm', index=0)

1.3.2.10.9. osversion#

Record tracking the O/S version per step and index basis. Since there is not standard version system for operating systems, extracting information from is platform dependent. For Linux based operating systems, the ‘osversion’ is the version of the distro.

Description

Record: O/S version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_osversion 'step index <str>'

Example (CLI)

-record_osversion 'dfm 0 20.04.1-Ubuntu'

Example (API)

schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)

1.3.2.10.10. platform#

Record tracking the platform name per step and index basis. (linux, windows, freebsd)

Description

Record: platform name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_platform 'step index <str>'

Example (CLI)

-record_platform 'dfm 0 linux'

Example (API)

schema.set('record', 'platform', 'linux', step='dfm', index=0)

1.3.2.10.11. publickey#

Record tracking the public key per step and index basis.

Description

Record: public key

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_publickey 'step index <str>'

Example (CLI)

-record_publickey 'dfm 0 <key>'

Example (API)

schema.set('record', 'publickey', '<key>', step='dfm', index=0)

1.3.2.10.12. pythonpackage#

Record tracking for the python packages installed.

Description

Record: python packages

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -record_pythonpackage '<str>'

Example (CLI)

-record_pythonpackage 'siliconcompiler==0.28.0'

Example (API)

schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')

1.3.2.10.13. pythonversion#

Record tracking the Python version per step and index basis. Version of python used to run this task.

Description

Record: Python version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_pythonversion 'step index <str>'

Example (CLI)

-record_pythonversion 'dfm 0 3.12.3'

Example (API)

schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)

1.3.2.10.14. region#

Record tracking the cloud region per step and index basis. Recommended naming methodology:

  • local: node is the local machine

  • onprem: node in on-premises IT infrastructure

  • public: generic public cloud

  • govcloud: generic US government cloud

  • <region>: cloud and entity specific region string name

Description

Record: cloud region

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_region 'step index <str>'

Example (CLI)

-record_region 'dfm 0 "US Gov Boston"'

Example (API)

schema.set('record', 'region', '"US Gov Boston"', step='dfm', index=0)

1.3.2.10.15. remoteid#

Record tracking the job ID for a remote run.

Description

Record: remote job ID

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -record_remoteid '<str>'

Example (CLI)

-record_remoteid '0123456789abcdeffedcba9876543210'

Example (API)

schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')

1.3.2.10.16. scversion#

Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.

Description

Record: software version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_scversion 'step index <str>'

Example (CLI)

-record_scversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'scversion', '1.0', step='dfm', index=0)

1.3.2.10.17. starttime#

Record tracking the start time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: start time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_starttime 'step index <str>'

Example (CLI)

-record_starttime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'starttime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.2.10.18. status#

Record tracking for the status of a node.

Description

Record: node execution status

Type

enum

Allowed values

  • error

  • pending

  • queued

  • running

  • skipped

  • success

  • timeout

Scope

job

Default Value

None

CLI Switch

  • -record_status 'step index <str>'

Example (CLI)

-record_status 'syn 0 success'

Example (API)

schema.set('record', 'status', 'success', step='syn', index='0')

1.3.2.10.19. toolargs#

Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.

Description

Record: tool CLI arguments

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolargs 'step index <str>'

Example (CLI)

-record_toolargs 'dfm 0 "-I include/ foo.v"'

Example (API)

schema.set('record', 'toolargs', '"-I include/ foo.v"', step='dfm', index=0)

1.3.2.10.20. toolexitcode#

Record tracking the tool exit code per step and index basis.

Description

Record: tool exit code

Type

int

Scope

job

Default Value

None

CLI Switch

  • -record_toolexitcode 'step index <int>'

Example (CLI)

-record_toolexitcode 'dfm 0 0'

Example (API)

schema.set('record', 'toolexitcode', 0, step='dfm', index=0)

1.3.2.10.21. toolpath#

Record tracking the tool path per step and index basis. Full path to tool executable used to run this task.

Description

Record: tool path

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolpath 'step index <str>'

Example (CLI)

-record_toolpath 'dfm 0 /usr/bin/openroad'

Example (API)

schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)

1.3.2.10.22. toolversion#

Record tracking the tool version per step and index basis. The tool version captured corresponds to the ‘tool’ parameter within the ‘tool’ dictionary.

Description

Record: tool version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolversion 'step index <str>'

Example (CLI)

-record_toolversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'toolversion', '1.0', step='dfm', index=0)

1.3.2.10.23. userid#

Record tracking the userid per step and index basis.

Description

Record: userid

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_userid 'step index <str>'

Example (CLI)

-record_userid 'dfm 0 wiley'

Example (API)

schema.set('record', 'userid', 'wiley', step='dfm', index=0)

1.3.2.11. schemaversion#

Description

Schema version number

Type

str

Per step/index

never

Scope

global

Default Value

0.54.0

Example (API)

project.get('schemaversion')

1.3.2.12. tool#

1.3.2.12.1. task#

Class Task

1.3.2.12.1.1. dataroot#
1.3.2.12.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.3.2.12.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.3.2.12.1.2. env#

Environment variables to set for individual tasks. Keys and values should be set in accordance with the task’s documentation. Most tasks do not require extra environment variables to function.

Description

Task: environment variables

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_task_env 'tool task env <str>'

Example (CLI)

-tool_task_env 'openroad cts MYVAR 42'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')

1.3.2.12.1.3. exe#

Tool executable name.

Description

Tool: executable name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_exe 'tool <str>'

Example (CLI)

-tool_exe 'openroad openroad'

Example (API)

task.set('tool', 'openroad', 'exe', 'openroad')

1.3.2.12.1.4. format#

File format for tool manifest handoff.

Description

Tool: file format

Type

enum

Allowed values

  • json

  • tcl

  • yaml

Scope

job

Default Value

None

CLI Switch

  • -tool_format 'tool <str>'

Example (CLI)

-tool_format 'yosys tcl'

Example (API)

task.set('tool', 'yosys', 'format', 'tcl')

1.3.2.12.1.5. input#

List of data files to be copied from previous flowgraph steps ‘output’ directory. The list of steps to copy files from is defined by the list defined by the dictionary key [flowgraph,<flow>,<step>,<index>,input]. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: input files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_input 'tool task <file>'

Example (CLI)

-tool_task_input 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')

1.3.2.12.1.6. licenseserver#

Defines a set of tool-specific environment variables used by the executable that depend on license key servers to control access. For multiple servers, separate servers with a colon. The named license variables are read at runtime (Task.run()) and the environment variables are set.

Description

Tool: license servers

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_licenseserver 'name key <str>'

Example (CLI)

-tool_licenseserver 'atask ACME_LICENSE 1700@server'

Example (API)

task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')

1.3.2.12.1.7. option#

List of command line options for the task executable, specified on a per task and per step basis. Options must not include spaces. For multiple argument options, each option is a separate list element.

Description

Task: executable options

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_option 'tool task <str>'

Example (CLI)

-tool_task_option 'openroad cts -no_init'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')

1.3.2.12.1.8. output#

List of data files written to the ‘output’ directory of the tool/task/step/index used in the keypath. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: output files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_output 'tool task <file>'

Example (CLI)

-tool_task_output 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')

1.3.2.12.1.9. path#

File system path to tool executable. The path is prepended to the system PATH environment variable for batch and interactive runs. The path parameter can be left blank if the [tool,<tool>,task,<task>,exe] is already in the environment search path.

Description

Tool: executable path

Type

dir

Scope

job

Default Value

None

CLI Switch

  • -tool_path 'tool <dir>'

Example (CLI)

-tool_path 'openroad /usr/local/bin'

Example (API)

task.set('tool', 'openroad', 'path', '/usr/local/bin')

1.3.2.12.1.10. postscript#

Path to a user supplied script to execute after the main execution stage of the step but before the design is saved. Exact entry point depends on the step and main script being executed. An example of a postscript entry point would be immediately after global placement.

Description

Task: post-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_postscript 'tool task <file>'

Example (CLI)

-tool_task_postscript 'yosys syn syn_post.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')

1.3.2.12.1.11. prescript#

Path to a user supplied script to execute after reading in the design but before the main execution stage of the step. Exact entry point depends on the step and main script being executed. An example of a prescript entry point would be immediately before global placement.

Description

Task: pre-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_prescript 'tool task <file>'

Example (CLI)

-tool_task_prescript 'yosys syn syn_pre.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')

1.3.2.12.1.12. refdir#

Path to directories containing reference flow scripts, specified on a per step and index basis.

Description

Task: script directory

Type

[dir]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_refdir 'tool task <dir>'

Example (CLI)

-tool_task_refdir 'yosys syn ./myref'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')

1.3.2.12.1.13. regex#

A list of piped together grep commands. Each entry represents a set of command line arguments for grep including the regex pattern to match. Starting with the first list entry, each grep output is piped into the following grep command in the list. Supported grep options include -v and -e. Patterns starting with “-” should be directly preceded by the -e option. The following example illustrates the concept.

UNIX grep:

$ grep WARNING place.log | grep -v "bbox" > place.warnings

SiliconCompiler:

task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',
         ["WARNING", "-v bbox"])

The “errors” and “warnings” suffixes are special cases. When set, the number of matches found for these regexes will be added to the errors and warnings metrics for the task, respectively. This will also cause the logfile to be added to the [tool,<tool>,task,<task>,report,...] parameter for those metrics, if not already present.

Description

Task: regex filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_regex 'tool task suffix <str>'

Example (CLI)

-tool_task_regex 'openroad place errors "'-v ERROR'"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')

1.3.2.12.1.14. report#

List of report files associated with a specific ‘metric’. The file path specified is relative to the run directory of the current task.

Description

Task: metric report files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_report 'tool task metric <file>'

Example (CLI)

-tool_task_report 'openroad place holdtns "place 0 place.log"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')

1.3.2.12.1.15. require#

List of keypaths to required task parameters. The list is used by Project.check_manifest() to verify that all parameters have been set up before step execution begins.

Description

Task: parameter requirements

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_require 'tool task <str>'

Example (CLI)

-tool_task_require 'openroad cts design'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')

1.3.2.12.1.16. sbom#

Paths to software bill of material (SBOM) document file of the tool specified on a per version basis. The SBOM includes critical package information about the tool including the list of included components, licenses, and copyright. The SBOM file is generally provided as in a a standardized open data format such as SPDX.

Description

Tool: software BOM

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_sbom 'tool version <file>'

Example (CLI)

-tool_sbom 'yosys 1.0.1 ys_sbom.json'

Example (API)

task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')

1.3.2.12.1.17. script#

Path to the entry script called by the executable specified on a per task and per step basis.

Description

Task: entry script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_script 'tool task <file>'

Example (CLI)

-tool_task_script 'yosys syn syn.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')

1.3.2.12.1.18. stderr#
1.3.2.12.1.18.1. destination#

Defines where to direct the output generated over stderr. Supported options are: none: the stream generated to STDERR is ignored log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>

Description

Task: destination for stderr

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_destination 'tool task <str>'

Example (CLI)

-tool_task_stderr_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')

1.3.2.12.1.18.2. suffix#

Specifies the file extension for the content redirected from stderr.

Description

Task: file suffix for redirected stderr

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_suffix 'tool task <str>'

Example (CLI)

-tool_task_stderr_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')

1.3.2.12.1.19. stdout#
1.3.2.12.1.19.1. destination#

Defines where to direct the output generated over stdout. Supported options are: none: the stream generated to STDOUT is ignored. log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>.

Description

Task: destination for stdout

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_destination 'tool task <str>'

Example (CLI)

-tool_task_stdout_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')

1.3.2.12.1.19.2. suffix#

Specifies the file extension for the content redirected from stdout.

Description

Task: file suffix for redirected stdout

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_suffix 'tool task <str>'

Example (CLI)

-tool_task_stdout_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')

1.3.2.12.1.20. threads#

Thread parallelism to use for execution specified on a per task and per step basis. If not specified, SC queries the operating system and sets the threads based on the maximum thread count supported by the hardware.

Description

Task: thread parallelism

Type

int

Scope

job

Default Value

None

CLI Switch

  • -tool_task_threads 'tool task <int>'

Example (CLI)

-tool_task_threads 'magic drc 64'

Example (API)

task.set('tool', 'magic', 'task', 'drc', 'threads', '64')

1.3.2.12.1.21. vendor#

Name of the tool vendor. Parameter can be used to set vendor specific technology variables in the PDK and libraries. For open source projects, the project name should be used in place of vendor.

Description

Tool: vendor

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -tool_vendor 'tool <str>'

Example (CLI)

-tool_vendor 'yosys yosys'

Example (API)

task.set('tool', 'yosys', 'vendor', 'yosys')

1.3.2.12.1.22. version#

List of acceptable versions of the tool executable to be used. Each entry in this list must be a version specifier as described by Python PEP-440. During task execution, the tool is called with the ‘vswitch’ to check the runtime executable version. If the version of the system executable is not allowed by any of the specifiers in ‘version’, then the job is halted pre-execution. For backwards compatibility, entries that do not conform to the standard will be interpreted as a version with an ‘==’ specifier. This check can be disabled by setting [option,novercheck] to True.

Description

Tool: version

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_version 'tool <str>'

Example (CLI)

-tool_version 'openroad >=v2.0'

Example (API)

task.set('tool', 'openroad', 'version', '>=v2.0')

1.3.2.12.1.23. vswitch#

Command line switch to use with executable used to print out the version number. Common switches include -v, -version, --version. Some tools may require extra flags to run in batch mode.

Description

Tool: executable version switch

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_vswitch 'tool <str>'

Example (CLI)

-tool_vswitch 'openroad -version'

Example (API)

task.set('tool', 'openroad', 'vswitch', '-version')

1.3.2.12.1.24. warningoff#

A list of tool warnings for which printing should be suppressed. Generally this is done on a per design basis after review has determined that warning can be safely ignored The code for turning off warnings can be found in the specific task reference manual.

Description

Task: warning filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_warningoff 'tool task <str>'

Example (CLI)

-tool_task_warningoff 'verilator lint COMBDLY'

Example (API)

task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')

1.3.3. FPGA#

A class for managing FPGA projects, inheriting from the base Project class.

This class extends the base project with FPGA-specific schema for constraints, metrics, and device selection. It provides methods to configure and validate

an FPGA design project.

File: fpga.py

Class FPGA

1.3.3.1. arg#

1.3.3.1.1. index#

Description

ARG: index argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_index <str>

Example (CLI)

-arg_index 0

Example (API)

project.set('arg', 'index', '0')

1.3.3.1.2. step#

Description

ARG: step argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_step <str>

Example (CLI)

-arg_step 'route'

Example (API)

project.set('arg', 'step', 'route')

1.3.3.2. checklist#

Class Checklist

Class Criteria

1.3.3.2.1. criteria#

Simple list of signoff criteria for checklist item which must all be met for signoff. Each signoff criteria consists of a metric, a relational operator, and a value in the form ‘metric op value’.

Description

Checklist: item criteria

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_criteria 'standard item <str>'

Example (CLI)

-checklist_criteria 'ISO D000 errors==0'

Example (API)

check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')

1.3.3.2.2. dataformat#

Free text description of the type of data files acceptable as checklist signoff validation.

Description

Checklist: item data format

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_dataformat 'standard item <str>'

Example (CLI)

-checklist_dataformat 'ISO D000 README'

Example (API)

check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')

1.3.3.2.3. description#

A short one line description of the checklist item.

Description

Checklist: item description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_description 'standard item <str>'

Example (CLI)

-checklist_description 'ISO D000 A-DESCRIPTION'

Example (API)

check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')

1.3.3.2.4. ok#

Boolean check mark for the checklist item. A value of True indicates a human has inspected the all item dictionary parameters and verified they check out.

Description

Checklist: item ok

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -checklist_ok 'standard item <bool>'

Example (CLI)

-checklist_ok 'ISO D000 true'

Example (API)

check.set('checklist', 'ISO', 'D000', 'ok', True)

1.3.3.2.5. rationale#

Rationale for the checklist item. Rationale should be a unique alphanumeric code used by the standard or a short one line or single word description.

Description

Checklist: item rationale

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_rationale 'standard item <str>'

Example (CLI)

-checklist_rationale 'ISO D000 reliability'

Example (API)

check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')

1.3.3.2.6. report#

Filepath to report(s) of specified type documenting the successful validation of the checklist item.

Description

Checklist: item report

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_report 'standard item <file>'

Example (CLI)

-checklist_report 'ISO D000 my.rpt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')

1.3.3.2.7. requirement#

A complete requirement description of the checklist item entered as a multi-line string.

Description

Checklist: item requirement

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_requirement 'standard item <str>'

Example (CLI)

-checklist_requirement 'ISO D000 DOCSTRING'

Example (API)

check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')

1.3.3.2.8. task#

Flowgraph job and task used to verify the checklist item. The parameter should be left empty for manual and for tool flows that bypass the SC infrastructure.

Description

Checklist: item task

Type

[(str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_task 'standard item <(str,str,str)>'

Example (CLI)

-checklist_task 'ISO D000 (job0,place,0)'

Example (API)

check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))

1.3.3.2.9. waiver#

Filepath to report(s) documenting waivers for the checklist item specified on a per metric basis.

Description

Checklist: item metric waivers

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_waiver 'standard item metric <file>'

Example (CLI)

-checklist_waiver 'ISO D000 bold my.txt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')

1.3.3.3. constraint#

Class FPGAConstraint

1.3.3.3.1. component#

Class FPGAComponentConstraints

1.3.3.3.2. pin#

Class FPGAPinConstraints

1.3.3.3.3. timing#

Class FPGATimingConstraintSchema

1.3.3.3.3.1. mode#

Class TimingModeSchema

1.3.3.3.3.1.1. sdcfileset#

List of timing constraint sets files to use for the scenario. The

values are combined with any constraints specified by the design ‘constraint’ parameter. If no constraints are found, a default constraint file is used based on the clock definitions.

Description

Constraint: SDC files

Type

[(str,str)]

Scope

global

Default Value

[]

CLI Switch

  • -constraint_timing_file 'scenario <file>'

Example (API)

mode.set('constraint', 'timing', 'worst', 'file', 'hello.sdc')

1.3.3.3.3.2. scenario#

Class FPGATimingScenarioSchema

1.3.3.3.3.2.1. mode#

Operating mode for the scenario. Operating mode strings

can be values such as test, functional, standby.

Description

Constraint: operating mode

Type

str

Scope

global

Default Value

None

CLI Switch

  • -constraint_timing_mode 'scenario <str>'

Example (API)

fpga.set('constraint', 'timing', 'worst', 'mode', 'test')

1.3.3.4. flowgraph#

Class Flowgraph

Class FlowgraphNodeSchema

1.3.3.4.1. args#

User-specified arguments passed to the task’s setup() method. This allows for customizing a specific node’s behavior without affecting other nodes running the same task.

Description

Flowgraph: Node-specific arguments

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_args 'flow step index <str>'

Example (CLI)

-flowgraph_args 'asicflow cts 0 buffer_cells'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')

1.3.3.4.2. goal#

Goals specified on a per-node and per-metric basis used to determine whether a task run is considered successful. A task run may be considered failing if the absolute value of any of its reported metrics is larger than the goal for that metric (if set). This is often used for metrics like ‘errors’ or ‘setupwns’ where the goal is 0.

Description

Flowgraph: Metric goals

Type

float

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_goal 'flow step index metric <float>'

Example (CLI)

-flowgraph_goal 'asicflow cts 0 errors 0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)

1.3.3.4.3. input#

A list of inputs for this flowgraph node, where each input is specified as a (step, index) tuple. This defines the dependencies of this node.

Description

Flowgraph: Node inputs

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_input 'flow step index <(str,str)>'

Example (CLI)

-flowgraph_input 'asicflow cts 0 (place,0)'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))

1.3.3.4.4. task#

Name of the task (e.g., ‘place’, ‘syn’, ‘join’) associated with the node’s tool.

Description

Flowgraph: Task selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_task 'flow step index <str>'

Example (CLI)

-flowgraph_task 'asicflow myplace 0 place'

Example (API)

flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')

1.3.3.4.5. taskmodule#

Full Python module path and class name of the task, formatted as ‘<full.module.path>/<ClassName>’. This is used to import and instantiate the correct Task class for setup and execution.

Description

Flowgraph: Task module

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_taskmodule 'flow step index <str>'

Example (CLI)

-flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')

1.3.3.4.6. tool#

Name of the tool (e.g., ‘openroad’, ‘yosys’, ‘builtin’) that this node will execute.

Description

Flowgraph: Tool selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_tool 'flow step index <str>'

Example (CLI)

-flowgraph_tool 'asicflow place 0 openroad'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')

1.3.3.4.7. weight#

Weights specified on a per-node and per-metric basis, used by optimization tasks (like ‘minimum’) to calculate a “goodness” score for a run. The score is typically a weighted sum of metric results.

Description

Flowgraph: Metric weights

Type

float

Per step/index

never

Scope

global

Default Value

0.0

CLI Switch

  • -flowgraph_weight 'flow step index metric <float>'

Example (CLI)

-flowgraph_weight 'asicflow cts 0 area_cells 1.0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)

1.3.3.5. fpga#

1.3.3.5.1. device#

Description

None

Type

str

Per step/index

never

Scope

global

Default Value

None

1.3.3.6. history#

1.3.3.7. library#

Class _ProjectLibrary

1.3.3.8. metric#

Class FPGAMetricsSchema

1.3.3.8.1. averagepower#

Metric tracking the average workload power of the design specified on a per step and index basis. Power metric depend heavily on the method being used for extraction: dynamic vs static, workload specification (vcd vs saif), power models, process/voltage/temperature. The power averagepower metric tries to capture the data that would usually be reflected inside a datasheet given the appropriate footnote conditions.

Description

Metric: averagepower

Type

float

Scope

job

Unit

mw

Default Value

None

CLI Switch

  • -metric_averagepower 'step index <float>'

Example (CLI)

-metric_averagepower 'place 0 0.01'

Example (API)

fpga.set('metric', 'averagepower', 0.01, step='place', index=0)

1.3.3.8.2. brams#

Metric tracking the total FPGA BRAM tiles used used by the design as reported by the implementation tool. There is no standardized definition for this metric across vendors, so metric comparisons can generally only be done between runs on identical tools and device families.

Description

Metric: FPGA BRAM tiles used

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_brams 'step index <int>'

Example (CLI)

-metric_brams 'place 0 100'

Example (API)

fpga.set('metric', 'brams', 100, step='place', index=0)

1.3.3.8.3. cells#

Metric tracking the total number of cell instances in the design on a per step and index basis.

Description

Metric: cells

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_cells 'step index <int>'

Example (CLI)

-metric_cells 'place 0 100'

Example (API)

fpga.set('metric', 'cells', 50, step='place', index=0)

1.3.3.8.4. dsps#

Metric tracking the total FPGA DSP slices used used by the design as reported by the implementation tool. There is no standardized definition for this metric across vendors, so metric comparisons can generally only be done between runs on identical tools and device families.

Description

Metric: FPGA DSP slices used

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_dsps 'step index <int>'

Example (CLI)

-metric_dsps 'place 0 100'

Example (API)

fpga.set('metric', 'dsps', 100, step='place', index=0)

1.3.3.8.5. errors#

Metric tracking the total number of errors on a per step and index basis.

Description

Metric: total errors

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_errors 'step index <int>'

Example (CLI)

-metric_errors 'dfm 0 0'

Example (API)

project.set('metric', 'errors', 0, step='dfm', index=0)

1.3.3.8.6. exetime#

Metric tracking time spent by the EDA executable [tool,<tool>,task,<task>,exe] on a per step and index basis. It does not include the SiliconCompiler runtime overhead or time waiting for I/O operations and inter-processor communication to complete.

Description

Metric: exetime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_exetime 'step index <float>'

Example (CLI)

-metric_exetime 'dfm 0 10.0'

Example (API)

project.set('metric', 'exetime', 10.0, step='dfm', index=0)

1.3.3.8.7. fmax#

Metric tracking the maximum clock frequency on a per step and index basis.

Description

Metric: fmax

Type

float

Scope

job

Unit

Hz

Default Value

None

CLI Switch

  • -metric_fmax 'step index <float>'

Example (CLI)

-metric_fmax 'place 0 100e6'

Example (API)

fpga.set('metric', 'fmax', 100e6, step='place', index=0)

1.3.3.8.8. holdpaths#

Metric tracking the total number of timing paths violating hold constraints.

Description

Metric: holdpaths

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_holdpaths 'step index <int>'

Example (CLI)

-metric_holdpaths 'place 0 10'

Example (API)

fpga.set('metric', 'holdpaths', 10, step='place', index=0)

1.3.3.8.9. holdskew#

Metric tracking the hold clock skew on a per step and index basis.

Description

Metric: holdskew

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdskew 'step index <float>'

Example (CLI)

-metric_holdskew 'place 0 0.01'

Example (API)

fpga.set('metric', 'holdskew', 0.01, step='place', index=0)

1.3.3.8.10. holdslack#

Metric tracking the worst hold slack (positive or negative) on a per step and index basis.

Description

Metric: holdslack

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdslack 'step index <float>'

Example (CLI)

-metric_holdslack 'place 0 0.01'

Example (API)

fpga.set('metric', 'holdslack', 0.01, step='place', index=0)

1.3.3.8.11. holdtns#

Metric tracking the total negative hold slack (TNS) on a per step and index basis.

Description

Metric: holdtns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdtns 'step index <float>'

Example (CLI)

-metric_holdtns 'place 0 0.01'

Example (API)

fpga.set('metric', 'holdtns', 0.01, step='place', index=0)

1.3.3.8.12. holdwns#

Metric tracking the worst negative hold slack (positive values truncated to zero) on a per step and index basis.

Description

Metric: holdwns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_holdwns 'step index <float>'

Example (CLI)

-metric_holdwns 'place 0 0.01'

Example (API)

fpga.set('metric', 'holdwns', 0.01, step='place', index=0)

1.3.3.8.13. leakagepower#

Metric tracking the leakage power with rails active but without any dynamic switching activity of the design specified on a per step and index basis. Power metric depend heavily on the method being used for extraction: dynamic vs static, workload specification (vcd vs saif), power models, process/voltage/temperature. The power leakagepower metric tries to capture the data that would usually be reflected inside a datasheet given the appropriate footnote conditions.

Description

Metric: leakagepower

Type

float

Scope

job

Unit

mw

Default Value

None

CLI Switch

  • -metric_leakagepower 'step index <float>'

Example (CLI)

-metric_leakagepower 'place 0 0.01'

Example (API)

fpga.set('metric', 'leakagepower', 0.01, step='place', index=0)

1.3.3.8.14. logicdepth#

Metric tracking the logic depth of the design. This is determined by the number of logic gates between the start of the critital timing path to the end of the path.

Description

Metric: logic depth

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_logicdepth 'step index <int>'

Example (CLI)

-metric_logicdepth 'place 0 8'

Example (API)

fpga.set('metric', 'logicdepth', 8, step='place', index=0)

1.3.3.8.15. luts#

Metric tracking the total FPGA LUTs used used by the design as reported by the implementation tool. There is no standardized definition for this metric across vendors, so metric comparisons can generally only be done between runs on identical tools and device families.

Description

Metric: FPGA LUTs used

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_luts 'step index <int>'

Example (CLI)

-metric_luts 'place 0 100'

Example (API)

fpga.set('metric', 'luts', 100, step='place', index=0)

1.3.3.8.16. macros#

Metric tracking the total number of macros in the design on a per step and index basis.

Description

Metric: macros

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_macros 'step index <int>'

Example (CLI)

-metric_macros 'place 0 100'

Example (API)

fpga.set('metric', 'macros', 50, step='place', index=0)

1.3.3.8.17. memory#

Metric tracking total peak program memory footprint on a per step and index basis.

Description

Metric: memory

Type

float

Scope

job

Unit

B

Default Value

None

CLI Switch

  • -metric_memory 'step index <float>'

Example (CLI)

-metric_memory 'dfm 0 10e9'

Example (API)

project.set('metric', 'memory', 10e9, step='dfm', index=0)

1.3.3.8.18. nets#

Metric tracking the total number of nets in the design on a per step and index basis.

Description

Metric: nets

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_nets 'step index <int>'

Example (CLI)

-metric_nets 'place 0 100'

Example (API)

fpga.set('metric', 'nets', 50, step='place', index=0)

1.3.3.8.19. overflow#

Metric tracking the total number of overflow tracks for the routing on per step and index basis. Any non-zero number suggests an over congested design. To analyze where the congestion is occurring inspect the router log files for detailed per metal overflow reporting and open up the design to find routing hotspots.

Description

Metric: overflow

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_overflow 'step index <int>'

Example (CLI)

-metric_overflow 'place 0 0'

Example (API)

fpga.set('metric', 'overflow', 50, step='place', index=0)

1.3.3.8.20. peakpower#

Metric tracking the worst case total peak power of the design specified on a per step and index basis. Power metric depend heavily on the method being used for extraction: dynamic vs static, workload specification (vcd vs saif), power models, process/voltage/temperature. The power peakpower metric tries to capture the data that would usually be reflected inside a datasheet given the appropriate footnote conditions.

Description

Metric: peakpower

Type

float

Scope

job

Unit

mw

Default Value

None

CLI Switch

  • -metric_peakpower 'step index <float>'

Example (CLI)

-metric_peakpower 'place 0 0.01'

Example (API)

fpga.set('metric', 'peakpower', 0.01, step='place', index=0)

1.3.3.8.21. pins#

Metric tracking the total number of pins in the design on a per step and index basis.

Description

Metric: pins

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_pins 'step index <int>'

Example (CLI)

-metric_pins 'place 0 100'

Example (API)

fpga.set('metric', 'pins', 50, step='place', index=0)

1.3.3.8.22. registers#

Metric tracking the total number of register instances in the design on a per step and index basis.

Description

Metric: registers

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_registers 'step index <int>'

Example (CLI)

-metric_registers 'place 0 100'

Example (API)

fpga.set('metric', 'registers', 50, step='place', index=0)

1.3.3.8.23. setuppaths#

Metric tracking the total number of timing paths violating setup constraints.

Description

Metric: setuppaths

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_setuppaths 'step index <int>'

Example (CLI)

-metric_setuppaths 'place 0 10'

Example (API)

fpga.set('metric', 'setuppaths', 10, step='place', index=0)

1.3.3.8.24. setupskew#

Metric tracking the setup clock skew on a per step and index basis.

Description

Metric: setupskew

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setupskew 'step index <float>'

Example (CLI)

-metric_setupskew 'place 0 0.01'

Example (API)

fpga.set('metric', 'setupskew', 0.01, step='place', index=0)

1.3.3.8.25. setupslack#

Metric tracking the worst setup slack (positive or negative) on a per step and index basis.

Description

Metric: setupslack

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setupslack 'step index <float>'

Example (CLI)

-metric_setupslack 'place 0 0.01'

Example (API)

fpga.set('metric', 'setupslack', 0.01, step='place', index=0)

1.3.3.8.26. setuptns#

Metric tracking the total negative setup slack (TNS) on a per step and index basis.

Description

Metric: setuptns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setuptns 'step index <float>'

Example (CLI)

-metric_setuptns 'place 0 0.01'

Example (API)

fpga.set('metric', 'setuptns', 0.01, step='place', index=0)

1.3.3.8.27. setupwns#

Metric tracking the worst negative setup slack (positive values truncated to zero) on a per step and index basis.

Description

Metric: setupwns

Type

float

Scope

job

Unit

ns

Default Value

None

CLI Switch

  • -metric_setupwns 'step index <float>'

Example (CLI)

-metric_setupwns 'place 0 0.01'

Example (API)

fpga.set('metric', 'setupwns', 0.01, step='place', index=0)

1.3.3.8.28. tasktime#

Metric tracking the total amount of time spent on a task from beginning to end, including data transfers and pre/post processing.

Description

Metric: tasktime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_tasktime 'step index <float>'

Example (CLI)

-metric_tasktime 'dfm 0 10.0'

Example (API)

project.set('metric', 'tasktime', 10.0, step='dfm', index=0)

1.3.3.8.29. totaltime#

Metric tracking the total amount of time spent from the beginning of the run up to and including the current step and index.

Description

Metric: totaltime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_totaltime 'step index <float>'

Example (CLI)

-metric_totaltime 'dfm 0 10.0'

Example (API)

project.set('metric', 'totaltime', 10.0, step='dfm', index=0)

1.3.3.8.30. unconstrained#

Metric tracking the total number of unconstrained timing paths on a per step and index basis.

Description

Metric: total unconstrained

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_unconstrained 'step index <int>'

Example (CLI)

-metric_unconstrained 'dfm 0 0'

Example (API)

fpga.set('metric', 'unconstrained', 0, step='dfm', index=0)

1.3.3.8.31. utilization#

Metric tracking the area utilization of the design calculated as 100 * (cellarea/totalarea).

Description

Metric: area utilization

Type

float

Scope

job

Unit

%

Default Value

None

CLI Switch

  • -metric_utilization 'step index <float>'

Example (CLI)

-metric_utilization 'place 0 50.00'

Example (API)

fpga.set('metric', 'utilization', 50.00, step='place', index=0)

1.3.3.8.32. warnings#

Metric tracking the total number of warnings on a per step and index basis.

Description

Metric: total warnings

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_warnings 'step index <int>'

Example (CLI)

-metric_warnings 'dfm 0 0'

Example (API)

project.set('metric', 'warnings', 0, step='dfm', index=0)

1.3.3.8.33. wirelength#

Metric tracking the total wirelength of the design on a per step and index basis.

Description

Metric: wirelength

Type

float

Scope

job

Default Value

None

CLI Switch

  • -metric_wirelength 'step index <float>'

Example (CLI)

-metric_wirelength 'place 0 100.0'

Example (API)

fpga.set('metric', 'wirelength', 50.0, step='place', index=0)

1.3.3.9. option#

Class OptionSchema

1.3.3.9.1. alias#

List of filesets to alias during a run. When an alias is specific it will be used instead of the source fileset. It is useful when you want to substitute a fileset from one library with a fileset from another, without changing the original design’s code. For example, you might use it to swap in a different version of an IP block or a specific test environment.

Description

Option: Fileset alias mapping

Type

[(str,str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))

1.3.3.9.2. autoissue#

Enables automatic generation of testcases if the specific node fails

Description

Option: Enables automatic generation of testcases

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -autoissue <bool>

Example (API)

option.set('autoissue', True)

1.3.3.9.3. breakpoint#

Set a breakpoint on specific steps. If the step is a TCL based tool, then the breakpoints stops the flow inside the EDA tool. If the step is a command line tool, then the flow drops into a Python interpreter.

Description

Option: breakpoint list

Type

bool

Scope

job

Default Value

False

CLI Switch

  • -breakpoint <bool>

Example (CLI)

-breakpoint true

Example (API)

option.set('breakpoint', True)

1.3.3.9.4. builddir#

The default build directory is in the local ‘./build’ where SC was executed. This can be used to set an alternate compilation directory path.

Description

Option: build directory

Type

dir

Per step/index

never

Scope

global

Default Value

build

CLI Switch

  • -builddir <dir>

Example (CLI)

-builddir ./build_the_future

Example (API)

option.set('builddir', './build_the_future')

1.3.3.9.5. cachedir#

Filepath to cache used for package data sources. If the cache parameter is empty, “.sc/cache” directory in the user’s home directory will be used.

Description

Option: user cache directory

Type

dir

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -cachedir <dir>

Example (CLI)

-cachedir /home/user/.sc/cache

Example (API)

option.set('cachedir', '/home/user/.sc/cache')

1.3.3.9.6. clean#

Run a job from the start and do not use any of the previous job. If [option,jobincr] is True, the old job is preserved and a new job number is assigned.

Description

Option: cleanup previous job

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -clean <bool>

Example (CLI)

-clean

Example (API)

option.set('clean', True)

1.3.3.9.7. continue#

Attempt to continue even when errors are encountered in the SC implementation. The default behavior is to quit executing the flow if a task ends and the errors metric is greater than 0. Note that the flow will always cease executing if the tool returns a nonzero status code.

Description

Option: continue-on-error

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -continue <bool>

Example (CLI)

-continue

Example (API)

option.set('continue', True)

1.3.3.9.8. credentials#

Filepath to credentials used for remote processing. If the credentials parameter is empty, the remote processing client program tries to access the “.sc/credentials” file in the user’s home directory. The file supports the following fields:

address=<server address> port=<server port> (optional) username=<user id> (optional) password=<password / key used for authentication> (optional)

Description

Option: user credentials file

Type

file

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -credentials <file>

Example (CLI)

-credentials /home/user/.sc/credentials

Example (API)

option.set('credentials', '/home/user/.sc/credentials')

1.3.3.9.9. design#

Name of the top level library

Description

Option: Design library name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -design <str>

Example (CLI)

-design hello_world

Example (API)

option.set('design', 'hello_world')

1.3.3.9.10. env#

Certain tools and reference flows require global environment variables to be set. These variables can be managed externally or specified through the env variable.

Description

Option: environment variables

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('env', 'PDK_HOME', '/disk/mypdk')

1.3.3.9.11. fileset#

List of filesets to use from the selected design library

Description

Option: Selected design filesets

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('fileset', 'rtl')

1.3.3.9.12. flow#

Sets the flow for the current run. The flow name must match up with a ‘flow’ in the flowgraph

Description

Option: flow target

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flow <str>

Example (CLI)

-flow asicflow

Example (API)

option.set('flow', 'asicflow')

1.3.3.9.13. from#

Inclusive list of steps to start execution from. The default is to start at all entry steps in the flow graph.

Description

Option: starting step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -from <str>

Example (CLI)

-from 'import'

Example (API)

option.set('from', 'import')

1.3.3.9.14. hash#

Enables hashing of all inputs and outputs during compilation. The hash values are stored in the hashvalue field of the individual parameters.

Description

Option: file hashing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -hash <bool>

Example (CLI)

-hash

Example (API)

option.set('hash', True)

1.3.3.9.15. jobincr#

Forces an auto-update of the jobname parameter if a directory matching the jobname is found in the build directory. If the jobname does not include a trailing digit, then the number ‘1’ is added to the jobname before updating the jobname parameter.

Description

Option: autoincrement jobname

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -jobincr <bool>

Example (CLI)

-jobincr

Example (API)

option.set('jobincr', True)

1.3.3.9.16. jobname#

Jobname during invocation of Project.run(). The jobname combined with a defined director structure (<dir>/<design>/<jobname>/<step>/<index>) enables multiple levels of transparent job, step, and index introspection.

Description

Option: job name

Type

str

Per step/index

never

Scope

global

Default Value

job0

CLI Switch

  • -jobname <str>

Example (CLI)

-jobname may1

Example (API)

option.set('jobname', 'may1')

1.3.3.9.17. nice#

Sets the type of execution priority of each individual flowgraph steps. If the parameter is undefined, nice will not be used. For more information see Unix ‘nice’.

Description

Option: tool scheduling priority

Type

int

Scope

global

Default Value

None

CLI Switch

  • -nice <int>

Example (CLI)

-nice 5

Example (API)

option.set('nice', 5)

1.3.3.9.18. nodashboard#

Disables the dashboard during execution

Description

Option: Disables the dashboard

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodashboard <bool>

Example (API)

option.set('nodashboard', True)

1.3.3.9.19. nodisplay#

This flag prevents SiliconCompiler from opening GUI windows.

Description

Option: headless execution

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodisplay <bool>

Example (CLI)

-nodisplay

Example (API)

option.set('nodisplay', True)

1.3.3.9.20. novercheck#

Disables strict version checking on all invoked tools if True. The list of supported version numbers is defined in the [tool,<tool>,task,<task>,version].

Description

Option: disable version checking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -novercheck <bool>

Example (CLI)

-novercheck

Example (API)

option.set('novercheck', True)

1.3.3.9.21. optmode#

The compiler has modes to prioritize run time and ppa. Modes include.

(O0) = Exploration mode for debugging setup (O1) = Higher effort and better PPA than O0 (O2) = Higher effort and better PPA than O1 (O3) = Signoff quality. Better PPA and higher run times than O2 (O4-O98) = Reserved (compiler/target dependent) (O99) = Experimental highest possible effort, may be unstable

Description

Option: optimization mode

Type

int

Scope

global

Default Value

0

CLI Switch

  • -O<str>
  • -optmode <str>

Example (CLI)

-O3

-optmode 3

Example (API)

option.set('optmode', 'O3')

1.3.3.9.22. prune#

List of starting nodes for branches to be pruned. The default is to not prune any nodes/branches.

Description

Option: flowgraph pruning

Type

[(str,str)]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -prune 'node <(str,str)>'

Example (CLI)

-prune (syn,0)

Example (API)

option.set('prune', ('syn', '0'))

1.3.3.9.23. quiet#

The -quiet option forces all steps to print to a log file. This can be useful with Modern EDA tools which print significant content to the screen.

Description

Option: quiet execution

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -quiet <bool>

Example (CLI)

-quiet

Example (API)

option.set('quiet', True)

1.3.3.9.24. remote#

Sends job for remote processing if set to true. The remote option requires a credentials file to be placed in the home directory. Fore more information, see the credentials parameter.

Description

Option: enable remote processing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -remote <bool>

Example (CLI)

-remote

Example (API)

option.set('remote', True)

1.3.3.9.25. scheduler#

Class SchedulerSchema

1.3.3.9.25.1. cores#

Specifies the number CPU cores required to run the job. For the slurm scheduler, this translates to the ‘-c’ switch. For more information, see the job scheduler documentation

Description

Option: Scheduler core constraint

Type

int

Scope

global

Default Value

None

CLI Switch

  • -cores <int>

Example (CLI)

-cores 48

Example (API)

option.set('cores', 48)

1.3.3.9.25.2. defer#

Defer initiation of job until the specified time. The parameter is pass through string for remote job scheduler such as slurm. For more information about the exact format specification, see the job scheduler documentation. Examples of valid slurm specific values include: now+1hour, 16:00, 010-01-20T12:34:00. For more information, see the job scheduler documentation.

Description

Option: scheduler start time

Type

str

Scope

global

Default Value

None

CLI Switch

  • -defer <str>

Example (CLI)

-defer 16:00

Example (API)

option.set('defer', '16:00')

1.3.3.9.25.3. maxnodes#

Maximum number of concurrent nodes to run in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum concurrent nodes

Type

int

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -maxnodes <int>

Example (CLI)

-maxnodes 4

Example (API)

option.set('maxnodes', 4)

1.3.3.9.25.4. maxthreads#

Maximum number of threads for each task in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum number of threads to assign a task

Type

int

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('maxthreads', 4)

1.3.3.9.25.5. memory#

Specifies the amount of memory required to run the job, specified in MB. For the slurm scheduler, this translates to the ‘–mem’ switch. For more information, see the job scheduler documentation

Description

Option: scheduler memory constraint

Type

int

Scope

global

Unit

MB

Default Value

None

CLI Switch

  • -memory <int>

Example (CLI)

-memory 8000

Example (API)

option.set('memory', 8000)

1.3.3.9.25.6. msgcontact#

List of email addresses to message on a [option,scheduler,msgevent]. Support for email messages relies on job scheduler daemon support. For more information, see the job scheduler documentation.

Description

Option: message contact

Type

{str}

Scope

global

Default Value

[]

CLI Switch

  • -msgcontact <str>

Example (CLI)

-msgcontact 'wile.e.coyote@acme.com'

Example (API)

option.set('msgcontact', 'wiley@acme.com')

1.3.3.9.25.7. msgevent#

Directs job scheduler to send a message to the user in [option,scheduler,msgcontact] when certain events occur during a task.

  • fail: send an email on failures

  • timeout: send an email on timeouts

  • begin: send an email at the start of a node task

  • end: send an email at the end of a node task

  • summary: send a summary email at the end of the run

  • all: send an email on any event

Description

Option: message event trigger

Type

[enum]

Allowed values

  • all

  • begin

  • end

  • fail

  • summary

  • timeout

Scope

global

Default Value

[]

CLI Switch

  • -msgevent <str>

Example (CLI)

-msgevent all

Example (API)

option.set('msgevent', 'all')

1.3.3.9.25.8. name#

Sets the type of job scheduler to be used for each individual flowgraph steps. If the parameter is undefined, the steps are executed on the same machine that the SC was launched on. If ‘slurm’ is used, the host running the ‘sc’ command must be running a ‘slurmctld’ daemon managing a Slurm cluster. Additionally, the build directory ([option,builddir]) must be located in shared storage which can be accessed by all hosts in the cluster.

Description

Option: scheduler platform

Type

enum

Allowed values

  • docker

  • lsf

  • sge

  • slurm

Scope

global

Default Value

None

CLI Switch

  • -scheduler <str>

Example (CLI)

-scheduler slurm

Example (API)

option.set('name', 'slurm')

1.3.3.9.25.9. options#

Advanced/export options passed through unchanged to the job scheduler as-is. (The user specified options must be compatible with the rest of the scheduler parameters entered.(memory etc). For more information, see the job scheduler documentation.

Description

Option: scheduler arguments

Type

[str]

Scope

global

Default Value

[]

CLI Switch

  • -scheduler_options <str>

Example (CLI)

-scheduler_options "--pty"

Example (API)

option.set('options', "--pty")

1.3.3.9.25.10. queue#

Send the job to the specified queue. With slurm, this translates to ‘partition’. The queue name must match the name of an existing job scheduler queue. For more information, see the job scheduler documentation

Description

Option: scheduler queue

Type

str

Scope

global

Default Value

None

CLI Switch

  • -queue <str>

Example (CLI)

-queue nightrun

Example (API)

option.set('queue', 'nightrun')

1.3.3.9.26. timeout#

Timeout value in seconds. The timeout value is compared against the wall time tracked by the SC runtime to determine if an operation should continue.

Description

Option: timeout value

Type

float

Scope

global

Unit

s

Default Value

None

CLI Switch

  • -timeout <float>

Example (CLI)

-timeout 3600

Example (API)

option.set('timeout', 3600)

1.3.3.9.27. to#

Inclusive list of steps to end execution with. The default is to go to all exit steps in the flow graph.

Description

Option: ending step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -to <str>

Example (CLI)

-to 'syn'

Example (API)

option.set('to', 'syn')

1.3.3.9.28. track#

Turns on tracking of all ‘record’ parameters during each task, otherwise only tool and runtime information will be recorded. Tracking will result in potentially sensitive data being recorded in the manifest so only turn on this feature if you have control of the final manifest.

Description

Option: enable provenance tracking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -track <bool>

Example (CLI)

-track

Example (API)

option.set('track', True)

1.3.3.10. record#

Class RecordSchema

1.3.3.10.1. arch#

Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)

Description

Record: hardware architecture

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_arch 'step index <str>'

Example (CLI)

-record_arch 'dfm 0 x86_64'

Example (API)

schema.set('record', 'arch', 'x86_64', step='dfm', index=0)

1.3.3.10.2. distro#

Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)

Description

Record: distro name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_distro 'step index <str>'

Example (CLI)

-record_distro 'dfm 0 ubuntu'

Example (API)

schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)

1.3.3.10.3. endtime#

Record tracking the end time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: end time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_endtime 'step index <str>'

Example (CLI)

-record_endtime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'endtime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.3.10.4. inputnode#

List of selected inputs for the current step/index specified as (in_step, in_index) tuple.

Description

Record: node inputs

Type

[(str,str)]

Scope

job

Default Value

[]

CLI Switch

  • -record_inputnode 'step index <(str,str)>'

Example (CLI)

-record_inputnode 'cts 0 (place,42)'

Example (API)

schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')

1.3.3.10.5. ipaddr#

Record tracking the IP address per step and index basis.

Description

Record: IP address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_ipaddr 'step index <str>'

Example (CLI)

-record_ipaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)

1.3.3.10.6. kernelversion#

Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction between os kernels and os distributions.

Description

Record: O/S kernel version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_kernelversion 'step index <str>'

Example (CLI)

-record_kernelversion 'dfm 0 5.11.0-34-generic'

Example (API)

schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)

1.3.3.10.7. macaddr#

Record tracking the MAC address per step and index basis.

Description

Record: MAC address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_macaddr 'step index <str>'

Example (CLI)

-record_macaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)

1.3.3.10.8. machine#

Record tracking the machine name per step and index basis. (myhost, localhost, …

Description

Record: machine name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_machine 'step index <str>'

Example (CLI)

-record_machine 'dfm 0 carbon'

Example (API)

schema.set('record', 'machine', 'carbon', step='dfm', index=0)

1.3.3.10.9. osversion#

Record tracking the O/S version per step and index basis. Since there is not standard version system for operating systems, extracting information from is platform dependent. For Linux based operating systems, the ‘osversion’ is the version of the distro.

Description

Record: O/S version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_osversion 'step index <str>'

Example (CLI)

-record_osversion 'dfm 0 20.04.1-Ubuntu'

Example (API)

schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)

1.3.3.10.10. platform#

Record tracking the platform name per step and index basis. (linux, windows, freebsd)

Description

Record: platform name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_platform 'step index <str>'

Example (CLI)

-record_platform 'dfm 0 linux'

Example (API)

schema.set('record', 'platform', 'linux', step='dfm', index=0)

1.3.3.10.11. publickey#

Record tracking the public key per step and index basis.

Description

Record: public key

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_publickey 'step index <str>'

Example (CLI)

-record_publickey 'dfm 0 <key>'

Example (API)

schema.set('record', 'publickey', '<key>', step='dfm', index=0)

1.3.3.10.12. pythonpackage#

Record tracking for the python packages installed.

Description

Record: python packages

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -record_pythonpackage '<str>'

Example (CLI)

-record_pythonpackage 'siliconcompiler==0.28.0'

Example (API)

schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')

1.3.3.10.13. pythonversion#

Record tracking the Python version per step and index basis. Version of python used to run this task.

Description

Record: Python version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_pythonversion 'step index <str>'

Example (CLI)

-record_pythonversion 'dfm 0 3.12.3'

Example (API)

schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)

1.3.3.10.14. region#

Record tracking the cloud region per step and index basis. Recommended naming methodology:

  • local: node is the local machine

  • onprem: node in on-premises IT infrastructure

  • public: generic public cloud

  • govcloud: generic US government cloud

  • <region>: cloud and entity specific region string name

Description

Record: cloud region

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_region 'step index <str>'

Example (CLI)

-record_region 'dfm 0 "US Gov Boston"'

Example (API)

schema.set('record', 'region', '"US Gov Boston"', step='dfm', index=0)

1.3.3.10.15. remoteid#

Record tracking the job ID for a remote run.

Description

Record: remote job ID

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -record_remoteid '<str>'

Example (CLI)

-record_remoteid '0123456789abcdeffedcba9876543210'

Example (API)

schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')

1.3.3.10.16. scversion#

Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.

Description

Record: software version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_scversion 'step index <str>'

Example (CLI)

-record_scversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'scversion', '1.0', step='dfm', index=0)

1.3.3.10.17. starttime#

Record tracking the start time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: start time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_starttime 'step index <str>'

Example (CLI)

-record_starttime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'starttime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.3.10.18. status#

Record tracking for the status of a node.

Description

Record: node execution status

Type

enum

Allowed values

  • error

  • pending

  • queued

  • running

  • skipped

  • success

  • timeout

Scope

job

Default Value

None

CLI Switch

  • -record_status 'step index <str>'

Example (CLI)

-record_status 'syn 0 success'

Example (API)

schema.set('record', 'status', 'success', step='syn', index='0')

1.3.3.10.19. toolargs#

Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.

Description

Record: tool CLI arguments

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolargs 'step index <str>'

Example (CLI)

-record_toolargs 'dfm 0 "-I include/ foo.v"'

Example (API)

schema.set('record', 'toolargs', '"-I include/ foo.v"', step='dfm', index=0)

1.3.3.10.20. toolexitcode#

Record tracking the tool exit code per step and index basis.

Description

Record: tool exit code

Type

int

Scope

job

Default Value

None

CLI Switch

  • -record_toolexitcode 'step index <int>'

Example (CLI)

-record_toolexitcode 'dfm 0 0'

Example (API)

schema.set('record', 'toolexitcode', 0, step='dfm', index=0)

1.3.3.10.21. toolpath#

Record tracking the tool path per step and index basis. Full path to tool executable used to run this task.

Description

Record: tool path

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolpath 'step index <str>'

Example (CLI)

-record_toolpath 'dfm 0 /usr/bin/openroad'

Example (API)

schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)

1.3.3.10.22. toolversion#

Record tracking the tool version per step and index basis. The tool version captured corresponds to the ‘tool’ parameter within the ‘tool’ dictionary.

Description

Record: tool version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolversion 'step index <str>'

Example (CLI)

-record_toolversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'toolversion', '1.0', step='dfm', index=0)

1.3.3.10.23. userid#

Record tracking the userid per step and index basis.

Description

Record: userid

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_userid 'step index <str>'

Example (CLI)

-record_userid 'dfm 0 wiley'

Example (API)

schema.set('record', 'userid', 'wiley', step='dfm', index=0)

1.3.3.11. schemaversion#

Description

Schema version number

Type

str

Per step/index

never

Scope

global

Default Value

0.54.0

Example (API)

project.get('schemaversion')

1.3.3.12. tool#

1.3.3.12.1. task#

Class Task

1.3.3.12.1.1. dataroot#
1.3.3.12.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.3.3.12.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.3.3.12.1.2. env#

Environment variables to set for individual tasks. Keys and values should be set in accordance with the task’s documentation. Most tasks do not require extra environment variables to function.

Description

Task: environment variables

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_task_env 'tool task env <str>'

Example (CLI)

-tool_task_env 'openroad cts MYVAR 42'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')

1.3.3.12.1.3. exe#

Tool executable name.

Description

Tool: executable name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_exe 'tool <str>'

Example (CLI)

-tool_exe 'openroad openroad'

Example (API)

task.set('tool', 'openroad', 'exe', 'openroad')

1.3.3.12.1.4. format#

File format for tool manifest handoff.

Description

Tool: file format

Type

enum

Allowed values

  • json

  • tcl

  • yaml

Scope

job

Default Value

None

CLI Switch

  • -tool_format 'tool <str>'

Example (CLI)

-tool_format 'yosys tcl'

Example (API)

task.set('tool', 'yosys', 'format', 'tcl')

1.3.3.12.1.5. input#

List of data files to be copied from previous flowgraph steps ‘output’ directory. The list of steps to copy files from is defined by the list defined by the dictionary key [flowgraph,<flow>,<step>,<index>,input]. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: input files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_input 'tool task <file>'

Example (CLI)

-tool_task_input 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')

1.3.3.12.1.6. licenseserver#

Defines a set of tool-specific environment variables used by the executable that depend on license key servers to control access. For multiple servers, separate servers with a colon. The named license variables are read at runtime (Task.run()) and the environment variables are set.

Description

Tool: license servers

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_licenseserver 'name key <str>'

Example (CLI)

-tool_licenseserver 'atask ACME_LICENSE 1700@server'

Example (API)

task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')

1.3.3.12.1.7. option#

List of command line options for the task executable, specified on a per task and per step basis. Options must not include spaces. For multiple argument options, each option is a separate list element.

Description

Task: executable options

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_option 'tool task <str>'

Example (CLI)

-tool_task_option 'openroad cts -no_init'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')

1.3.3.12.1.8. output#

List of data files written to the ‘output’ directory of the tool/task/step/index used in the keypath. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: output files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_output 'tool task <file>'

Example (CLI)

-tool_task_output 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')

1.3.3.12.1.9. path#

File system path to tool executable. The path is prepended to the system PATH environment variable for batch and interactive runs. The path parameter can be left blank if the [tool,<tool>,task,<task>,exe] is already in the environment search path.

Description

Tool: executable path

Type

dir

Scope

job

Default Value

None

CLI Switch

  • -tool_path 'tool <dir>'

Example (CLI)

-tool_path 'openroad /usr/local/bin'

Example (API)

task.set('tool', 'openroad', 'path', '/usr/local/bin')

1.3.3.12.1.10. postscript#

Path to a user supplied script to execute after the main execution stage of the step but before the design is saved. Exact entry point depends on the step and main script being executed. An example of a postscript entry point would be immediately after global placement.

Description

Task: post-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_postscript 'tool task <file>'

Example (CLI)

-tool_task_postscript 'yosys syn syn_post.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')

1.3.3.12.1.11. prescript#

Path to a user supplied script to execute after reading in the design but before the main execution stage of the step. Exact entry point depends on the step and main script being executed. An example of a prescript entry point would be immediately before global placement.

Description

Task: pre-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_prescript 'tool task <file>'

Example (CLI)

-tool_task_prescript 'yosys syn syn_pre.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')

1.3.3.12.1.12. refdir#

Path to directories containing reference flow scripts, specified on a per step and index basis.

Description

Task: script directory

Type

[dir]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_refdir 'tool task <dir>'

Example (CLI)

-tool_task_refdir 'yosys syn ./myref'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')

1.3.3.12.1.13. regex#

A list of piped together grep commands. Each entry represents a set of command line arguments for grep including the regex pattern to match. Starting with the first list entry, each grep output is piped into the following grep command in the list. Supported grep options include -v and -e. Patterns starting with “-” should be directly preceded by the -e option. The following example illustrates the concept.

UNIX grep:

$ grep WARNING place.log | grep -v "bbox" > place.warnings

SiliconCompiler:

task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',
         ["WARNING", "-v bbox"])

The “errors” and “warnings” suffixes are special cases. When set, the number of matches found for these regexes will be added to the errors and warnings metrics for the task, respectively. This will also cause the logfile to be added to the [tool,<tool>,task,<task>,report,...] parameter for those metrics, if not already present.

Description

Task: regex filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_regex 'tool task suffix <str>'

Example (CLI)

-tool_task_regex 'openroad place errors "'-v ERROR'"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')

1.3.3.12.1.14. report#

List of report files associated with a specific ‘metric’. The file path specified is relative to the run directory of the current task.

Description

Task: metric report files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_report 'tool task metric <file>'

Example (CLI)

-tool_task_report 'openroad place holdtns "place 0 place.log"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')

1.3.3.12.1.15. require#

List of keypaths to required task parameters. The list is used by Project.check_manifest() to verify that all parameters have been set up before step execution begins.

Description

Task: parameter requirements

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_require 'tool task <str>'

Example (CLI)

-tool_task_require 'openroad cts design'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')

1.3.3.12.1.16. sbom#

Paths to software bill of material (SBOM) document file of the tool specified on a per version basis. The SBOM includes critical package information about the tool including the list of included components, licenses, and copyright. The SBOM file is generally provided as in a a standardized open data format such as SPDX.

Description

Tool: software BOM

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_sbom 'tool version <file>'

Example (CLI)

-tool_sbom 'yosys 1.0.1 ys_sbom.json'

Example (API)

task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')

1.3.3.12.1.17. script#

Path to the entry script called by the executable specified on a per task and per step basis.

Description

Task: entry script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_script 'tool task <file>'

Example (CLI)

-tool_task_script 'yosys syn syn.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')

1.3.3.12.1.18. stderr#
1.3.3.12.1.18.1. destination#

Defines where to direct the output generated over stderr. Supported options are: none: the stream generated to STDERR is ignored log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>

Description

Task: destination for stderr

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_destination 'tool task <str>'

Example (CLI)

-tool_task_stderr_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')

1.3.3.12.1.18.2. suffix#

Specifies the file extension for the content redirected from stderr.

Description

Task: file suffix for redirected stderr

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_suffix 'tool task <str>'

Example (CLI)

-tool_task_stderr_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')

1.3.3.12.1.19. stdout#
1.3.3.12.1.19.1. destination#

Defines where to direct the output generated over stdout. Supported options are: none: the stream generated to STDOUT is ignored. log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>.

Description

Task: destination for stdout

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_destination 'tool task <str>'

Example (CLI)

-tool_task_stdout_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')

1.3.3.12.1.19.2. suffix#

Specifies the file extension for the content redirected from stdout.

Description

Task: file suffix for redirected stdout

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_suffix 'tool task <str>'

Example (CLI)

-tool_task_stdout_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')

1.3.3.12.1.20. threads#

Thread parallelism to use for execution specified on a per task and per step basis. If not specified, SC queries the operating system and sets the threads based on the maximum thread count supported by the hardware.

Description

Task: thread parallelism

Type

int

Scope

job

Default Value

None

CLI Switch

  • -tool_task_threads 'tool task <int>'

Example (CLI)

-tool_task_threads 'magic drc 64'

Example (API)

task.set('tool', 'magic', 'task', 'drc', 'threads', '64')

1.3.3.12.1.21. vendor#

Name of the tool vendor. Parameter can be used to set vendor specific technology variables in the PDK and libraries. For open source projects, the project name should be used in place of vendor.

Description

Tool: vendor

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -tool_vendor 'tool <str>'

Example (CLI)

-tool_vendor 'yosys yosys'

Example (API)

task.set('tool', 'yosys', 'vendor', 'yosys')

1.3.3.12.1.22. version#

List of acceptable versions of the tool executable to be used. Each entry in this list must be a version specifier as described by Python PEP-440. During task execution, the tool is called with the ‘vswitch’ to check the runtime executable version. If the version of the system executable is not allowed by any of the specifiers in ‘version’, then the job is halted pre-execution. For backwards compatibility, entries that do not conform to the standard will be interpreted as a version with an ‘==’ specifier. This check can be disabled by setting [option,novercheck] to True.

Description

Tool: version

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_version 'tool <str>'

Example (CLI)

-tool_version 'openroad >=v2.0'

Example (API)

task.set('tool', 'openroad', 'version', '>=v2.0')

1.3.3.12.1.23. vswitch#

Command line switch to use with executable used to print out the version number. Common switches include -v, -version, --version. Some tools may require extra flags to run in batch mode.

Description

Tool: executable version switch

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_vswitch 'tool <str>'

Example (CLI)

-tool_vswitch 'openroad -version'

Example (API)

task.set('tool', 'openroad', 'vswitch', '-version')

1.3.3.12.1.24. warningoff#

A list of tool warnings for which printing should be suppressed. Generally this is done on a per design basis after review has determined that warning can be safely ignored The code for turning off warnings can be found in the specific task reference manual.

Description

Task: warning filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_warningoff 'tool task <str>'

Example (CLI)

-tool_task_warningoff 'verilator lint COMBDLY'

Example (API)

task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')

1.3.4. Lint#

A specialized Project class tailored for linting tasks.

This class can be extended with linting-specific schema parameters, methods, and flows.

File: project.py

Class Lint

1.3.4.1. arg#

1.3.4.1.1. index#

Description

ARG: index argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_index <str>

Example (CLI)

-arg_index 0

Example (API)

project.set('arg', 'index', '0')

1.3.4.1.2. step#

Description

ARG: step argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_step <str>

Example (CLI)

-arg_step 'route'

Example (API)

project.set('arg', 'step', 'route')

1.3.4.2. checklist#

Class Checklist

Class Criteria

1.3.4.2.1. criteria#

Simple list of signoff criteria for checklist item which must all be met for signoff. Each signoff criteria consists of a metric, a relational operator, and a value in the form ‘metric op value’.

Description

Checklist: item criteria

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_criteria 'standard item <str>'

Example (CLI)

-checklist_criteria 'ISO D000 errors==0'

Example (API)

check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')

1.3.4.2.2. dataformat#

Free text description of the type of data files acceptable as checklist signoff validation.

Description

Checklist: item data format

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_dataformat 'standard item <str>'

Example (CLI)

-checklist_dataformat 'ISO D000 README'

Example (API)

check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')

1.3.4.2.3. description#

A short one line description of the checklist item.

Description

Checklist: item description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_description 'standard item <str>'

Example (CLI)

-checklist_description 'ISO D000 A-DESCRIPTION'

Example (API)

check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')

1.3.4.2.4. ok#

Boolean check mark for the checklist item. A value of True indicates a human has inspected the all item dictionary parameters and verified they check out.

Description

Checklist: item ok

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -checklist_ok 'standard item <bool>'

Example (CLI)

-checklist_ok 'ISO D000 true'

Example (API)

check.set('checklist', 'ISO', 'D000', 'ok', True)

1.3.4.2.5. rationale#

Rationale for the checklist item. Rationale should be a unique alphanumeric code used by the standard or a short one line or single word description.

Description

Checklist: item rationale

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_rationale 'standard item <str>'

Example (CLI)

-checklist_rationale 'ISO D000 reliability'

Example (API)

check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')

1.3.4.2.6. report#

Filepath to report(s) of specified type documenting the successful validation of the checklist item.

Description

Checklist: item report

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_report 'standard item <file>'

Example (CLI)

-checklist_report 'ISO D000 my.rpt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')

1.3.4.2.7. requirement#

A complete requirement description of the checklist item entered as a multi-line string.

Description

Checklist: item requirement

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_requirement 'standard item <str>'

Example (CLI)

-checklist_requirement 'ISO D000 DOCSTRING'

Example (API)

check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')

1.3.4.2.8. task#

Flowgraph job and task used to verify the checklist item. The parameter should be left empty for manual and for tool flows that bypass the SC infrastructure.

Description

Checklist: item task

Type

[(str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_task 'standard item <(str,str,str)>'

Example (CLI)

-checklist_task 'ISO D000 (job0,place,0)'

Example (API)

check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))

1.3.4.2.9. waiver#

Filepath to report(s) documenting waivers for the checklist item specified on a per metric basis.

Description

Checklist: item metric waivers

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_waiver 'standard item metric <file>'

Example (CLI)

-checklist_waiver 'ISO D000 bold my.txt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')

1.3.4.3. flowgraph#

Class Flowgraph

Class FlowgraphNodeSchema

1.3.4.3.1. args#

User-specified arguments passed to the task’s setup() method. This allows for customizing a specific node’s behavior without affecting other nodes running the same task.

Description

Flowgraph: Node-specific arguments

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_args 'flow step index <str>'

Example (CLI)

-flowgraph_args 'asicflow cts 0 buffer_cells'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')

1.3.4.3.2. goal#

Goals specified on a per-node and per-metric basis used to determine whether a task run is considered successful. A task run may be considered failing if the absolute value of any of its reported metrics is larger than the goal for that metric (if set). This is often used for metrics like ‘errors’ or ‘setupwns’ where the goal is 0.

Description

Flowgraph: Metric goals

Type

float

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_goal 'flow step index metric <float>'

Example (CLI)

-flowgraph_goal 'asicflow cts 0 errors 0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)

1.3.4.3.3. input#

A list of inputs for this flowgraph node, where each input is specified as a (step, index) tuple. This defines the dependencies of this node.

Description

Flowgraph: Node inputs

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_input 'flow step index <(str,str)>'

Example (CLI)

-flowgraph_input 'asicflow cts 0 (place,0)'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))

1.3.4.3.4. task#

Name of the task (e.g., ‘place’, ‘syn’, ‘join’) associated with the node’s tool.

Description

Flowgraph: Task selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_task 'flow step index <str>'

Example (CLI)

-flowgraph_task 'asicflow myplace 0 place'

Example (API)

flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')

1.3.4.3.5. taskmodule#

Full Python module path and class name of the task, formatted as ‘<full.module.path>/<ClassName>’. This is used to import and instantiate the correct Task class for setup and execution.

Description

Flowgraph: Task module

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_taskmodule 'flow step index <str>'

Example (CLI)

-flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')

1.3.4.3.6. tool#

Name of the tool (e.g., ‘openroad’, ‘yosys’, ‘builtin’) that this node will execute.

Description

Flowgraph: Tool selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_tool 'flow step index <str>'

Example (CLI)

-flowgraph_tool 'asicflow place 0 openroad'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')

1.3.4.3.7. weight#

Weights specified on a per-node and per-metric basis, used by optimization tasks (like ‘minimum’) to calculate a “goodness” score for a run. The score is typically a weighted sum of metric results.

Description

Flowgraph: Metric weights

Type

float

Per step/index

never

Scope

global

Default Value

0.0

CLI Switch

  • -flowgraph_weight 'flow step index metric <float>'

Example (CLI)

-flowgraph_weight 'asicflow cts 0 area_cells 1.0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)

1.3.4.4. history#

1.3.4.5. library#

Class _ProjectLibrary

1.3.4.6. metric#

Class MetricSchema

1.3.4.6.1. errors#

Metric tracking the total number of errors on a per step and index basis.

Description

Metric: total errors

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_errors 'step index <int>'

Example (CLI)

-metric_errors 'dfm 0 0'

Example (API)

project.set('metric', 'errors', 0, step='dfm', index=0)

1.3.4.6.2. exetime#

Metric tracking time spent by the EDA executable [tool,<tool>,task,<task>,exe] on a per step and index basis. It does not include the SiliconCompiler runtime overhead or time waiting for I/O operations and inter-processor communication to complete.

Description

Metric: exetime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_exetime 'step index <float>'

Example (CLI)

-metric_exetime 'dfm 0 10.0'

Example (API)

project.set('metric', 'exetime', 10.0, step='dfm', index=0)

1.3.4.6.3. memory#

Metric tracking total peak program memory footprint on a per step and index basis.

Description

Metric: memory

Type

float

Scope

job

Unit

B

Default Value

None

CLI Switch

  • -metric_memory 'step index <float>'

Example (CLI)

-metric_memory 'dfm 0 10e9'

Example (API)

project.set('metric', 'memory', 10e9, step='dfm', index=0)

1.3.4.6.4. tasktime#

Metric tracking the total amount of time spent on a task from beginning to end, including data transfers and pre/post processing.

Description

Metric: tasktime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_tasktime 'step index <float>'

Example (CLI)

-metric_tasktime 'dfm 0 10.0'

Example (API)

project.set('metric', 'tasktime', 10.0, step='dfm', index=0)

1.3.4.6.5. totaltime#

Metric tracking the total amount of time spent from the beginning of the run up to and including the current step and index.

Description

Metric: totaltime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_totaltime 'step index <float>'

Example (CLI)

-metric_totaltime 'dfm 0 10.0'

Example (API)

project.set('metric', 'totaltime', 10.0, step='dfm', index=0)

1.3.4.6.6. warnings#

Metric tracking the total number of warnings on a per step and index basis.

Description

Metric: total warnings

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_warnings 'step index <int>'

Example (CLI)

-metric_warnings 'dfm 0 0'

Example (API)

project.set('metric', 'warnings', 0, step='dfm', index=0)

1.3.4.7. option#

Class OptionSchema

1.3.4.7.1. alias#

List of filesets to alias during a run. When an alias is specific it will be used instead of the source fileset. It is useful when you want to substitute a fileset from one library with a fileset from another, without changing the original design’s code. For example, you might use it to swap in a different version of an IP block or a specific test environment.

Description

Option: Fileset alias mapping

Type

[(str,str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))

1.3.4.7.2. autoissue#

Enables automatic generation of testcases if the specific node fails

Description

Option: Enables automatic generation of testcases

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -autoissue <bool>

Example (API)

option.set('autoissue', True)

1.3.4.7.3. breakpoint#

Set a breakpoint on specific steps. If the step is a TCL based tool, then the breakpoints stops the flow inside the EDA tool. If the step is a command line tool, then the flow drops into a Python interpreter.

Description

Option: breakpoint list

Type

bool

Scope

job

Default Value

False

CLI Switch

  • -breakpoint <bool>

Example (CLI)

-breakpoint true

Example (API)

option.set('breakpoint', True)

1.3.4.7.4. builddir#

The default build directory is in the local ‘./build’ where SC was executed. This can be used to set an alternate compilation directory path.

Description

Option: build directory

Type

dir

Per step/index

never

Scope

global

Default Value

build

CLI Switch

  • -builddir <dir>

Example (CLI)

-builddir ./build_the_future

Example (API)

option.set('builddir', './build_the_future')

1.3.4.7.5. cachedir#

Filepath to cache used for package data sources. If the cache parameter is empty, “.sc/cache” directory in the user’s home directory will be used.

Description

Option: user cache directory

Type

dir

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -cachedir <dir>

Example (CLI)

-cachedir /home/user/.sc/cache

Example (API)

option.set('cachedir', '/home/user/.sc/cache')

1.3.4.7.6. clean#

Run a job from the start and do not use any of the previous job. If [option,jobincr] is True, the old job is preserved and a new job number is assigned.

Description

Option: cleanup previous job

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -clean <bool>

Example (CLI)

-clean

Example (API)

option.set('clean', True)

1.3.4.7.7. continue#

Attempt to continue even when errors are encountered in the SC implementation. The default behavior is to quit executing the flow if a task ends and the errors metric is greater than 0. Note that the flow will always cease executing if the tool returns a nonzero status code.

Description

Option: continue-on-error

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -continue <bool>

Example (CLI)

-continue

Example (API)

option.set('continue', True)

1.3.4.7.8. credentials#

Filepath to credentials used for remote processing. If the credentials parameter is empty, the remote processing client program tries to access the “.sc/credentials” file in the user’s home directory. The file supports the following fields:

address=<server address> port=<server port> (optional) username=<user id> (optional) password=<password / key used for authentication> (optional)

Description

Option: user credentials file

Type

file

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -credentials <file>

Example (CLI)

-credentials /home/user/.sc/credentials

Example (API)

option.set('credentials', '/home/user/.sc/credentials')

1.3.4.7.9. design#

Name of the top level library

Description

Option: Design library name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -design <str>

Example (CLI)

-design hello_world

Example (API)

option.set('design', 'hello_world')

1.3.4.7.10. env#

Certain tools and reference flows require global environment variables to be set. These variables can be managed externally or specified through the env variable.

Description

Option: environment variables

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('env', 'PDK_HOME', '/disk/mypdk')

1.3.4.7.11. fileset#

List of filesets to use from the selected design library

Description

Option: Selected design filesets

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('fileset', 'rtl')

1.3.4.7.12. flow#

Sets the flow for the current run. The flow name must match up with a ‘flow’ in the flowgraph

Description

Option: flow target

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flow <str>

Example (CLI)

-flow asicflow

Example (API)

option.set('flow', 'asicflow')

1.3.4.7.13. from#

Inclusive list of steps to start execution from. The default is to start at all entry steps in the flow graph.

Description

Option: starting step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -from <str>

Example (CLI)

-from 'import'

Example (API)

option.set('from', 'import')

1.3.4.7.14. hash#

Enables hashing of all inputs and outputs during compilation. The hash values are stored in the hashvalue field of the individual parameters.

Description

Option: file hashing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -hash <bool>

Example (CLI)

-hash

Example (API)

option.set('hash', True)

1.3.4.7.15. jobincr#

Forces an auto-update of the jobname parameter if a directory matching the jobname is found in the build directory. If the jobname does not include a trailing digit, then the number ‘1’ is added to the jobname before updating the jobname parameter.

Description

Option: autoincrement jobname

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -jobincr <bool>

Example (CLI)

-jobincr

Example (API)

option.set('jobincr', True)

1.3.4.7.16. jobname#

Jobname during invocation of Project.run(). The jobname combined with a defined director structure (<dir>/<design>/<jobname>/<step>/<index>) enables multiple levels of transparent job, step, and index introspection.

Description

Option: job name

Type

str

Per step/index

never

Scope

global

Default Value

job0

CLI Switch

  • -jobname <str>

Example (CLI)

-jobname may1

Example (API)

option.set('jobname', 'may1')

1.3.4.7.17. nice#

Sets the type of execution priority of each individual flowgraph steps. If the parameter is undefined, nice will not be used. For more information see Unix ‘nice’.

Description

Option: tool scheduling priority

Type

int

Scope

global

Default Value

None

CLI Switch

  • -nice <int>

Example (CLI)

-nice 5

Example (API)

option.set('nice', 5)

1.3.4.7.18. nodashboard#

Disables the dashboard during execution

Description

Option: Disables the dashboard

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodashboard <bool>

Example (API)

option.set('nodashboard', True)

1.3.4.7.19. nodisplay#

This flag prevents SiliconCompiler from opening GUI windows.

Description

Option: headless execution

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodisplay <bool>

Example (CLI)

-nodisplay

Example (API)

option.set('nodisplay', True)

1.3.4.7.20. novercheck#

Disables strict version checking on all invoked tools if True. The list of supported version numbers is defined in the [tool,<tool>,task,<task>,version].

Description

Option: disable version checking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -novercheck <bool>

Example (CLI)

-novercheck

Example (API)

option.set('novercheck', True)

1.3.4.7.21. optmode#

The compiler has modes to prioritize run time and ppa. Modes include.

(O0) = Exploration mode for debugging setup (O1) = Higher effort and better PPA than O0 (O2) = Higher effort and better PPA than O1 (O3) = Signoff quality. Better PPA and higher run times than O2 (O4-O98) = Reserved (compiler/target dependent) (O99) = Experimental highest possible effort, may be unstable

Description

Option: optimization mode

Type

int

Scope

global

Default Value

0

CLI Switch

  • -O<str>
  • -optmode <str>

Example (CLI)

-O3

-optmode 3

Example (API)

option.set('optmode', 'O3')

1.3.4.7.22. prune#

List of starting nodes for branches to be pruned. The default is to not prune any nodes/branches.

Description

Option: flowgraph pruning

Type

[(str,str)]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -prune 'node <(str,str)>'

Example (CLI)

-prune (syn,0)

Example (API)

option.set('prune', ('syn', '0'))

1.3.4.7.23. quiet#

The -quiet option forces all steps to print to a log file. This can be useful with Modern EDA tools which print significant content to the screen.

Description

Option: quiet execution

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -quiet <bool>

Example (CLI)

-quiet

Example (API)

option.set('quiet', True)

1.3.4.7.24. remote#

Sends job for remote processing if set to true. The remote option requires a credentials file to be placed in the home directory. Fore more information, see the credentials parameter.

Description

Option: enable remote processing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -remote <bool>

Example (CLI)

-remote

Example (API)

option.set('remote', True)

1.3.4.7.25. scheduler#

Class SchedulerSchema

1.3.4.7.25.1. cores#

Specifies the number CPU cores required to run the job. For the slurm scheduler, this translates to the ‘-c’ switch. For more information, see the job scheduler documentation

Description

Option: Scheduler core constraint

Type

int

Scope

global

Default Value

None

CLI Switch

  • -cores <int>

Example (CLI)

-cores 48

Example (API)

option.set('cores', 48)

1.3.4.7.25.2. defer#

Defer initiation of job until the specified time. The parameter is pass through string for remote job scheduler such as slurm. For more information about the exact format specification, see the job scheduler documentation. Examples of valid slurm specific values include: now+1hour, 16:00, 010-01-20T12:34:00. For more information, see the job scheduler documentation.

Description

Option: scheduler start time

Type

str

Scope

global

Default Value

None

CLI Switch

  • -defer <str>

Example (CLI)

-defer 16:00

Example (API)

option.set('defer', '16:00')

1.3.4.7.25.3. maxnodes#

Maximum number of concurrent nodes to run in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum concurrent nodes

Type

int

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -maxnodes <int>

Example (CLI)

-maxnodes 4

Example (API)

option.set('maxnodes', 4)

1.3.4.7.25.4. maxthreads#

Maximum number of threads for each task in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum number of threads to assign a task

Type

int

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('maxthreads', 4)

1.3.4.7.25.5. memory#

Specifies the amount of memory required to run the job, specified in MB. For the slurm scheduler, this translates to the ‘–mem’ switch. For more information, see the job scheduler documentation

Description

Option: scheduler memory constraint

Type

int

Scope

global

Unit

MB

Default Value

None

CLI Switch

  • -memory <int>

Example (CLI)

-memory 8000

Example (API)

option.set('memory', 8000)

1.3.4.7.25.6. msgcontact#

List of email addresses to message on a [option,scheduler,msgevent]. Support for email messages relies on job scheduler daemon support. For more information, see the job scheduler documentation.

Description

Option: message contact

Type

{str}

Scope

global

Default Value

[]

CLI Switch

  • -msgcontact <str>

Example (CLI)

-msgcontact 'wile.e.coyote@acme.com'

Example (API)

option.set('msgcontact', 'wiley@acme.com')

1.3.4.7.25.7. msgevent#

Directs job scheduler to send a message to the user in [option,scheduler,msgcontact] when certain events occur during a task.

  • fail: send an email on failures

  • timeout: send an email on timeouts

  • begin: send an email at the start of a node task

  • end: send an email at the end of a node task

  • summary: send a summary email at the end of the run

  • all: send an email on any event

Description

Option: message event trigger

Type

[enum]

Allowed values

  • all

  • begin

  • end

  • fail

  • summary

  • timeout

Scope

global

Default Value

[]

CLI Switch

  • -msgevent <str>

Example (CLI)

-msgevent all

Example (API)

option.set('msgevent', 'all')

1.3.4.7.25.8. name#

Sets the type of job scheduler to be used for each individual flowgraph steps. If the parameter is undefined, the steps are executed on the same machine that the SC was launched on. If ‘slurm’ is used, the host running the ‘sc’ command must be running a ‘slurmctld’ daemon managing a Slurm cluster. Additionally, the build directory ([option,builddir]) must be located in shared storage which can be accessed by all hosts in the cluster.

Description

Option: scheduler platform

Type

enum

Allowed values

  • docker

  • lsf

  • sge

  • slurm

Scope

global

Default Value

None

CLI Switch

  • -scheduler <str>

Example (CLI)

-scheduler slurm

Example (API)

option.set('name', 'slurm')

1.3.4.7.25.9. options#

Advanced/export options passed through unchanged to the job scheduler as-is. (The user specified options must be compatible with the rest of the scheduler parameters entered.(memory etc). For more information, see the job scheduler documentation.

Description

Option: scheduler arguments

Type

[str]

Scope

global

Default Value

[]

CLI Switch

  • -scheduler_options <str>

Example (CLI)

-scheduler_options "--pty"

Example (API)

option.set('options', "--pty")

1.3.4.7.25.10. queue#

Send the job to the specified queue. With slurm, this translates to ‘partition’. The queue name must match the name of an existing job scheduler queue. For more information, see the job scheduler documentation

Description

Option: scheduler queue

Type

str

Scope

global

Default Value

None

CLI Switch

  • -queue <str>

Example (CLI)

-queue nightrun

Example (API)

option.set('queue', 'nightrun')

1.3.4.7.26. timeout#

Timeout value in seconds. The timeout value is compared against the wall time tracked by the SC runtime to determine if an operation should continue.

Description

Option: timeout value

Type

float

Scope

global

Unit

s

Default Value

None

CLI Switch

  • -timeout <float>

Example (CLI)

-timeout 3600

Example (API)

option.set('timeout', 3600)

1.3.4.7.27. to#

Inclusive list of steps to end execution with. The default is to go to all exit steps in the flow graph.

Description

Option: ending step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -to <str>

Example (CLI)

-to 'syn'

Example (API)

option.set('to', 'syn')

1.3.4.7.28. track#

Turns on tracking of all ‘record’ parameters during each task, otherwise only tool and runtime information will be recorded. Tracking will result in potentially sensitive data being recorded in the manifest so only turn on this feature if you have control of the final manifest.

Description

Option: enable provenance tracking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -track <bool>

Example (CLI)

-track

Example (API)

option.set('track', True)

1.3.4.8. record#

Class RecordSchema

1.3.4.8.1. arch#

Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)

Description

Record: hardware architecture

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_arch 'step index <str>'

Example (CLI)

-record_arch 'dfm 0 x86_64'

Example (API)

schema.set('record', 'arch', 'x86_64', step='dfm', index=0)

1.3.4.8.2. distro#

Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)

Description

Record: distro name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_distro 'step index <str>'

Example (CLI)

-record_distro 'dfm 0 ubuntu'

Example (API)

schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)

1.3.4.8.3. endtime#

Record tracking the end time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: end time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_endtime 'step index <str>'

Example (CLI)

-record_endtime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'endtime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.4.8.4. inputnode#

List of selected inputs for the current step/index specified as (in_step, in_index) tuple.

Description

Record: node inputs

Type

[(str,str)]

Scope

job

Default Value

[]

CLI Switch

  • -record_inputnode 'step index <(str,str)>'

Example (CLI)

-record_inputnode 'cts 0 (place,42)'

Example (API)

schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')

1.3.4.8.5. ipaddr#

Record tracking the IP address per step and index basis.

Description

Record: IP address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_ipaddr 'step index <str>'

Example (CLI)

-record_ipaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)

1.3.4.8.6. kernelversion#

Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction between os kernels and os distributions.

Description

Record: O/S kernel version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_kernelversion 'step index <str>'

Example (CLI)

-record_kernelversion 'dfm 0 5.11.0-34-generic'

Example (API)

schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)

1.3.4.8.7. macaddr#

Record tracking the MAC address per step and index basis.

Description

Record: MAC address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_macaddr 'step index <str>'

Example (CLI)

-record_macaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)

1.3.4.8.8. machine#

Record tracking the machine name per step and index basis. (myhost, localhost, …

Description

Record: machine name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_machine 'step index <str>'

Example (CLI)

-record_machine 'dfm 0 carbon'

Example (API)

schema.set('record', 'machine', 'carbon', step='dfm', index=0)

1.3.4.8.9. osversion#

Record tracking the O/S version per step and index basis. Since there is not standard version system for operating systems, extracting information from is platform dependent. For Linux based operating systems, the ‘osversion’ is the version of the distro.

Description

Record: O/S version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_osversion 'step index <str>'

Example (CLI)

-record_osversion 'dfm 0 20.04.1-Ubuntu'

Example (API)

schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)

1.3.4.8.10. platform#

Record tracking the platform name per step and index basis. (linux, windows, freebsd)

Description

Record: platform name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_platform 'step index <str>'

Example (CLI)

-record_platform 'dfm 0 linux'

Example (API)

schema.set('record', 'platform', 'linux', step='dfm', index=0)

1.3.4.8.11. publickey#

Record tracking the public key per step and index basis.

Description

Record: public key

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_publickey 'step index <str>'

Example (CLI)

-record_publickey 'dfm 0 <key>'

Example (API)

schema.set('record', 'publickey', '<key>', step='dfm', index=0)

1.3.4.8.12. pythonpackage#

Record tracking for the python packages installed.

Description

Record: python packages

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -record_pythonpackage '<str>'

Example (CLI)

-record_pythonpackage 'siliconcompiler==0.28.0'

Example (API)

schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')

1.3.4.8.13. pythonversion#

Record tracking the Python version per step and index basis. Version of python used to run this task.

Description

Record: Python version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_pythonversion 'step index <str>'

Example (CLI)

-record_pythonversion 'dfm 0 3.12.3'

Example (API)

schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)

1.3.4.8.14. region#

Record tracking the cloud region per step and index basis. Recommended naming methodology:

  • local: node is the local machine

  • onprem: node in on-premises IT infrastructure

  • public: generic public cloud

  • govcloud: generic US government cloud

  • <region>: cloud and entity specific region string name

Description

Record: cloud region

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_region 'step index <str>'

Example (CLI)

-record_region 'dfm 0 "US Gov Boston"'

Example (API)

schema.set('record', 'region', '"US Gov Boston"', step='dfm', index=0)

1.3.4.8.15. remoteid#

Record tracking the job ID for a remote run.

Description

Record: remote job ID

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -record_remoteid '<str>'

Example (CLI)

-record_remoteid '0123456789abcdeffedcba9876543210'

Example (API)

schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')

1.3.4.8.16. scversion#

Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.

Description

Record: software version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_scversion 'step index <str>'

Example (CLI)

-record_scversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'scversion', '1.0', step='dfm', index=0)

1.3.4.8.17. starttime#

Record tracking the start time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: start time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_starttime 'step index <str>'

Example (CLI)

-record_starttime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'starttime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.4.8.18. status#

Record tracking for the status of a node.

Description

Record: node execution status

Type

enum

Allowed values

  • error

  • pending

  • queued

  • running

  • skipped

  • success

  • timeout

Scope

job

Default Value

None

CLI Switch

  • -record_status 'step index <str>'

Example (CLI)

-record_status 'syn 0 success'

Example (API)

schema.set('record', 'status', 'success', step='syn', index='0')

1.3.4.8.19. toolargs#

Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.

Description

Record: tool CLI arguments

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolargs 'step index <str>'

Example (CLI)

-record_toolargs 'dfm 0 "-I include/ foo.v"'

Example (API)

schema.set('record', 'toolargs', '"-I include/ foo.v"', step='dfm', index=0)

1.3.4.8.20. toolexitcode#

Record tracking the tool exit code per step and index basis.

Description

Record: tool exit code

Type

int

Scope

job

Default Value

None

CLI Switch

  • -record_toolexitcode 'step index <int>'

Example (CLI)

-record_toolexitcode 'dfm 0 0'

Example (API)

schema.set('record', 'toolexitcode', 0, step='dfm', index=0)

1.3.4.8.21. toolpath#

Record tracking the tool path per step and index basis. Full path to tool executable used to run this task.

Description

Record: tool path

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolpath 'step index <str>'

Example (CLI)

-record_toolpath 'dfm 0 /usr/bin/openroad'

Example (API)

schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)

1.3.4.8.22. toolversion#

Record tracking the tool version per step and index basis. The tool version captured corresponds to the ‘tool’ parameter within the ‘tool’ dictionary.

Description

Record: tool version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolversion 'step index <str>'

Example (CLI)

-record_toolversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'toolversion', '1.0', step='dfm', index=0)

1.3.4.8.23. userid#

Record tracking the userid per step and index basis.

Description

Record: userid

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_userid 'step index <str>'

Example (CLI)

-record_userid 'dfm 0 wiley'

Example (API)

schema.set('record', 'userid', 'wiley', step='dfm', index=0)

1.3.4.9. schemaversion#

Description

Schema version number

Type

str

Per step/index

never

Scope

global

Default Value

0.54.0

Example (API)

project.get('schemaversion')

1.3.4.10. tool#

1.3.4.10.1. task#

Class Task

1.3.4.10.1.1. dataroot#
1.3.4.10.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.3.4.10.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.3.4.10.1.2. env#

Environment variables to set for individual tasks. Keys and values should be set in accordance with the task’s documentation. Most tasks do not require extra environment variables to function.

Description

Task: environment variables

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_task_env 'tool task env <str>'

Example (CLI)

-tool_task_env 'openroad cts MYVAR 42'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')

1.3.4.10.1.3. exe#

Tool executable name.

Description

Tool: executable name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_exe 'tool <str>'

Example (CLI)

-tool_exe 'openroad openroad'

Example (API)

task.set('tool', 'openroad', 'exe', 'openroad')

1.3.4.10.1.4. format#

File format for tool manifest handoff.

Description

Tool: file format

Type

enum

Allowed values

  • json

  • tcl

  • yaml

Scope

job

Default Value

None

CLI Switch

  • -tool_format 'tool <str>'

Example (CLI)

-tool_format 'yosys tcl'

Example (API)

task.set('tool', 'yosys', 'format', 'tcl')

1.3.4.10.1.5. input#

List of data files to be copied from previous flowgraph steps ‘output’ directory. The list of steps to copy files from is defined by the list defined by the dictionary key [flowgraph,<flow>,<step>,<index>,input]. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: input files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_input 'tool task <file>'

Example (CLI)

-tool_task_input 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')

1.3.4.10.1.6. licenseserver#

Defines a set of tool-specific environment variables used by the executable that depend on license key servers to control access. For multiple servers, separate servers with a colon. The named license variables are read at runtime (Task.run()) and the environment variables are set.

Description

Tool: license servers

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_licenseserver 'name key <str>'

Example (CLI)

-tool_licenseserver 'atask ACME_LICENSE 1700@server'

Example (API)

task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')

1.3.4.10.1.7. option#

List of command line options for the task executable, specified on a per task and per step basis. Options must not include spaces. For multiple argument options, each option is a separate list element.

Description

Task: executable options

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_option 'tool task <str>'

Example (CLI)

-tool_task_option 'openroad cts -no_init'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')

1.3.4.10.1.8. output#

List of data files written to the ‘output’ directory of the tool/task/step/index used in the keypath. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: output files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_output 'tool task <file>'

Example (CLI)

-tool_task_output 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')

1.3.4.10.1.9. path#

File system path to tool executable. The path is prepended to the system PATH environment variable for batch and interactive runs. The path parameter can be left blank if the [tool,<tool>,task,<task>,exe] is already in the environment search path.

Description

Tool: executable path

Type

dir

Scope

job

Default Value

None

CLI Switch

  • -tool_path 'tool <dir>'

Example (CLI)

-tool_path 'openroad /usr/local/bin'

Example (API)

task.set('tool', 'openroad', 'path', '/usr/local/bin')

1.3.4.10.1.10. postscript#

Path to a user supplied script to execute after the main execution stage of the step but before the design is saved. Exact entry point depends on the step and main script being executed. An example of a postscript entry point would be immediately after global placement.

Description

Task: post-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_postscript 'tool task <file>'

Example (CLI)

-tool_task_postscript 'yosys syn syn_post.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')

1.3.4.10.1.11. prescript#

Path to a user supplied script to execute after reading in the design but before the main execution stage of the step. Exact entry point depends on the step and main script being executed. An example of a prescript entry point would be immediately before global placement.

Description

Task: pre-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_prescript 'tool task <file>'

Example (CLI)

-tool_task_prescript 'yosys syn syn_pre.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')

1.3.4.10.1.12. refdir#

Path to directories containing reference flow scripts, specified on a per step and index basis.

Description

Task: script directory

Type

[dir]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_refdir 'tool task <dir>'

Example (CLI)

-tool_task_refdir 'yosys syn ./myref'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')

1.3.4.10.1.13. regex#

A list of piped together grep commands. Each entry represents a set of command line arguments for grep including the regex pattern to match. Starting with the first list entry, each grep output is piped into the following grep command in the list. Supported grep options include -v and -e. Patterns starting with “-” should be directly preceded by the -e option. The following example illustrates the concept.

UNIX grep:

$ grep WARNING place.log | grep -v "bbox" > place.warnings

SiliconCompiler:

task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',
         ["WARNING", "-v bbox"])

The “errors” and “warnings” suffixes are special cases. When set, the number of matches found for these regexes will be added to the errors and warnings metrics for the task, respectively. This will also cause the logfile to be added to the [tool,<tool>,task,<task>,report,...] parameter for those metrics, if not already present.

Description

Task: regex filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_regex 'tool task suffix <str>'

Example (CLI)

-tool_task_regex 'openroad place errors "'-v ERROR'"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')

1.3.4.10.1.14. report#

List of report files associated with a specific ‘metric’. The file path specified is relative to the run directory of the current task.

Description

Task: metric report files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_report 'tool task metric <file>'

Example (CLI)

-tool_task_report 'openroad place holdtns "place 0 place.log"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')

1.3.4.10.1.15. require#

List of keypaths to required task parameters. The list is used by Project.check_manifest() to verify that all parameters have been set up before step execution begins.

Description

Task: parameter requirements

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_require 'tool task <str>'

Example (CLI)

-tool_task_require 'openroad cts design'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')

1.3.4.10.1.16. sbom#

Paths to software bill of material (SBOM) document file of the tool specified on a per version basis. The SBOM includes critical package information about the tool including the list of included components, licenses, and copyright. The SBOM file is generally provided as in a a standardized open data format such as SPDX.

Description

Tool: software BOM

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_sbom 'tool version <file>'

Example (CLI)

-tool_sbom 'yosys 1.0.1 ys_sbom.json'

Example (API)

task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')

1.3.4.10.1.17. script#

Path to the entry script called by the executable specified on a per task and per step basis.

Description

Task: entry script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_script 'tool task <file>'

Example (CLI)

-tool_task_script 'yosys syn syn.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')

1.3.4.10.1.18. stderr#
1.3.4.10.1.18.1. destination#

Defines where to direct the output generated over stderr. Supported options are: none: the stream generated to STDERR is ignored log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>

Description

Task: destination for stderr

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_destination 'tool task <str>'

Example (CLI)

-tool_task_stderr_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')

1.3.4.10.1.18.2. suffix#

Specifies the file extension for the content redirected from stderr.

Description

Task: file suffix for redirected stderr

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_suffix 'tool task <str>'

Example (CLI)

-tool_task_stderr_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')

1.3.4.10.1.19. stdout#
1.3.4.10.1.19.1. destination#

Defines where to direct the output generated over stdout. Supported options are: none: the stream generated to STDOUT is ignored. log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>.

Description

Task: destination for stdout

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_destination 'tool task <str>'

Example (CLI)

-tool_task_stdout_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')

1.3.4.10.1.19.2. suffix#

Specifies the file extension for the content redirected from stdout.

Description

Task: file suffix for redirected stdout

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_suffix 'tool task <str>'

Example (CLI)

-tool_task_stdout_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')

1.3.4.10.1.20. threads#

Thread parallelism to use for execution specified on a per task and per step basis. If not specified, SC queries the operating system and sets the threads based on the maximum thread count supported by the hardware.

Description

Task: thread parallelism

Type

int

Scope

job

Default Value

None

CLI Switch

  • -tool_task_threads 'tool task <int>'

Example (CLI)

-tool_task_threads 'magic drc 64'

Example (API)

task.set('tool', 'magic', 'task', 'drc', 'threads', '64')

1.3.4.10.1.21. vendor#

Name of the tool vendor. Parameter can be used to set vendor specific technology variables in the PDK and libraries. For open source projects, the project name should be used in place of vendor.

Description

Tool: vendor

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -tool_vendor 'tool <str>'

Example (CLI)

-tool_vendor 'yosys yosys'

Example (API)

task.set('tool', 'yosys', 'vendor', 'yosys')

1.3.4.10.1.22. version#

List of acceptable versions of the tool executable to be used. Each entry in this list must be a version specifier as described by Python PEP-440. During task execution, the tool is called with the ‘vswitch’ to check the runtime executable version. If the version of the system executable is not allowed by any of the specifiers in ‘version’, then the job is halted pre-execution. For backwards compatibility, entries that do not conform to the standard will be interpreted as a version with an ‘==’ specifier. This check can be disabled by setting [option,novercheck] to True.

Description

Tool: version

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_version 'tool <str>'

Example (CLI)

-tool_version 'openroad >=v2.0'

Example (API)

task.set('tool', 'openroad', 'version', '>=v2.0')

1.3.4.10.1.23. vswitch#

Command line switch to use with executable used to print out the version number. Common switches include -v, -version, --version. Some tools may require extra flags to run in batch mode.

Description

Tool: executable version switch

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_vswitch 'tool <str>'

Example (CLI)

-tool_vswitch 'openroad -version'

Example (API)

task.set('tool', 'openroad', 'vswitch', '-version')

1.3.4.10.1.24. warningoff#

A list of tool warnings for which printing should be suppressed. Generally this is done on a per design basis after review has determined that warning can be safely ignored The code for turning off warnings can be found in the specific task reference manual.

Description

Task: warning filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_warningoff 'tool task <str>'

Example (CLI)

-tool_task_warningoff 'verilator lint COMBDLY'

Example (API)

task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')

1.3.5. Sim#

A specialized Project class tailored for simulation tasks.

This class can be extended with simulation-specific schema parameters, methods, and flows.

File: project.py

Class Sim

1.3.5.1. arg#

1.3.5.1.1. index#

Description

ARG: index argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_index <str>

Example (CLI)

-arg_index 0

Example (API)

project.set('arg', 'index', '0')

1.3.5.1.2. step#

Description

ARG: step argument

Type

str

Per step/index

never

Scope

scratch

Default Value

None

CLI Switch

  • -arg_step <str>

Example (CLI)

-arg_step 'route'

Example (API)

project.set('arg', 'step', 'route')

1.3.5.2. checklist#

Class Checklist

Class Criteria

1.3.5.2.1. criteria#

Simple list of signoff criteria for checklist item which must all be met for signoff. Each signoff criteria consists of a metric, a relational operator, and a value in the form ‘metric op value’.

Description

Checklist: item criteria

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_criteria 'standard item <str>'

Example (CLI)

-checklist_criteria 'ISO D000 errors==0'

Example (API)

check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')

1.3.5.2.2. dataformat#

Free text description of the type of data files acceptable as checklist signoff validation.

Description

Checklist: item data format

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_dataformat 'standard item <str>'

Example (CLI)

-checklist_dataformat 'ISO D000 README'

Example (API)

check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')

1.3.5.2.3. description#

A short one line description of the checklist item.

Description

Checklist: item description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_description 'standard item <str>'

Example (CLI)

-checklist_description 'ISO D000 A-DESCRIPTION'

Example (API)

check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')

1.3.5.2.4. ok#

Boolean check mark for the checklist item. A value of True indicates a human has inspected the all item dictionary parameters and verified they check out.

Description

Checklist: item ok

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -checklist_ok 'standard item <bool>'

Example (CLI)

-checklist_ok 'ISO D000 true'

Example (API)

check.set('checklist', 'ISO', 'D000', 'ok', True)

1.3.5.2.5. rationale#

Rationale for the checklist item. Rationale should be a unique alphanumeric code used by the standard or a short one line or single word description.

Description

Checklist: item rationale

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_rationale 'standard item <str>'

Example (CLI)

-checklist_rationale 'ISO D000 reliability'

Example (API)

check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')

1.3.5.2.6. report#

Filepath to report(s) of specified type documenting the successful validation of the checklist item.

Description

Checklist: item report

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_report 'standard item <file>'

Example (CLI)

-checklist_report 'ISO D000 my.rpt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')

1.3.5.2.7. requirement#

A complete requirement description of the checklist item entered as a multi-line string.

Description

Checklist: item requirement

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -checklist_requirement 'standard item <str>'

Example (CLI)

-checklist_requirement 'ISO D000 DOCSTRING'

Example (API)

check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')

1.3.5.2.8. task#

Flowgraph job and task used to verify the checklist item. The parameter should be left empty for manual and for tool flows that bypass the SC infrastructure.

Description

Checklist: item task

Type

[(str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_task 'standard item <(str,str,str)>'

Example (CLI)

-checklist_task 'ISO D000 (job0,place,0)'

Example (API)

check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))

1.3.5.2.9. waiver#

Filepath to report(s) documenting waivers for the checklist item specified on a per metric basis.

Description

Checklist: item metric waivers

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -checklist_waiver 'standard item metric <file>'

Example (CLI)

-checklist_waiver 'ISO D000 bold my.txt'

Example (API)

check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')

1.3.5.3. flowgraph#

Class Flowgraph

Class FlowgraphNodeSchema

1.3.5.3.1. args#

User-specified arguments passed to the task’s setup() method. This allows for customizing a specific node’s behavior without affecting other nodes running the same task.

Description

Flowgraph: Node-specific arguments

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_args 'flow step index <str>'

Example (CLI)

-flowgraph_args 'asicflow cts 0 buffer_cells'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')

1.3.5.3.2. goal#

Goals specified on a per-node and per-metric basis used to determine whether a task run is considered successful. A task run may be considered failing if the absolute value of any of its reported metrics is larger than the goal for that metric (if set). This is often used for metrics like ‘errors’ or ‘setupwns’ where the goal is 0.

Description

Flowgraph: Metric goals

Type

float

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_goal 'flow step index metric <float>'

Example (CLI)

-flowgraph_goal 'asicflow cts 0 errors 0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)

1.3.5.3.3. input#

A list of inputs for this flowgraph node, where each input is specified as a (step, index) tuple. This defines the dependencies of this node.

Description

Flowgraph: Node inputs

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -flowgraph_input 'flow step index <(str,str)>'

Example (CLI)

-flowgraph_input 'asicflow cts 0 (place,0)'

Example (API)

flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))

1.3.5.3.4. task#

Name of the task (e.g., ‘place’, ‘syn’, ‘join’) associated with the node’s tool.

Description

Flowgraph: Task selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_task 'flow step index <str>'

Example (CLI)

-flowgraph_task 'asicflow myplace 0 place'

Example (API)

flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')

1.3.5.3.5. taskmodule#

Full Python module path and class name of the task, formatted as ‘<full.module.path>/<ClassName>’. This is used to import and instantiate the correct Task class for setup and execution.

Description

Flowgraph: Task module

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_taskmodule 'flow step index <str>'

Example (CLI)

-flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')

1.3.5.3.6. tool#

Name of the tool (e.g., ‘openroad’, ‘yosys’, ‘builtin’) that this node will execute.

Description

Flowgraph: Tool selection

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flowgraph_tool 'flow step index <str>'

Example (CLI)

-flowgraph_tool 'asicflow place 0 openroad'

Example (API)

flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')

1.3.5.3.7. weight#

Weights specified on a per-node and per-metric basis, used by optimization tasks (like ‘minimum’) to calculate a “goodness” score for a run. The score is typically a weighted sum of metric results.

Description

Flowgraph: Metric weights

Type

float

Per step/index

never

Scope

global

Default Value

0.0

CLI Switch

  • -flowgraph_weight 'flow step index metric <float>'

Example (CLI)

-flowgraph_weight 'asicflow cts 0 area_cells 1.0'

Example (API)

flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)

1.3.5.4. history#

1.3.5.5. library#

Class _ProjectLibrary

1.3.5.6. metric#

Class MetricSchema

1.3.5.6.1. errors#

Metric tracking the total number of errors on a per step and index basis.

Description

Metric: total errors

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_errors 'step index <int>'

Example (CLI)

-metric_errors 'dfm 0 0'

Example (API)

project.set('metric', 'errors', 0, step='dfm', index=0)

1.3.5.6.2. exetime#

Metric tracking time spent by the EDA executable [tool,<tool>,task,<task>,exe] on a per step and index basis. It does not include the SiliconCompiler runtime overhead or time waiting for I/O operations and inter-processor communication to complete.

Description

Metric: exetime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_exetime 'step index <float>'

Example (CLI)

-metric_exetime 'dfm 0 10.0'

Example (API)

project.set('metric', 'exetime', 10.0, step='dfm', index=0)

1.3.5.6.3. memory#

Metric tracking total peak program memory footprint on a per step and index basis.

Description

Metric: memory

Type

float

Scope

job

Unit

B

Default Value

None

CLI Switch

  • -metric_memory 'step index <float>'

Example (CLI)

-metric_memory 'dfm 0 10e9'

Example (API)

project.set('metric', 'memory', 10e9, step='dfm', index=0)

1.3.5.6.4. tasktime#

Metric tracking the total amount of time spent on a task from beginning to end, including data transfers and pre/post processing.

Description

Metric: tasktime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_tasktime 'step index <float>'

Example (CLI)

-metric_tasktime 'dfm 0 10.0'

Example (API)

project.set('metric', 'tasktime', 10.0, step='dfm', index=0)

1.3.5.6.5. totaltime#

Metric tracking the total amount of time spent from the beginning of the run up to and including the current step and index.

Description

Metric: totaltime

Type

float

Scope

job

Unit

s

Default Value

None

CLI Switch

  • -metric_totaltime 'step index <float>'

Example (CLI)

-metric_totaltime 'dfm 0 10.0'

Example (API)

project.set('metric', 'totaltime', 10.0, step='dfm', index=0)

1.3.5.6.6. warnings#

Metric tracking the total number of warnings on a per step and index basis.

Description

Metric: total warnings

Type

int

Scope

job

Default Value

None

CLI Switch

  • -metric_warnings 'step index <int>'

Example (CLI)

-metric_warnings 'dfm 0 0'

Example (API)

project.set('metric', 'warnings', 0, step='dfm', index=0)

1.3.5.7. option#

Class OptionSchema

1.3.5.7.1. alias#

List of filesets to alias during a run. When an alias is specific it will be used instead of the source fileset. It is useful when you want to substitute a fileset from one library with a fileset from another, without changing the original design’s code. For example, you might use it to swap in a different version of an IP block or a specific test environment.

Description

Option: Fileset alias mapping

Type

[(str,str,str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))

1.3.5.7.2. autoissue#

Enables automatic generation of testcases if the specific node fails

Description

Option: Enables automatic generation of testcases

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -autoissue <bool>

Example (API)

option.set('autoissue', True)

1.3.5.7.3. breakpoint#

Set a breakpoint on specific steps. If the step is a TCL based tool, then the breakpoints stops the flow inside the EDA tool. If the step is a command line tool, then the flow drops into a Python interpreter.

Description

Option: breakpoint list

Type

bool

Scope

job

Default Value

False

CLI Switch

  • -breakpoint <bool>

Example (CLI)

-breakpoint true

Example (API)

option.set('breakpoint', True)

1.3.5.7.4. builddir#

The default build directory is in the local ‘./build’ where SC was executed. This can be used to set an alternate compilation directory path.

Description

Option: build directory

Type

dir

Per step/index

never

Scope

global

Default Value

build

CLI Switch

  • -builddir <dir>

Example (CLI)

-builddir ./build_the_future

Example (API)

option.set('builddir', './build_the_future')

1.3.5.7.5. cachedir#

Filepath to cache used for package data sources. If the cache parameter is empty, “.sc/cache” directory in the user’s home directory will be used.

Description

Option: user cache directory

Type

dir

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -cachedir <dir>

Example (CLI)

-cachedir /home/user/.sc/cache

Example (API)

option.set('cachedir', '/home/user/.sc/cache')

1.3.5.7.6. clean#

Run a job from the start and do not use any of the previous job. If [option,jobincr] is True, the old job is preserved and a new job number is assigned.

Description

Option: cleanup previous job

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -clean <bool>

Example (CLI)

-clean

Example (API)

option.set('clean', True)

1.3.5.7.7. continue#

Attempt to continue even when errors are encountered in the SC implementation. The default behavior is to quit executing the flow if a task ends and the errors metric is greater than 0. Note that the flow will always cease executing if the tool returns a nonzero status code.

Description

Option: continue-on-error

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -continue <bool>

Example (CLI)

-continue

Example (API)

option.set('continue', True)

1.3.5.7.8. credentials#

Filepath to credentials used for remote processing. If the credentials parameter is empty, the remote processing client program tries to access the “.sc/credentials” file in the user’s home directory. The file supports the following fields:

address=<server address> port=<server port> (optional) username=<user id> (optional) password=<password / key used for authentication> (optional)

Description

Option: user credentials file

Type

file

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -credentials <file>

Example (CLI)

-credentials /home/user/.sc/credentials

Example (API)

option.set('credentials', '/home/user/.sc/credentials')

1.3.5.7.9. design#

Name of the top level library

Description

Option: Design library name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -design <str>

Example (CLI)

-design hello_world

Example (API)

option.set('design', 'hello_world')

1.3.5.7.10. env#

Certain tools and reference flows require global environment variables to be set. These variables can be managed externally or specified through the env variable.

Description

Option: environment variables

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('env', 'PDK_HOME', '/disk/mypdk')

1.3.5.7.11. fileset#

List of filesets to use from the selected design library

Description

Option: Selected design filesets

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

option.set('fileset', 'rtl')

1.3.5.7.12. flow#

Sets the flow for the current run. The flow name must match up with a ‘flow’ in the flowgraph

Description

Option: flow target

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -flow <str>

Example (CLI)

-flow asicflow

Example (API)

option.set('flow', 'asicflow')

1.3.5.7.13. from#

Inclusive list of steps to start execution from. The default is to start at all entry steps in the flow graph.

Description

Option: starting step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -from <str>

Example (CLI)

-from 'import'

Example (API)

option.set('from', 'import')

1.3.5.7.14. hash#

Enables hashing of all inputs and outputs during compilation. The hash values are stored in the hashvalue field of the individual parameters.

Description

Option: file hashing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -hash <bool>

Example (CLI)

-hash

Example (API)

option.set('hash', True)

1.3.5.7.15. jobincr#

Forces an auto-update of the jobname parameter if a directory matching the jobname is found in the build directory. If the jobname does not include a trailing digit, then the number ‘1’ is added to the jobname before updating the jobname parameter.

Description

Option: autoincrement jobname

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -jobincr <bool>

Example (CLI)

-jobincr

Example (API)

option.set('jobincr', True)

1.3.5.7.16. jobname#

Jobname during invocation of Project.run(). The jobname combined with a defined director structure (<dir>/<design>/<jobname>/<step>/<index>) enables multiple levels of transparent job, step, and index introspection.

Description

Option: job name

Type

str

Per step/index

never

Scope

global

Default Value

job0

CLI Switch

  • -jobname <str>

Example (CLI)

-jobname may1

Example (API)

option.set('jobname', 'may1')

1.3.5.7.17. nice#

Sets the type of execution priority of each individual flowgraph steps. If the parameter is undefined, nice will not be used. For more information see Unix ‘nice’.

Description

Option: tool scheduling priority

Type

int

Scope

global

Default Value

None

CLI Switch

  • -nice <int>

Example (CLI)

-nice 5

Example (API)

option.set('nice', 5)

1.3.5.7.18. nodashboard#

Disables the dashboard during execution

Description

Option: Disables the dashboard

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodashboard <bool>

Example (API)

option.set('nodashboard', True)

1.3.5.7.19. nodisplay#

This flag prevents SiliconCompiler from opening GUI windows.

Description

Option: headless execution

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -nodisplay <bool>

Example (CLI)

-nodisplay

Example (API)

option.set('nodisplay', True)

1.3.5.7.20. novercheck#

Disables strict version checking on all invoked tools if True. The list of supported version numbers is defined in the [tool,<tool>,task,<task>,version].

Description

Option: disable version checking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -novercheck <bool>

Example (CLI)

-novercheck

Example (API)

option.set('novercheck', True)

1.3.5.7.21. optmode#

The compiler has modes to prioritize run time and ppa. Modes include.

(O0) = Exploration mode for debugging setup (O1) = Higher effort and better PPA than O0 (O2) = Higher effort and better PPA than O1 (O3) = Signoff quality. Better PPA and higher run times than O2 (O4-O98) = Reserved (compiler/target dependent) (O99) = Experimental highest possible effort, may be unstable

Description

Option: optimization mode

Type

int

Scope

global

Default Value

0

CLI Switch

  • -O<str>
  • -optmode <str>

Example (CLI)

-O3

-optmode 3

Example (API)

option.set('optmode', 'O3')

1.3.5.7.22. prune#

List of starting nodes for branches to be pruned. The default is to not prune any nodes/branches.

Description

Option: flowgraph pruning

Type

[(str,str)]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -prune 'node <(str,str)>'

Example (CLI)

-prune (syn,0)

Example (API)

option.set('prune', ('syn', '0'))

1.3.5.7.23. quiet#

The -quiet option forces all steps to print to a log file. This can be useful with Modern EDA tools which print significant content to the screen.

Description

Option: quiet execution

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -quiet <bool>

Example (CLI)

-quiet

Example (API)

option.set('quiet', True)

1.3.5.7.24. remote#

Sends job for remote processing if set to true. The remote option requires a credentials file to be placed in the home directory. Fore more information, see the credentials parameter.

Description

Option: enable remote processing

Type

bool

Per step/index

never

Scope

global

Default Value

False

CLI Switch

  • -remote <bool>

Example (CLI)

-remote

Example (API)

option.set('remote', True)

1.3.5.7.25. scheduler#

Class SchedulerSchema

1.3.5.7.25.1. cores#

Specifies the number CPU cores required to run the job. For the slurm scheduler, this translates to the ‘-c’ switch. For more information, see the job scheduler documentation

Description

Option: Scheduler core constraint

Type

int

Scope

global

Default Value

None

CLI Switch

  • -cores <int>

Example (CLI)

-cores 48

Example (API)

option.set('cores', 48)

1.3.5.7.25.2. defer#

Defer initiation of job until the specified time. The parameter is pass through string for remote job scheduler such as slurm. For more information about the exact format specification, see the job scheduler documentation. Examples of valid slurm specific values include: now+1hour, 16:00, 010-01-20T12:34:00. For more information, see the job scheduler documentation.

Description

Option: scheduler start time

Type

str

Scope

global

Default Value

None

CLI Switch

  • -defer <str>

Example (CLI)

-defer 16:00

Example (API)

option.set('defer', '16:00')

1.3.5.7.25.3. maxnodes#

Maximum number of concurrent nodes to run in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum concurrent nodes

Type

int

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -maxnodes <int>

Example (CLI)

-maxnodes 4

Example (API)

option.set('maxnodes', 4)

1.3.5.7.25.4. maxthreads#

Maximum number of threads for each task in a job. If not set this will default to the number of cpu cores available.

Description

Option: maximum number of threads to assign a task

Type

int

Per step/index

never

Scope

global

Default Value

None

Example (API)

option.set('maxthreads', 4)

1.3.5.7.25.5. memory#

Specifies the amount of memory required to run the job, specified in MB. For the slurm scheduler, this translates to the ‘–mem’ switch. For more information, see the job scheduler documentation

Description

Option: scheduler memory constraint

Type

int

Scope

global

Unit

MB

Default Value

None

CLI Switch

  • -memory <int>

Example (CLI)

-memory 8000

Example (API)

option.set('memory', 8000)

1.3.5.7.25.6. msgcontact#

List of email addresses to message on a [option,scheduler,msgevent]. Support for email messages relies on job scheduler daemon support. For more information, see the job scheduler documentation.

Description

Option: message contact

Type

{str}

Scope

global

Default Value

[]

CLI Switch

  • -msgcontact <str>

Example (CLI)

-msgcontact 'wile.e.coyote@acme.com'

Example (API)

option.set('msgcontact', 'wiley@acme.com')

1.3.5.7.25.7. msgevent#

Directs job scheduler to send a message to the user in [option,scheduler,msgcontact] when certain events occur during a task.

  • fail: send an email on failures

  • timeout: send an email on timeouts

  • begin: send an email at the start of a node task

  • end: send an email at the end of a node task

  • summary: send a summary email at the end of the run

  • all: send an email on any event

Description

Option: message event trigger

Type

[enum]

Allowed values

  • all

  • begin

  • end

  • fail

  • summary

  • timeout

Scope

global

Default Value

[]

CLI Switch

  • -msgevent <str>

Example (CLI)

-msgevent all

Example (API)

option.set('msgevent', 'all')

1.3.5.7.25.8. name#

Sets the type of job scheduler to be used for each individual flowgraph steps. If the parameter is undefined, the steps are executed on the same machine that the SC was launched on. If ‘slurm’ is used, the host running the ‘sc’ command must be running a ‘slurmctld’ daemon managing a Slurm cluster. Additionally, the build directory ([option,builddir]) must be located in shared storage which can be accessed by all hosts in the cluster.

Description

Option: scheduler platform

Type

enum

Allowed values

  • docker

  • lsf

  • sge

  • slurm

Scope

global

Default Value

None

CLI Switch

  • -scheduler <str>

Example (CLI)

-scheduler slurm

Example (API)

option.set('name', 'slurm')

1.3.5.7.25.9. options#

Advanced/export options passed through unchanged to the job scheduler as-is. (The user specified options must be compatible with the rest of the scheduler parameters entered.(memory etc). For more information, see the job scheduler documentation.

Description

Option: scheduler arguments

Type

[str]

Scope

global

Default Value

[]

CLI Switch

  • -scheduler_options <str>

Example (CLI)

-scheduler_options "--pty"

Example (API)

option.set('options', "--pty")

1.3.5.7.25.10. queue#

Send the job to the specified queue. With slurm, this translates to ‘partition’. The queue name must match the name of an existing job scheduler queue. For more information, see the job scheduler documentation

Description

Option: scheduler queue

Type

str

Scope

global

Default Value

None

CLI Switch

  • -queue <str>

Example (CLI)

-queue nightrun

Example (API)

option.set('queue', 'nightrun')

1.3.5.7.26. timeout#

Timeout value in seconds. The timeout value is compared against the wall time tracked by the SC runtime to determine if an operation should continue.

Description

Option: timeout value

Type

float

Scope

global

Unit

s

Default Value

None

CLI Switch

  • -timeout <float>

Example (CLI)

-timeout 3600

Example (API)

option.set('timeout', 3600)

1.3.5.7.27. to#

Inclusive list of steps to end execution with. The default is to go to all exit steps in the flow graph.

Description

Option: ending step

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -to <str>

Example (CLI)

-to 'syn'

Example (API)

option.set('to', 'syn')

1.3.5.7.28. track#

Turns on tracking of all ‘record’ parameters during each task, otherwise only tool and runtime information will be recorded. Tracking will result in potentially sensitive data being recorded in the manifest so only turn on this feature if you have control of the final manifest.

Description

Option: enable provenance tracking

Type

bool

Scope

global

Default Value

False

CLI Switch

  • -track <bool>

Example (CLI)

-track

Example (API)

option.set('track', True)

1.3.5.8. record#

Class RecordSchema

1.3.5.8.1. arch#

Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)

Description

Record: hardware architecture

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_arch 'step index <str>'

Example (CLI)

-record_arch 'dfm 0 x86_64'

Example (API)

schema.set('record', 'arch', 'x86_64', step='dfm', index=0)

1.3.5.8.2. distro#

Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)

Description

Record: distro name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_distro 'step index <str>'

Example (CLI)

-record_distro 'dfm 0 ubuntu'

Example (API)

schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)

1.3.5.8.3. endtime#

Record tracking the end time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: end time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_endtime 'step index <str>'

Example (CLI)

-record_endtime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'endtime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.5.8.4. inputnode#

List of selected inputs for the current step/index specified as (in_step, in_index) tuple.

Description

Record: node inputs

Type

[(str,str)]

Scope

job

Default Value

[]

CLI Switch

  • -record_inputnode 'step index <(str,str)>'

Example (CLI)

-record_inputnode 'cts 0 (place,42)'

Example (API)

schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')

1.3.5.8.5. ipaddr#

Record tracking the IP address per step and index basis.

Description

Record: IP address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_ipaddr 'step index <str>'

Example (CLI)

-record_ipaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)

1.3.5.8.6. kernelversion#

Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction between os kernels and os distributions.

Description

Record: O/S kernel version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_kernelversion 'step index <str>'

Example (CLI)

-record_kernelversion 'dfm 0 5.11.0-34-generic'

Example (API)

schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)

1.3.5.8.7. macaddr#

Record tracking the MAC address per step and index basis.

Description

Record: MAC address

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_macaddr 'step index <str>'

Example (CLI)

-record_macaddr 'dfm 0 <addr>'

Example (API)

schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)

1.3.5.8.8. machine#

Record tracking the machine name per step and index basis. (myhost, localhost, …

Description

Record: machine name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_machine 'step index <str>'

Example (CLI)

-record_machine 'dfm 0 carbon'

Example (API)

schema.set('record', 'machine', 'carbon', step='dfm', index=0)

1.3.5.8.9. osversion#

Record tracking the O/S version per step and index basis. Since there is not standard version system for operating systems, extracting information from is platform dependent. For Linux based operating systems, the ‘osversion’ is the version of the distro.

Description

Record: O/S version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_osversion 'step index <str>'

Example (CLI)

-record_osversion 'dfm 0 20.04.1-Ubuntu'

Example (API)

schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)

1.3.5.8.10. platform#

Record tracking the platform name per step and index basis. (linux, windows, freebsd)

Description

Record: platform name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_platform 'step index <str>'

Example (CLI)

-record_platform 'dfm 0 linux'

Example (API)

schema.set('record', 'platform', 'linux', step='dfm', index=0)

1.3.5.8.11. publickey#

Record tracking the public key per step and index basis.

Description

Record: public key

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_publickey 'step index <str>'

Example (CLI)

-record_publickey 'dfm 0 <key>'

Example (API)

schema.set('record', 'publickey', '<key>', step='dfm', index=0)

1.3.5.8.12. pythonpackage#

Record tracking for the python packages installed.

Description

Record: python packages

Type

[str]

Per step/index

never

Scope

job

Default Value

[]

CLI Switch

  • -record_pythonpackage '<str>'

Example (CLI)

-record_pythonpackage 'siliconcompiler==0.28.0'

Example (API)

schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')

1.3.5.8.13. pythonversion#

Record tracking the Python version per step and index basis. Version of python used to run this task.

Description

Record: Python version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_pythonversion 'step index <str>'

Example (CLI)

-record_pythonversion 'dfm 0 3.12.3'

Example (API)

schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)

1.3.5.8.14. region#

Record tracking the cloud region per step and index basis. Recommended naming methodology:

  • local: node is the local machine

  • onprem: node in on-premises IT infrastructure

  • public: generic public cloud

  • govcloud: generic US government cloud

  • <region>: cloud and entity specific region string name

Description

Record: cloud region

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_region 'step index <str>'

Example (CLI)

-record_region 'dfm 0 "US Gov Boston"'

Example (API)

schema.set('record', 'region', '"US Gov Boston"', step='dfm', index=0)

1.3.5.8.15. remoteid#

Record tracking the job ID for a remote run.

Description

Record: remote job ID

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -record_remoteid '<str>'

Example (CLI)

-record_remoteid '0123456789abcdeffedcba9876543210'

Example (API)

schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')

1.3.5.8.16. scversion#

Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.

Description

Record: software version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_scversion 'step index <str>'

Example (CLI)

-record_scversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'scversion', '1.0', step='dfm', index=0)

1.3.5.8.17. starttime#

Record tracking the start time per step and index basis. Time is recorded with the format YYYY-MM-DD HR:MIN:SEC.MICROSEC for UTC

Description

Record: start time

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_starttime 'step index <str>'

Example (CLI)

-record_starttime 'dfm 0 "2021-09-06 12:20:20.000000"'

Example (API)

schema.set('record', 'starttime', '"2021-09-06 12:20:20.000000"', step='dfm', index=0)

1.3.5.8.18. status#

Record tracking for the status of a node.

Description

Record: node execution status

Type

enum

Allowed values

  • error

  • pending

  • queued

  • running

  • skipped

  • success

  • timeout

Scope

job

Default Value

None

CLI Switch

  • -record_status 'step index <str>'

Example (CLI)

-record_status 'syn 0 success'

Example (API)

schema.set('record', 'status', 'success', step='syn', index='0')

1.3.5.8.19. toolargs#

Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.

Description

Record: tool CLI arguments

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolargs 'step index <str>'

Example (CLI)

-record_toolargs 'dfm 0 "-I include/ foo.v"'

Example (API)

schema.set('record', 'toolargs', '"-I include/ foo.v"', step='dfm', index=0)

1.3.5.8.20. toolexitcode#

Record tracking the tool exit code per step and index basis.

Description

Record: tool exit code

Type

int

Scope

job

Default Value

None

CLI Switch

  • -record_toolexitcode 'step index <int>'

Example (CLI)

-record_toolexitcode 'dfm 0 0'

Example (API)

schema.set('record', 'toolexitcode', 0, step='dfm', index=0)

1.3.5.8.21. toolpath#

Record tracking the tool path per step and index basis. Full path to tool executable used to run this task.

Description

Record: tool path

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolpath 'step index <str>'

Example (CLI)

-record_toolpath 'dfm 0 /usr/bin/openroad'

Example (API)

schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)

1.3.5.8.22. toolversion#

Record tracking the tool version per step and index basis. The tool version captured corresponds to the ‘tool’ parameter within the ‘tool’ dictionary.

Description

Record: tool version

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_toolversion 'step index <str>'

Example (CLI)

-record_toolversion 'dfm 0 1.0'

Example (API)

schema.set('record', 'toolversion', '1.0', step='dfm', index=0)

1.3.5.8.23. userid#

Record tracking the userid per step and index basis.

Description

Record: userid

Type

str

Scope

job

Default Value

None

CLI Switch

  • -record_userid 'step index <str>'

Example (CLI)

-record_userid 'dfm 0 wiley'

Example (API)

schema.set('record', 'userid', 'wiley', step='dfm', index=0)

1.3.5.9. schemaversion#

Description

Schema version number

Type

str

Per step/index

never

Scope

global

Default Value

0.54.0

Example (API)

project.get('schemaversion')

1.3.5.10. tool#

1.3.5.10.1. task#

Class Task

1.3.5.10.1.1. dataroot#
1.3.5.10.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.3.5.10.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.3.5.10.1.2. env#

Environment variables to set for individual tasks. Keys and values should be set in accordance with the task’s documentation. Most tasks do not require extra environment variables to function.

Description

Task: environment variables

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_task_env 'tool task env <str>'

Example (CLI)

-tool_task_env 'openroad cts MYVAR 42'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')

1.3.5.10.1.3. exe#

Tool executable name.

Description

Tool: executable name

Type

str

Scope

job

Default Value

None

CLI Switch

  • -tool_exe 'tool <str>'

Example (CLI)

-tool_exe 'openroad openroad'

Example (API)

task.set('tool', 'openroad', 'exe', 'openroad')

1.3.5.10.1.4. format#

File format for tool manifest handoff.

Description

Tool: file format

Type

enum

Allowed values

  • json

  • tcl

  • yaml

Scope

job

Default Value

None

CLI Switch

  • -tool_format 'tool <str>'

Example (CLI)

-tool_format 'yosys tcl'

Example (API)

task.set('tool', 'yosys', 'format', 'tcl')

1.3.5.10.1.5. input#

List of data files to be copied from previous flowgraph steps ‘output’ directory. The list of steps to copy files from is defined by the list defined by the dictionary key [flowgraph,<flow>,<step>,<index>,input]. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: input files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_input 'tool task <file>'

Example (CLI)

-tool_task_input 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')

1.3.5.10.1.6. licenseserver#

Defines a set of tool-specific environment variables used by the executable that depend on license key servers to control access. For multiple servers, separate servers with a colon. The named license variables are read at runtime (Task.run()) and the environment variables are set.

Description

Tool: license servers

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_licenseserver 'name key <str>'

Example (CLI)

-tool_licenseserver 'atask ACME_LICENSE 1700@server'

Example (API)

task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')

1.3.5.10.1.7. option#

List of command line options for the task executable, specified on a per task and per step basis. Options must not include spaces. For multiple argument options, each option is a separate list element.

Description

Task: executable options

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_option 'tool task <str>'

Example (CLI)

-tool_task_option 'openroad cts -no_init'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')

1.3.5.10.1.8. output#

List of data files written to the ‘output’ directory of the tool/task/step/index used in the keypath. All files must be available for flow to continue. If a file is missing, the program exists on an error.

Description

Task: output files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_output 'tool task <file>'

Example (CLI)

-tool_task_output 'openroad place "place 0 oh_add.def"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')

1.3.5.10.1.9. path#

File system path to tool executable. The path is prepended to the system PATH environment variable for batch and interactive runs. The path parameter can be left blank if the [tool,<tool>,task,<task>,exe] is already in the environment search path.

Description

Tool: executable path

Type

dir

Scope

job

Default Value

None

CLI Switch

  • -tool_path 'tool <dir>'

Example (CLI)

-tool_path 'openroad /usr/local/bin'

Example (API)

task.set('tool', 'openroad', 'path', '/usr/local/bin')

1.3.5.10.1.10. postscript#

Path to a user supplied script to execute after the main execution stage of the step but before the design is saved. Exact entry point depends on the step and main script being executed. An example of a postscript entry point would be immediately after global placement.

Description

Task: post-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_postscript 'tool task <file>'

Example (CLI)

-tool_task_postscript 'yosys syn syn_post.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')

1.3.5.10.1.11. prescript#

Path to a user supplied script to execute after reading in the design but before the main execution stage of the step. Exact entry point depends on the step and main script being executed. An example of a prescript entry point would be immediately before global placement.

Description

Task: pre-step script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_prescript 'tool task <file>'

Example (CLI)

-tool_task_prescript 'yosys syn syn_pre.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')

1.3.5.10.1.12. refdir#

Path to directories containing reference flow scripts, specified on a per step and index basis.

Description

Task: script directory

Type

[dir]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_refdir 'tool task <dir>'

Example (CLI)

-tool_task_refdir 'yosys syn ./myref'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')

1.3.5.10.1.13. regex#

A list of piped together grep commands. Each entry represents a set of command line arguments for grep including the regex pattern to match. Starting with the first list entry, each grep output is piped into the following grep command in the list. Supported grep options include -v and -e. Patterns starting with “-” should be directly preceded by the -e option. The following example illustrates the concept.

UNIX grep:

$ grep WARNING place.log | grep -v "bbox" > place.warnings

SiliconCompiler:

task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',
         ["WARNING", "-v bbox"])

The “errors” and “warnings” suffixes are special cases. When set, the number of matches found for these regexes will be added to the errors and warnings metrics for the task, respectively. This will also cause the logfile to be added to the [tool,<tool>,task,<task>,report,...] parameter for those metrics, if not already present.

Description

Task: regex filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_regex 'tool task suffix <str>'

Example (CLI)

-tool_task_regex 'openroad place errors "'-v ERROR'"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')

1.3.5.10.1.14. report#

List of report files associated with a specific ‘metric’. The file path specified is relative to the run directory of the current task.

Description

Task: metric report files

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_report 'tool task metric <file>'

Example (CLI)

-tool_task_report 'openroad place holdtns "place 0 place.log"'

Example (API)

task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')

1.3.5.10.1.15. require#

List of keypaths to required task parameters. The list is used by Project.check_manifest() to verify that all parameters have been set up before step execution begins.

Description

Task: parameter requirements

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_require 'tool task <str>'

Example (CLI)

-tool_task_require 'openroad cts design'

Example (API)

task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')

1.3.5.10.1.16. sbom#

Paths to software bill of material (SBOM) document file of the tool specified on a per version basis. The SBOM includes critical package information about the tool including the list of included components, licenses, and copyright. The SBOM file is generally provided as in a a standardized open data format such as SPDX.

Description

Tool: software BOM

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_sbom 'tool version <file>'

Example (CLI)

-tool_sbom 'yosys 1.0.1 ys_sbom.json'

Example (API)

task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')

1.3.5.10.1.17. script#

Path to the entry script called by the executable specified on a per task and per step basis.

Description

Task: entry script

Type

[file]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_script 'tool task <file>'

Example (CLI)

-tool_task_script 'yosys syn syn.tcl'

Example (API)

task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')

1.3.5.10.1.18. stderr#
1.3.5.10.1.18.1. destination#

Defines where to direct the output generated over stderr. Supported options are: none: the stream generated to STDERR is ignored log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>

Description

Task: destination for stderr

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_destination 'tool task <str>'

Example (CLI)

-tool_task_stderr_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')

1.3.5.10.1.18.2. suffix#

Specifies the file extension for the content redirected from stderr.

Description

Task: file suffix for redirected stderr

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stderr_suffix 'tool task <str>'

Example (CLI)

-tool_task_stderr_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')

1.3.5.10.1.19. stdout#
1.3.5.10.1.19.1. destination#

Defines where to direct the output generated over stdout. Supported options are: none: the stream generated to STDOUT is ignored. log: the generated stream is stored in <step>.<suffix>; if not in quiet mode, it is additionally dumped to the display. output: the generated stream is stored in outputs/<design>.<suffix>.

Description

Task: destination for stdout

Type

enum

Allowed values

  • log

  • none

  • output

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_destination 'tool task <str>'

Example (CLI)

-tool_task_stdout_destination 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')

1.3.5.10.1.19.2. suffix#

Specifies the file extension for the content redirected from stdout.

Description

Task: file suffix for redirected stdout

Type

str

Scope

job

Default Value

log

CLI Switch

  • -tool_task_stdout_suffix 'tool task <str>'

Example (CLI)

-tool_task_stdout_suffix 'ghdl import log'

Example (API)

task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')

1.3.5.10.1.20. threads#

Thread parallelism to use for execution specified on a per task and per step basis. If not specified, SC queries the operating system and sets the threads based on the maximum thread count supported by the hardware.

Description

Task: thread parallelism

Type

int

Scope

job

Default Value

None

CLI Switch

  • -tool_task_threads 'tool task <int>'

Example (CLI)

-tool_task_threads 'magic drc 64'

Example (API)

task.set('tool', 'magic', 'task', 'drc', 'threads', '64')

1.3.5.10.1.21. vendor#

Name of the tool vendor. Parameter can be used to set vendor specific technology variables in the PDK and libraries. For open source projects, the project name should be used in place of vendor.

Description

Tool: vendor

Type

str

Per step/index

never

Scope

job

Default Value

None

CLI Switch

  • -tool_vendor 'tool <str>'

Example (CLI)

-tool_vendor 'yosys yosys'

Example (API)

task.set('tool', 'yosys', 'vendor', 'yosys')

1.3.5.10.1.22. version#

List of acceptable versions of the tool executable to be used. Each entry in this list must be a version specifier as described by Python PEP-440. During task execution, the tool is called with the ‘vswitch’ to check the runtime executable version. If the version of the system executable is not allowed by any of the specifiers in ‘version’, then the job is halted pre-execution. For backwards compatibility, entries that do not conform to the standard will be interpreted as a version with an ‘==’ specifier. This check can be disabled by setting [option,novercheck] to True.

Description

Tool: version

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_version 'tool <str>'

Example (CLI)

-tool_version 'openroad >=v2.0'

Example (API)

task.set('tool', 'openroad', 'version', '>=v2.0')

1.3.5.10.1.23. vswitch#

Command line switch to use with executable used to print out the version number. Common switches include -v, -version, --version. Some tools may require extra flags to run in batch mode.

Description

Tool: executable version switch

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_vswitch 'tool <str>'

Example (CLI)

-tool_vswitch 'openroad -version'

Example (API)

task.set('tool', 'openroad', 'vswitch', '-version')

1.3.5.10.1.24. warningoff#

A list of tool warnings for which printing should be suppressed. Generally this is done on a per design basis after review has determined that warning can be safely ignored The code for turning off warnings can be found in the specific task reference manual.

Description

Task: warning filter

Type

[str]

Scope

job

Default Value

[]

CLI Switch

  • -tool_task_warningoff 'tool task <str>'

Example (CLI)

-tool_task_warningoff 'verilator lint COMBDLY'

Example (API)

task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')

1.4. Library Parameters#

1.4.1. General#

1.4.1.1. Design#

Schema for a ‘design’.

This class inherits from DependencySchema and FileSetSchema, adds parameters and methods specific to describing a design, such as its top module, source filesets, and compilation settings.

File: design.py

Class Design

1.4.1.1.1. dataroot#
1.4.1.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.4.1.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.4.1.1.2. deps#

List of named object dependencies included via add_dep().

Description

List of object dependencies

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

1.4.1.1.3. fileset#

Class FileSetSchema

1.4.1.1.3.1. define#

Defines macros at compile time for design languages that support preprocessing, such as Verilog, C, and C++. The macro format is is MACRONAME[=value], where [=value] is optional.

Description

Preprocessor macro definitions

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')

1.4.1.1.3.2. depfileset#

Sets the mapping for dependency filesets.

Description

Design dependency fileset

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))

1.4.1.1.3.3. file#

List of files grouped as a named set (‘fileset’). The exact names of filetypes and filesets must match the names used in tasks called during flowgraph execution. The files are processed in the order specified by the ordered file list.

Description

Fileset files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')

schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')

1.4.1.1.3.4. idir#

Include paths specify directories to scan for header files during compilation. If multiple paths are provided, they are searched in the order given.

Description

Include file search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'idir', './rtl')

design.set('fileset', 'testbench', 'idir', '/testbench')

1.4.1.1.3.5. lib#

Specifies libraries to use during compilation. The compiler searches for library in the compiler standard library paths and in the paths specified by [fileset,<fileset>,libdir] parameter.

Description

Design libraries to include

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'lib', 'mylib')

1.4.1.1.3.6. libdir#

Specifies directories to scan for libraries provided with the [fileset,<fileset>,lib] parameter. If multiple paths are provided, they are searched based on the order of the libdir list.

Description

Library search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'libdir', '/usr/lib')

1.4.1.1.3.7. param#

Sets a named parameter to a string value. The value is limited to basic data literals. The types of parameters and values supported is tightly coupled to tools being used. For example, in Verilog only integer literals (64’h4, 2’b0, 4) and strings are supported.

Description

Design parameters

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'param', 'N', '64')

1.4.1.1.3.8. topmodule#

Name of top module specified on a per fileset basis.

Description

Top module name

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'topmodule', 'mytop')

design.set('fileset', 'testbench', 'topmodule', 'tb')

1.4.1.1.3.9. undefine#

Undefines a macro that may have been previously defined via the compiler, options, or header files.

Description

Preprocessor macro undefine

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')

1.4.1.1.4. package#

Class PackageSchema

1.4.1.1.4.1. author#
1.4.1.1.4.1.1. email#

Package author email provided with full name as key and email as value.

Description

Package: author email

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_email 'userid <str>'

Example (CLI)

-package_author_email 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'email', 'wiley@acme.com')

1.4.1.1.4.1.2. name#

Package author name provided with full name as key and name as value.

Description

Package: author name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_name 'userid <str>'

Example (CLI)

-package_author_name 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'name', 'wiley@acme.com')

1.4.1.1.4.1.3. organization#

Package author organization provided with full name as key and organization as value.

Description

Package: author organization

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_organization 'userid <str>'

Example (CLI)

-package_author_organization 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'organization', 'wiley@acme.com')

1.4.1.1.4.2. description#

Package short one line description for package managers and summary reports.

Description

Package: description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_description <str>

Example (CLI)

-package_description 'Yet another cpu'

Example (API)

schema.set('description', 'Yet another cpu')

1.4.1.1.4.3. doc#
1.4.1.1.4.3.1. datasheet#

Package list of datasheet documents.

Description

Package: datasheet document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_datasheet <file>

Example (CLI)

-package_doc_datasheet datasheet.pdf

Example (API)

schema.set('doc', 'datasheet', 'datasheet.pdf')

1.4.1.1.4.3.2. quickstart#

Package list of quickstart documents.

Description

Package: quickstart document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_quickstart <file>

Example (CLI)

-package_doc_quickstart quickstart.pdf

Example (API)

schema.set('doc', 'quickstart', 'quickstart.pdf')

1.4.1.1.4.3.3. reference#

Package list of reference documents.

Description

Package: reference document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_reference <file>

Example (CLI)

-package_doc_reference reference.pdf

Example (API)

schema.set('doc', 'reference', 'reference.pdf')

1.4.1.1.4.3.4. releasenotes#

Package list of releasenotes documents.

Description

Package: releasenotes document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_releasenotes <file>

Example (CLI)

-package_doc_releasenotes releasenotes.pdf

Example (API)

schema.set('doc', 'releasenotes', 'releasenotes.pdf')

1.4.1.1.4.3.5. signoff#

Package list of signoff documents.

Description

Package: signoff document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_signoff <file>

Example (CLI)

-package_doc_signoff signoff.pdf

Example (API)

schema.set('doc', 'signoff', 'signoff.pdf')

1.4.1.1.4.3.6. testplan#

Package list of testplan documents.

Description

Package: testplan document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_testplan <file>

Example (CLI)

-package_doc_testplan testplan.pdf

Example (API)

schema.set('doc', 'testplan', 'testplan.pdf')

1.4.1.1.4.3.7. tutorial#

Package list of tutorial documents.

Description

Package: tutorial document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_tutorial <file>

Example (CLI)

-package_doc_tutorial tutorial.pdf

Example (API)

schema.set('doc', 'tutorial', 'tutorial.pdf')

1.4.1.1.4.3.8. userguide#

Package list of userguide documents.

Description

Package: userguide document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_userguide <file>

Example (CLI)

-package_doc_userguide userguide.pdf

Example (API)

schema.set('doc', 'userguide', 'userguide.pdf')

1.4.1.1.4.4. license#

Package list of SPDX license identifiers.

Description

Package: license identifiers

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_license <str>

Example (CLI)

-package_license 'Apache-2.0'

Example (API)

schema.set('license', 'Apache-2.0')

1.4.1.1.4.5. licensefile#

Package list of license files for to be applied in cases when a SPDX identifier is not available. (eg. proprietary licenses).

Description

Package: license files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_licensefile <file>

Example (CLI)

-package_licensefile './LICENSE'

Example (API)

schema.set('licensefile', './LICENSE')

1.4.1.1.4.6. vendor#

Package vendor.

Description

Package: vendor

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_vendor <str>

Example (CLI)

-package_vendor acme

Example (API)

schema.set('vendor', 'acme')

1.4.1.1.4.7. version#

Package version. Can be a branch, tag, commit hash, or a semver compatible version.

Description

Package: version

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_version <str>

Example (CLI)

-package_version 1.0

Example (API)

schema.set('version', '1.0')

1.4.1.2. Schematic#

Basic schematic entry class for designing systems with real physical components.

File: schematic.py

Class Schematic

1.4.1.2.1. schematic#
1.4.1.2.1.1. buschar#

Specifies the character used to express bus bits. If the bus character is used as part of a name, it must be escaped with a backslash(‘’).

Description

Schematic bus character

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic', 'buschar', '[]')

1.4.1.2.1.2. component#
1.4.1.2.1.2.1. connection#

Net connections specified on a per instance and per instance-pin basis. Pin and net names must include the appropriate bit index in cases of pin or net vectors. Bit index optional for scalar nets and pins.

Description

Component pin connections

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic','component','i0','connection', 'A[0]', 'in[0]')

schematic.set('schematic','component','i0','connection', 'CLK', 'clk_in')

1.4.1.2.1.2.2. partname#

Partname (cellname) of a component (instance) specified on a per instance basis.

Description

Component part name

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic','component','i0','partname','INV')

1.4.1.2.1.3. hierchar#

Specifies the character used to express hierarchy. If the hierarchy character is used as part of a name, it must be escaped with a backslash(‘’).

Description

Schematic hierarchy character

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic', 'hierchar', '/')

1.4.1.2.1.4. net#
1.4.1.2.1.4.1. bitrange#

Net vector bit range specified as (max,min) tuple.

Description

Net bit range

Type

(int,int)

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic', 'net', 'net0', 'bitrange', (7,0)

1.4.1.2.1.5. part#
1.4.1.2.1.5.1. pin#
1.4.1.2.1.5.1.1. bitrange#

Part pin vector size, specified as a (max,min) tuple. A range of (0,0) indicates a scalar single bit pin.

Description

Library part pin bitrange

Type

(int,int)

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic', 'part', 'INV', 'pin', 'A', 'bitrange', (7,0)

1.4.1.2.1.6. pin#
1.4.1.2.1.6.1. bitrange#

Pin vector size, specified as a (max,min) tuple. A range of (0,0) indicates a scalar single bit pin.

Description

Pin bitrange

Type

(int,int)

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic','pin', 'A', 'bitrange', (7,0)

1.4.1.2.1.6.2. direction#

Direction of pin specified on a per pin basis.

Description

Pin direction

Type

enum

Allowed values

  • inout

  • input

  • output

Per step/index

never

Scope

global

Default Value

None

Example (API)

schematic.set('schematic','pin', 'A', 'direction', 'input')

1.4.2. ASIC Specific#

1.4.2.1. StdCellLibrary#

A class for managing standard cell library schemas.

File: library.py

Class StdCellLibrary

1.4.2.1.1. asic#
1.4.2.1.1.1. aprfileset#

Map between filesets and automated place and route tool files.

Description

ASIC: map of filesets to APR files

Type

{str}

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'aprfileset', 'model.lef')

1.4.2.1.1.2. cells#
1.4.2.1.1.2.1. antenna#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: antenna cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'antenna', '*eco*')

1.4.2.1.1.2.2. clkbuf#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: clkbuf cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'clkbuf', '*eco*')

1.4.2.1.1.2.3. clkgate#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: clkgate cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'clkgate', '*eco*')

1.4.2.1.1.2.4. clklogic#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: clklogic cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'clklogic', '*eco*')

1.4.2.1.1.2.5. decap#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: decap cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'decap', '*eco*')

1.4.2.1.1.2.6. dontuse#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: dontuse cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'dontuse', '*eco*')

1.4.2.1.1.2.7. endcap#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: endcap cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'endcap', '*eco*')

1.4.2.1.1.2.8. filler#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: filler cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'filler', '*eco*')

1.4.2.1.1.2.9. hold#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: hold cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'hold', '*eco*')

1.4.2.1.1.2.10. physicalonly#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: physicalonly cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'physicalonly', '*eco*')

1.4.2.1.1.2.11. tap#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: tap cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'tap', '*eco*')

1.4.2.1.1.2.12. tie#

List of cells grouped by a property that can be accessed directly by the designer and tools. The example below shows how all cells containing the string ‘eco’ could be marked as dont use for the tool.

Description

ASIC: tie cell list

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'cells', 'tie', '*eco*')

1.4.2.1.1.3. libcornerfileset#

Map between filesets and timing corners.

Description

ASIC: map of filesets to timing corners

Type

{str}

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'libcornerfileset', 'slow', 'nldm', 'timing.slow')

1.4.2.1.1.4. pdk#

Description

ASIC:

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

schema.set('asic', 'libcornerfileset', 'slow', 'nldm', 'timing.slow')

1.4.2.1.1.5. pexcornerfileset#

Map between filesets and pex corners.

Description

ASIC: map of filesets to pex corners

Type

{str}

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'pexcornerfileset', 'slow', 'timing.slow')

1.4.2.1.1.6. site#

Site names for a given library architecture.

Description

ASIC: library sites

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'site', 'Site_12T')

1.4.2.1.1.7. stackup#

Set of supported stackups

Description

ASIC:

Type

{str}

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('asic', 'libcornerfileset', 'slow', 'nldm', 'timing.slow')

1.4.2.1.2. dataroot#
1.4.2.1.2.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.4.2.1.2.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.4.2.1.3. deps#

List of named object dependencies included via add_dep().

Description

List of object dependencies

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

1.4.2.1.4. fileset#

Class FileSetSchema

1.4.2.1.4.1. define#

Defines macros at compile time for design languages that support preprocessing, such as Verilog, C, and C++. The macro format is is MACRONAME[=value], where [=value] is optional.

Description

Preprocessor macro definitions

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')

1.4.2.1.4.2. depfileset#

Sets the mapping for dependency filesets.

Description

Design dependency fileset

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))

1.4.2.1.4.3. file#

List of files grouped as a named set (‘fileset’). The exact names of filetypes and filesets must match the names used in tasks called during flowgraph execution. The files are processed in the order specified by the ordered file list.

Description

Fileset files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')

schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')

1.4.2.1.4.4. idir#

Include paths specify directories to scan for header files during compilation. If multiple paths are provided, they are searched in the order given.

Description

Include file search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'idir', './rtl')

design.set('fileset', 'testbench', 'idir', '/testbench')

1.4.2.1.4.5. lib#

Specifies libraries to use during compilation. The compiler searches for library in the compiler standard library paths and in the paths specified by [fileset,<fileset>,libdir] parameter.

Description

Design libraries to include

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'lib', 'mylib')

1.4.2.1.4.6. libdir#

Specifies directories to scan for libraries provided with the [fileset,<fileset>,lib] parameter. If multiple paths are provided, they are searched based on the order of the libdir list.

Description

Library search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'libdir', '/usr/lib')

1.4.2.1.4.7. param#

Sets a named parameter to a string value. The value is limited to basic data literals. The types of parameters and values supported is tightly coupled to tools being used. For example, in Verilog only integer literals (64’h4, 2’b0, 4) and strings are supported.

Description

Design parameters

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'param', 'N', '64')

1.4.2.1.4.8. topmodule#

Name of top module specified on a per fileset basis.

Description

Top module name

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'topmodule', 'mytop')

design.set('fileset', 'testbench', 'topmodule', 'tb')

1.4.2.1.4.9. undefine#

Undefines a macro that may have been previously defined via the compiler, options, or header files.

Description

Preprocessor macro undefine

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')

1.4.2.1.5. package#

Class PackageSchema

1.4.2.1.5.1. author#
1.4.2.1.5.1.1. email#

Package author email provided with full name as key and email as value.

Description

Package: author email

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_email 'userid <str>'

Example (CLI)

-package_author_email 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'email', 'wiley@acme.com')

1.4.2.1.5.1.2. name#

Package author name provided with full name as key and name as value.

Description

Package: author name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_name 'userid <str>'

Example (CLI)

-package_author_name 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'name', 'wiley@acme.com')

1.4.2.1.5.1.3. organization#

Package author organization provided with full name as key and organization as value.

Description

Package: author organization

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_organization 'userid <str>'

Example (CLI)

-package_author_organization 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'organization', 'wiley@acme.com')

1.4.2.1.5.2. description#

Package short one line description for package managers and summary reports.

Description

Package: description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_description <str>

Example (CLI)

-package_description 'Yet another cpu'

Example (API)

schema.set('description', 'Yet another cpu')

1.4.2.1.5.3. doc#
1.4.2.1.5.3.1. datasheet#

Package list of datasheet documents.

Description

Package: datasheet document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_datasheet <file>

Example (CLI)

-package_doc_datasheet datasheet.pdf

Example (API)

schema.set('doc', 'datasheet', 'datasheet.pdf')

1.4.2.1.5.3.2. quickstart#

Package list of quickstart documents.

Description

Package: quickstart document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_quickstart <file>

Example (CLI)

-package_doc_quickstart quickstart.pdf

Example (API)

schema.set('doc', 'quickstart', 'quickstart.pdf')

1.4.2.1.5.3.3. reference#

Package list of reference documents.

Description

Package: reference document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_reference <file>

Example (CLI)

-package_doc_reference reference.pdf

Example (API)

schema.set('doc', 'reference', 'reference.pdf')

1.4.2.1.5.3.4. releasenotes#

Package list of releasenotes documents.

Description

Package: releasenotes document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_releasenotes <file>

Example (CLI)

-package_doc_releasenotes releasenotes.pdf

Example (API)

schema.set('doc', 'releasenotes', 'releasenotes.pdf')

1.4.2.1.5.3.5. signoff#

Package list of signoff documents.

Description

Package: signoff document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_signoff <file>

Example (CLI)

-package_doc_signoff signoff.pdf

Example (API)

schema.set('doc', 'signoff', 'signoff.pdf')

1.4.2.1.5.3.6. testplan#

Package list of testplan documents.

Description

Package: testplan document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_testplan <file>

Example (CLI)

-package_doc_testplan testplan.pdf

Example (API)

schema.set('doc', 'testplan', 'testplan.pdf')

1.4.2.1.5.3.7. tutorial#

Package list of tutorial documents.

Description

Package: tutorial document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_tutorial <file>

Example (CLI)

-package_doc_tutorial tutorial.pdf

Example (API)

schema.set('doc', 'tutorial', 'tutorial.pdf')

1.4.2.1.5.3.8. userguide#

Package list of userguide documents.

Description

Package: userguide document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_userguide <file>

Example (CLI)

-package_doc_userguide userguide.pdf

Example (API)

schema.set('doc', 'userguide', 'userguide.pdf')

1.4.2.1.5.4. license#

Package list of SPDX license identifiers.

Description

Package: license identifiers

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_license <str>

Example (CLI)

-package_license 'Apache-2.0'

Example (API)

schema.set('license', 'Apache-2.0')

1.4.2.1.5.5. licensefile#

Package list of license files for to be applied in cases when a SPDX identifier is not available. (eg. proprietary licenses).

Description

Package: license files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_licensefile <file>

Example (CLI)

-package_licensefile './LICENSE'

Example (API)

schema.set('licensefile', './LICENSE')

1.4.2.1.5.6. vendor#

Package vendor.

Description

Package: vendor

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_vendor <str>

Example (CLI)

-package_vendor acme

Example (API)

schema.set('vendor', 'acme')

1.4.2.1.5.7. version#

Package version. Can be a branch, tag, commit hash, or a semver compatible version.

Description

Package: version

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_version <str>

Example (CLI)

-package_version 1.0

Example (API)

schema.set('version', '1.0')

1.4.2.2. PDK#

A schema for managing and validating Process Design Kit (PDK) configurations.

This class defines the structured parameters that constitute a PDK, such as foundry information, process node, metal stackups, and various technology files required for different EDA tools. It extends the ToolLibrarySchema to provide a standardized way of describing and accessing PDK data within the SiliconCompiler framework.

File: pdk.py

Class PDK

1.4.2.2.1. dataroot#
1.4.2.2.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.4.2.2.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.4.2.2.2. deps#

List of named object dependencies included via add_dep().

Description

List of object dependencies

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

1.4.2.2.3. fileset#

Class FileSetSchema

1.4.2.2.3.1. define#

Defines macros at compile time for design languages that support preprocessing, such as Verilog, C, and C++. The macro format is is MACRONAME[=value], where [=value] is optional.

Description

Preprocessor macro definitions

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')

1.4.2.2.3.2. depfileset#

Sets the mapping for dependency filesets.

Description

Design dependency fileset

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))

1.4.2.2.3.3. file#

List of files grouped as a named set (‘fileset’). The exact names of filetypes and filesets must match the names used in tasks called during flowgraph execution. The files are processed in the order specified by the ordered file list.

Description

Fileset files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')

schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')

1.4.2.2.3.4. idir#

Include paths specify directories to scan for header files during compilation. If multiple paths are provided, they are searched in the order given.

Description

Include file search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'idir', './rtl')

design.set('fileset', 'testbench', 'idir', '/testbench')

1.4.2.2.3.5. lib#

Specifies libraries to use during compilation. The compiler searches for library in the compiler standard library paths and in the paths specified by [fileset,<fileset>,libdir] parameter.

Description

Design libraries to include

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'lib', 'mylib')

1.4.2.2.3.6. libdir#

Specifies directories to scan for libraries provided with the [fileset,<fileset>,lib] parameter. If multiple paths are provided, they are searched based on the order of the libdir list.

Description

Library search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'libdir', '/usr/lib')

1.4.2.2.3.7. param#

Sets a named parameter to a string value. The value is limited to basic data literals. The types of parameters and values supported is tightly coupled to tools being used. For example, in Verilog only integer literals (64’h4, 2’b0, 4) and strings are supported.

Description

Design parameters

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'param', 'N', '64')

1.4.2.2.3.8. topmodule#

Name of top module specified on a per fileset basis.

Description

Top module name

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'topmodule', 'mytop')

design.set('fileset', 'testbench', 'topmodule', 'tb')

1.4.2.2.3.9. undefine#

Undefines a macro that may have been previously defined via the compiler, options, or header files.

Description

Preprocessor macro undefine

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')

1.4.2.2.4. package#

Class PackageSchema

1.4.2.2.4.1. author#
1.4.2.2.4.1.1. email#

Package author email provided with full name as key and email as value.

Description

Package: author email

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_email 'userid <str>'

Example (CLI)

-package_author_email 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'email', 'wiley@acme.com')

1.4.2.2.4.1.2. name#

Package author name provided with full name as key and name as value.

Description

Package: author name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_name 'userid <str>'

Example (CLI)

-package_author_name 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'name', 'wiley@acme.com')

1.4.2.2.4.1.3. organization#

Package author organization provided with full name as key and organization as value.

Description

Package: author organization

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_organization 'userid <str>'

Example (CLI)

-package_author_organization 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'organization', 'wiley@acme.com')

1.4.2.2.4.2. description#

Package short one line description for package managers and summary reports.

Description

Package: description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_description <str>

Example (CLI)

-package_description 'Yet another cpu'

Example (API)

schema.set('description', 'Yet another cpu')

1.4.2.2.4.3. doc#
1.4.2.2.4.3.1. datasheet#

Package list of datasheet documents.

Description

Package: datasheet document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_datasheet <file>

Example (CLI)

-package_doc_datasheet datasheet.pdf

Example (API)

schema.set('doc', 'datasheet', 'datasheet.pdf')

1.4.2.2.4.3.2. quickstart#

Package list of quickstart documents.

Description

Package: quickstart document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_quickstart <file>

Example (CLI)

-package_doc_quickstart quickstart.pdf

Example (API)

schema.set('doc', 'quickstart', 'quickstart.pdf')

1.4.2.2.4.3.3. reference#

Package list of reference documents.

Description

Package: reference document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_reference <file>

Example (CLI)

-package_doc_reference reference.pdf

Example (API)

schema.set('doc', 'reference', 'reference.pdf')

1.4.2.2.4.3.4. releasenotes#

Package list of releasenotes documents.

Description

Package: releasenotes document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_releasenotes <file>

Example (CLI)

-package_doc_releasenotes releasenotes.pdf

Example (API)

schema.set('doc', 'releasenotes', 'releasenotes.pdf')

1.4.2.2.4.3.5. signoff#

Package list of signoff documents.

Description

Package: signoff document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_signoff <file>

Example (CLI)

-package_doc_signoff signoff.pdf

Example (API)

schema.set('doc', 'signoff', 'signoff.pdf')

1.4.2.2.4.3.6. testplan#

Package list of testplan documents.

Description

Package: testplan document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_testplan <file>

Example (CLI)

-package_doc_testplan testplan.pdf

Example (API)

schema.set('doc', 'testplan', 'testplan.pdf')

1.4.2.2.4.3.7. tutorial#

Package list of tutorial documents.

Description

Package: tutorial document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_tutorial <file>

Example (CLI)

-package_doc_tutorial tutorial.pdf

Example (API)

schema.set('doc', 'tutorial', 'tutorial.pdf')

1.4.2.2.4.3.8. userguide#

Package list of userguide documents.

Description

Package: userguide document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_userguide <file>

Example (CLI)

-package_doc_userguide userguide.pdf

Example (API)

schema.set('doc', 'userguide', 'userguide.pdf')

1.4.2.2.4.4. license#

Package list of SPDX license identifiers.

Description

Package: license identifiers

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_license <str>

Example (CLI)

-package_license 'Apache-2.0'

Example (API)

schema.set('license', 'Apache-2.0')

1.4.2.2.4.5. licensefile#

Package list of license files for to be applied in cases when a SPDX identifier is not available. (eg. proprietary licenses).

Description

Package: license files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_licensefile <file>

Example (CLI)

-package_licensefile './LICENSE'

Example (API)

schema.set('licensefile', './LICENSE')

1.4.2.2.4.6. vendor#

Package vendor.

Description

Package: vendor

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_vendor <str>

Example (CLI)

-package_vendor acme

Example (API)

schema.set('vendor', 'acme')

1.4.2.2.4.7. version#

Package version. Can be a branch, tag, commit hash, or a semver compatible version.

Description

Package: version

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_version <str>

Example (CLI)

-package_version 1.0

Example (API)

schema.set('version', '1.0')

1.4.2.2.5. pdk#
1.4.2.2.5.1. aprtechfileset#

Technology file containing setup information needed to enable DRC clean APR for the specified stackup, libarch, and format. The ‘libarch’ specifies the library architecture (e.g. library height). For example a PDK with support for 9 and 12 track libraries might have ‘libarchs’ called 9t and 12t. The standard filetype for specifying place and route design rules for a process node is through a ‘lef’ format technology file. The ‘filetype’ used in the aprtech is used by the tool specific APR TCL scripts to set up the technology parameters. Some tools may require additional files beyond the tech.lef file. Examples of extra file types include antenna, tracks, tapcell, viarules, and em.

Description

PDK: APR technology files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_aprtech 'pdkname tool stackup libarch filetype <file>'

Example (CLI)

-pdk_aprtech 'asap7 openroad M10 12t lef tech.lef'

Example (API)

pdk.set('pdk', 'asap7', 'aprtech', 'openroad', 'M10', '12t', 'lef', 'tech.lef')

1.4.2.2.5.2. d0#

Process defect density (d0) expressed as random defects per cm^2. The value is used to calculate yield losses as a function of area, which in turn affects the chip full factory costs. Two yield models are supported: Poisson (default), and Murphy. The Poisson based yield is calculated as dy = exp(-area * d0/100). The Murphy based yield is calculated as dy = ((1-exp(-area * d0/100))/(area * d0/100))^2.

Description

PDK: process defect density

Type

float

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -pdk_d0 'pdkname <float>'

Example (CLI)

-pdk_d0 'asap7 0.1'

Example (API)

pdk.set('pdk', 'asap7', 'd0', 0.1)

1.4.2.2.5.3. devmodelfileset#

List of filepaths to PDK device models for different simulation purposes and for different tools. Examples of device model types include spice, aging, electromigration, radiation. An example of a ‘spice’ tool is xyce. Device models are specified on a per metal stack basis. Process nodes with a single device model across all stacks will have a unique parameter record per metal stack pointing to the same device model file. Device types and tools are dynamic entries that depend on the tool setup and device technology. Pseudo-standardized device types include spice, em (electromigration), and aging.

Description

PDK: device models

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_devmodel 'pdkname tool simtype stackup <file>'

Example (CLI)

-pdk_devmodel 'asap7 xyce spice M10 asap7.sp'

Example (API)

pdk.set('pdk', 'asap7', 'devmodelfileset', 'xyce', 'spice', 'M10', 'asap7.sp')

1.4.2.2.5.4. displayfileset#

Display configuration files describing colors and pattern schemes for all layers in the PDK. The display configuration file is entered on a stackup and tool basis.

Description

PDK: display file

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_display 'pdkname tool stackup <file>'

Example (CLI)

-pdk_display 'asap7 klayout M10 display.lyt'

Example (API)

pdk.set('pdk', 'asap7', 'display', 'klayout', 'M10', 'display.cfg')

1.4.2.2.5.5. drc#
1.4.2.2.5.5.1. runsetfileset#

Runset files for DRC task.

Description

PDK: DRC runset files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_drc_runset 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_drc_runset 'asap7 magic M10 basic $PDK/drc.rs'

Example (API)

pdk.set('drc', 'runset', 'magic', 'M10', 'basic', '$PDK/drc.rs')

1.4.2.2.5.5.2. waiverfileset#

Waiver files for DRC task.

Description

PDK: DRC waiver files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_drc_waiver 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_drc_waiver 'asap7 magic M10 basic $PDK/drc.txt'

Example (API)

pdk.set('drc', 'waiver', 'magic', 'M10', 'basic', '$PDK/drc.txt')

1.4.2.2.5.6. edgemargin#

Keep-out distance/margin from the edge inwards. The edge is prone to chipping and need special treatment that preclude placement of designs in this area. The edge value is used to calculate effective units per wafer/panel and full factory cost.

Description

PDK: wafer edge keep-out margin

Type

float

Per step/index

never

Scope

global

Unit

mm

Default Value

None

CLI Switch

  • -pdk_edgemargin 'pdkname <float>'

Example (CLI)

-pdk_edgemargin 'asap7 1'

Example (API)

pdk.set('pdk', 'asap7', 'edgemargin', 1)

1.4.2.2.5.7. erc#
1.4.2.2.5.7.1. runsetfileset#

Runset files for ERC task.

Description

PDK: ERC runset files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_erc_runset 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_erc_runset 'asap7 magic M10 basic $PDK/erc.rs'

Example (API)

pdk.set('erc', 'runset', 'magic', 'M10', 'basic', '$PDK/erc.rs')

1.4.2.2.5.7.2. waiverfileset#

Waiver files for ERC task.

Description

PDK: ERC waiver files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_erc_waiver 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_erc_waiver 'asap7 magic M10 basic $PDK/erc.txt'

Example (API)

pdk.set('erc', 'waiver', 'magic', 'M10', 'basic', '$PDK/erc.txt')

1.4.2.2.5.8. fill#
1.4.2.2.5.8.1. runsetfileset#

Runset files for FILL task.

Description

PDK: FILL runset files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_fill_runset 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_fill_runset 'asap7 magic M10 basic $PDK/fill.rs'

Example (API)

pdk.set('fill', 'runset', 'magic', 'M10', 'basic', '$PDK/fill.rs')

1.4.2.2.5.8.2. waiverfileset#

Waiver files for FILL task.

Description

PDK: FILL waiver files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_fill_waiver 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_fill_waiver 'asap7 magic M10 basic $PDK/fill.txt'

Example (API)

pdk.set('fill', 'waiver', 'magic', 'M10', 'basic', '$PDK/fill.txt')

1.4.2.2.5.9. foundry#

Name of foundry corporation. Examples include intel, gf, tsmc, samsung, skywater, virtual. The ‘virtual’ keyword is reserved for simulated non-manufacturable processes.

Description

PDK: foundry name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -pdk_foundry 'pdkname <str>'

Example (CLI)

-pdk_foundry 'asap7 virtual'

Example (API)

pdk.set('pdk', 'asap7', 'foundry', 'virtual')

1.4.2.2.5.10. layermapfileset#

Files describing input/output mapping for streaming layout data from one format to another. A foundry PDK will include an official layer list for all user entered and generated layers supported in the GDS accepted by the foundry for processing, but there is no standardized layer definition format that can be read and written by all EDA tools. To ensure mask layer matching, key/value type mapping files are needed to convert EDA databases to/from GDS and to convert between different types of EDA databases. Layer maps are specified on a per metal stackup basis. The ‘src’ and ‘dst’ can be names of SC supported tools or file formats (like ‘gds’).

Description

PDK: layer map file

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_layermap 'pdkname tool src dst stackup <file>'

Example (CLI)

-pdk_layermap 'asap7 klayout db gds M10 asap7.map'

Example (API)

pdk.set('pdk', 'asap7', 'layermap', 'klayout', 'db', 'gds', 'M10', 'asap7.map')

1.4.2.2.5.11. lvs#
1.4.2.2.5.11.1. runsetfileset#

Runset files for LVS task.

Description

PDK: LVS runset files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_lvs_runset 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_lvs_runset 'asap7 magic M10 basic $PDK/lvs.rs'

Example (API)

pdk.set('lvs', 'runset', 'magic', 'M10', 'basic', '$PDK/lvs.rs')

1.4.2.2.5.11.2. waiverfileset#

Waiver files for LVS task.

Description

PDK: LVS waiver files

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_lvs_waiver 'pdkname tool stackup name <file>'

Example (CLI)

-pdk_lvs_waiver 'asap7 magic M10 basic $PDK/lvs.txt'

Example (API)

pdk.set('lvs', 'waiver', 'magic', 'M10', 'basic', '$PDK/lvs.txt')

1.4.2.2.5.12. maxlayer#

Maximum metal layer to be used for automated place and route specified on a per stackup basis.

Description

PDK: maximum routing layer

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -pdk_maxlayer 'pdk stackup <str>'

Example (CLI)

-pdk_maxlayer 'asap7 2MA4MB2MC M8'

Example (API)

pdk.set('pdk', 'asap7', 'maxlayer', 'MA4MB2MC', 'M8')

1.4.2.2.5.13. minlayer#

Minimum metal layer to be used for automated place and route specified on a per stackup basis.

Description

PDK: minimum routing layer

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -pdk_minlayer 'pdk stackup <str>'

Example (CLI)

-pdk_minlayer 'asap7 2MA4MB2MC M2'

Example (API)

pdk.set('pdk', 'asap7', 'minlayer', '2MA4MB2MC', 'M2')

1.4.2.2.5.14. node#

Approximate relative minimum dimension of the process target specified in nanometers. The parameter is required for flows and tools that leverage the value to drive technology dependent synthesis and APR optimization. Node examples include 180, 130, 90, 65, 45, 32, 22 14, 10, 7, 5, 3.

Description

PDK: process node

Type

float

Per step/index

never

Scope

global

Unit

nm

Default Value

None

CLI Switch

  • -pdk_node 'pdkname <float>'

Example (CLI)

-pdk_node 'asap7 130'

Example (API)

pdk.set('pdk', 'asap7', 'node', 130)

1.4.2.2.5.15. pexmodelfileset#

List of filepaths to PDK wire TCAD models used during automated synthesis, APR, and signoff verification. Pexmodels are specified on a per metal stack basis. Corner values depend on the process being used, but typically include nomenclature such as min, max, nominal. For exact names, refer to the DRM. Pexmodels are generally not standardized and specified on a per tool basis. An example of pexmodel type is ‘fastcap’.

Description

PDK: parasitic TCAD models

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -pdk_pexmodel 'pdkname tool stackup corner <file>'

Example (CLI)

-pdk_pexmodel 'asap7 fastcap M10 max wire.mod'

Example (API)

pdk.set('pdk', 'asap7', 'pexmodel', 'fastcap', 'M10', 'max', 'wire.mod')

1.4.2.2.5.16. scribe#

Width of the horizontal and vertical scribe line used during die separation. The process is generally completed using a mechanical saw, but can be done through combinations of mechanical saws, lasers, wafer thinning, and chemical etching in more advanced technologies. The value is used to calculate effective dies per wafer and full factory cost.

Description

PDK: horizontal scribe line width

Type

(float,float)

Per step/index

never

Scope

global

Unit

mm

Default Value

None

CLI Switch

  • -pdk_scribe 'pdkname <(float,float)>'

Example (CLI)

-pdk_scribe 'asap7 (0.1,0.1)'

Example (API)

pdk.set('pdk', 'asap7', 'scribe', (0.1, 0.1))

1.4.2.2.5.17. stackup#

List of all metal stackups offered in the process node. Older process nodes may only offer a single metal stackup, while advanced nodes offer a large but finite list of metal stacks with varying combinations of metal line pitches and thicknesses. Stackup naming is unique to a foundry, but is generally a long string or code. For example, a 10 metal stackup with two 1x wide, four 2x wide, and 4x wide metals, might be identified as 2MA4MB2MC, where MA, MB, and MC denote wiring layers with different properties (thickness, width, space). Each stackup will come with its own set of routing technology files and parasitic models specified in the pdk_pexmodel and pdk_aprtech parameters.

Description

PDK: metal stackups

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -pdk_stackup 'pdkname <str>'

Example (CLI)

-pdk_stackup 'asap7 2MA4MB2MC'

Example (API)

pdk.add('pdk', 'asap7', 'stackup', '2MA4MB2MC')

1.4.2.2.5.18. unitcost#

Raw cost per unit shipped by the factory, not accounting for yield loss.

Description

PDK: unit cost

Type

float

Per step/index

never

Scope

global

Unit

USD

Default Value

None

CLI Switch

  • -pdk_unitcost 'pdkname <float>'

Example (CLI)

-pdk_unitcost 'asap7 10000'

Example (API)

pdk.set('pdk', 'asap7', 'unitcost', 10000)

1.4.2.2.5.19. wafersize#

Wafer diameter used in wafer based manufacturing process. The standard diameter for leading edge manufacturing is 300mm. For older process technologies and specialty fabs, smaller diameters such as 200, 150, 125, and 100 are common. The value is used to calculate dies per wafer and full factory chip costs.

Description

PDK: wafer size

Type

float

Per step/index

never

Scope

global

Unit

mm

Default Value

None

CLI Switch

  • -pdk_wafersize 'pdkname <float>'

Example (CLI)

-pdk_wafersize 'asap7 300'

Example (API)

pdk.set('pdk', 'asap7', 'wafersize', 300)

1.4.3. FPGA Specific#

1.4.3.1. FPGADevice#

A schema for configuring FPGA-related parameters.

This class extends ToolLibrarySchema to provide a structured way to define and access FPGA-specific settings like part name and LUT size.

File: fpga.py

Class FPGADevice

1.4.3.1.1. dataroot#
1.4.3.1.1.1. path#

Data directory path, this points the location where the data can be retrieved or accessed. Allowed roots:

  • /path/on/network/drive

  • file:///path/on/network/drive

  • git+https://github.com/xyz/xyz

  • git://github.com/xyz/xyz

  • git+ssh://github.com/xyz/xyz

  • ssh://github.com/xyz/xyz

  • https://github.com/xyz/xyz/archive

  • https://zeroasic.com/xyz.tar.gz

  • github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz

  • python://siliconcompiler

Description

Data directory path

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')

1.4.3.1.1.2. tag#

Data directory reference tag. The meaning of the this tag depends on the context of the path. For git, this can be a tag, branch, or commit id. For https this is the version of the file that will be downloaded.

Description

Data directory reference tag/version

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')

1.4.3.1.2. deps#

List of named object dependencies included via add_dep().

Description

List of object dependencies

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

1.4.3.1.3. fileset#

Class FileSetSchema

1.4.3.1.3.1. define#

Defines macros at compile time for design languages that support preprocessing, such as Verilog, C, and C++. The macro format is is MACRONAME[=value], where [=value] is optional.

Description

Preprocessor macro definitions

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')

1.4.3.1.3.2. depfileset#

Sets the mapping for dependency filesets.

Description

Design dependency fileset

Type

[(str,str)]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))

1.4.3.1.3.3. file#

List of files grouped as a named set (‘fileset’). The exact names of filetypes and filesets must match the names used in tasks called during flowgraph execution. The files are processed in the order specified by the ordered file list.

Description

Fileset files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')

schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')

1.4.3.1.3.4. idir#

Include paths specify directories to scan for header files during compilation. If multiple paths are provided, they are searched in the order given.

Description

Include file search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'idir', './rtl')

design.set('fileset', 'testbench', 'idir', '/testbench')

1.4.3.1.3.5. lib#

Specifies libraries to use during compilation. The compiler searches for library in the compiler standard library paths and in the paths specified by [fileset,<fileset>,libdir] parameter.

Description

Design libraries to include

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'lib', 'mylib')

1.4.3.1.3.6. libdir#

Specifies directories to scan for libraries provided with the [fileset,<fileset>,lib] parameter. If multiple paths are provided, they are searched based on the order of the libdir list.

Description

Library search paths

Type

[dir]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'libdir', '/usr/lib')

1.4.3.1.3.7. param#

Sets a named parameter to a string value. The value is limited to basic data literals. The types of parameters and values supported is tightly coupled to tools being used. For example, in Verilog only integer literals (64’h4, 2’b0, 4) and strings are supported.

Description

Design parameters

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'param', 'N', '64')

1.4.3.1.3.8. topmodule#

Name of top module specified on a per fileset basis.

Description

Top module name

Type

str

Per step/index

never

Scope

global

Default Value

None

Example (API)

design.set('fileset', 'rtl', 'topmodule', 'mytop')

design.set('fileset', 'testbench', 'topmodule', 'tb')

1.4.3.1.3.9. undefine#

Undefines a macro that may have been previously defined via the compiler, options, or header files.

Description

Preprocessor macro undefine

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

Example (API)

design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')

1.4.3.1.4. fpga#
1.4.3.1.4.1. lutsize#

Specify the number of inputs in each lookup table (LUT) for the FPGA partname. For architectures with fracturable LUTs, this is the number of inputs of the unfractured LUT.

Description

FPGA: lutsize

Type

int

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -fpga_lutsize 'partname <int>'

Example (CLI)

-fpga_lutsize 'fpga64k 4'

Example (API)

fpga.set('fpga', 'fpga64k', 'lutsize', '4')

1.4.3.1.4.2. partname#

Complete part name used as a device target by the FPGA compilation tool. The part name must be an exact string match to the partname hard coded within the FPGA EDA tool.

Description

FPGA: part name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -fpga_partname <str>

Example (CLI)

-fpga_partname fpga64k

Example (API)

fpga.set('fpga', 'partname', 'fpga64k')

1.4.3.1.5. package#

Class PackageSchema

1.4.3.1.5.1. author#
1.4.3.1.5.1.1. email#

Package author email provided with full name as key and email as value.

Description

Package: author email

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_email 'userid <str>'

Example (CLI)

-package_author_email 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'email', 'wiley@acme.com')

1.4.3.1.5.1.2. name#

Package author name provided with full name as key and name as value.

Description

Package: author name

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_name 'userid <str>'

Example (CLI)

-package_author_name 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'name', 'wiley@acme.com')

1.4.3.1.5.1.3. organization#

Package author organization provided with full name as key and organization as value.

Description

Package: author organization

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_author_organization 'userid <str>'

Example (CLI)

-package_author_organization 'wiley wiley@acme.com'

Example (API)

schema.set('author', 'wiley', 'organization', 'wiley@acme.com')

1.4.3.1.5.2. description#

Package short one line description for package managers and summary reports.

Description

Package: description

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_description <str>

Example (CLI)

-package_description 'Yet another cpu'

Example (API)

schema.set('description', 'Yet another cpu')

1.4.3.1.5.3. doc#
1.4.3.1.5.3.1. datasheet#

Package list of datasheet documents.

Description

Package: datasheet document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_datasheet <file>

Example (CLI)

-package_doc_datasheet datasheet.pdf

Example (API)

schema.set('doc', 'datasheet', 'datasheet.pdf')

1.4.3.1.5.3.2. quickstart#

Package list of quickstart documents.

Description

Package: quickstart document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_quickstart <file>

Example (CLI)

-package_doc_quickstart quickstart.pdf

Example (API)

schema.set('doc', 'quickstart', 'quickstart.pdf')

1.4.3.1.5.3.3. reference#

Package list of reference documents.

Description

Package: reference document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_reference <file>

Example (CLI)

-package_doc_reference reference.pdf

Example (API)

schema.set('doc', 'reference', 'reference.pdf')

1.4.3.1.5.3.4. releasenotes#

Package list of releasenotes documents.

Description

Package: releasenotes document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_releasenotes <file>

Example (CLI)

-package_doc_releasenotes releasenotes.pdf

Example (API)

schema.set('doc', 'releasenotes', 'releasenotes.pdf')

1.4.3.1.5.3.5. signoff#

Package list of signoff documents.

Description

Package: signoff document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_signoff <file>

Example (CLI)

-package_doc_signoff signoff.pdf

Example (API)

schema.set('doc', 'signoff', 'signoff.pdf')

1.4.3.1.5.3.6. testplan#

Package list of testplan documents.

Description

Package: testplan document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_testplan <file>

Example (CLI)

-package_doc_testplan testplan.pdf

Example (API)

schema.set('doc', 'testplan', 'testplan.pdf')

1.4.3.1.5.3.7. tutorial#

Package list of tutorial documents.

Description

Package: tutorial document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_tutorial <file>

Example (CLI)

-package_doc_tutorial tutorial.pdf

Example (API)

schema.set('doc', 'tutorial', 'tutorial.pdf')

1.4.3.1.5.3.8. userguide#

Package list of userguide documents.

Description

Package: userguide document

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_doc_userguide <file>

Example (CLI)

-package_doc_userguide userguide.pdf

Example (API)

schema.set('doc', 'userguide', 'userguide.pdf')

1.4.3.1.5.4. license#

Package list of SPDX license identifiers.

Description

Package: license identifiers

Type

[str]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_license <str>

Example (CLI)

-package_license 'Apache-2.0'

Example (API)

schema.set('license', 'Apache-2.0')

1.4.3.1.5.5. licensefile#

Package list of license files for to be applied in cases when a SPDX identifier is not available. (eg. proprietary licenses).

Description

Package: license files

Type

[file]

Per step/index

never

Scope

global

Default Value

[]

CLI Switch

  • -package_licensefile <file>

Example (CLI)

-package_licensefile './LICENSE'

Example (API)

schema.set('licensefile', './LICENSE')

1.4.3.1.5.6. vendor#

Package vendor.

Description

Package: vendor

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_vendor <str>

Example (CLI)

-package_vendor acme

Example (API)

schema.set('vendor', 'acme')

1.4.3.1.5.7. version#

Package version. Can be a branch, tag, commit hash, or a semver compatible version.

Description

Package: version

Type

str

Per step/index

never

Scope

global

Default Value

None

CLI Switch

  • -package_version <str>

Example (CLI)

-package_version 1.0

Example (API)

schema.set('version', '1.0')

1.5. meta data#

The schema can record the class type of a section in the schema., this is recorded in cfg['__meta__']. The cfg['__meta__'] contains two keys, sctype and class , which represent the type of the section and exact python class respectively. If no cfg['__meta__'] is found, the section is assumed to be a regular schema class.

1.6. Journaling#

The schema can support tracking of schema transactions which modify the data in the schema. The transactions are recorded in the schema in cfg['__journal__'], which is a list of the transactions since recording began. Each record for the journal contains:

type

Type of transactions performed, can be one of: set, add, remove, and unset

key

Keypath that was modified

value

New value for keypath, in record types which are destructive, this is None

field

Schema field that was modified, in record types which are destructive, this is None

step

Step that was modified, in record types which are destructive, this is None

index

Index that was modified, in record types which are destructive, this is None