{"$comment":"Generated dump of the SiliconCompiler schema. See https://docs.siliconcompiler.com for prose.","sc_version":"0.38.11","schemaversion":"0.57.2","classes":{"Project":{"module":"siliconcompiler.project","class":"siliconcompiler.project.Project","description":"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.","parameters":{"arg,index":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_index <str>"],"shorthelp":"ARG: index argument","example":["cli: -arg_index 0","api: project.set('arg', 'index', '0')"],"defvalue":null},"arg,step":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_step <str>"],"shorthelp":"ARG: step argument","example":["cli: -arg_step 'route'","api: project.set('arg', 'step', 'route')"],"defvalue":null},"checklist,default,default,criteria":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_criteria 'standard item <str>'"],"shorthelp":"Checklist: item criteria","help":"Simple list of signoff criteria for checklist item which\nmust all be met for signoff. Each signoff criteria consists of\na metric, a relational operator, and a value in the form\n'metric op value'.","example":["cli: -checklist_criteria 'ISO D000 errors==0'","api: check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')"],"defvalue":[]},"checklist,default,default,dataformat":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_dataformat 'standard item <str>'"],"shorthelp":"Checklist: item data format","help":"Free text description of the type of data files acceptable as\nchecklist signoff validation.","example":["cli: -checklist_dataformat 'ISO D000 README'","api: check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')"],"defvalue":null},"checklist,default,default,description":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_description 'standard item <str>'"],"shorthelp":"Checklist: item description","help":"A short one line description of the checklist item.","example":["cli: -checklist_description 'ISO D000 A-DESCRIPTION'","api: check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')"],"defvalue":null},"checklist,default,default,ok":{"type":"bool","scope":"global","pernode":"never","switch":["-checklist_ok 'standard item <bool>'"],"shorthelp":"Checklist: item ok","help":"Boolean check mark for the checklist item. A value of\nTrue indicates a human has inspected the all item dictionary\nparameters and verified they check out.","example":["cli: -checklist_ok 'ISO D000 true'","api: check.set('checklist', 'ISO', 'D000', 'ok', True)"],"defvalue":false},"checklist,default,default,rationale":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_rationale 'standard item <str>'"],"shorthelp":"Checklist: item rationale","help":"Rationale for the checklist item. Rationale should be a\nunique alphanumeric code used by the standard or a short one line\nor single word description.","example":["cli: -checklist_rationale 'ISO D000 reliability'","api: check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')"],"defvalue":[]},"checklist,default,default,report":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_report 'standard item <file>'"],"shorthelp":"Checklist: item report","help":"Filepath to report(s) of specified type documenting the successful\nvalidation of the checklist item.","hashalgo":"sha256","example":["cli: -checklist_report 'ISO D000 my.rpt'","api: check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')"],"defvalue":[]},"checklist,default,default,requirement":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_requirement 'standard item <str>'"],"shorthelp":"Checklist: item requirement","help":"A complete requirement description of the checklist item\nentered as a multi-line string.","example":["cli: -checklist_requirement 'ISO D000 DOCSTRING'","api: check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')"],"defvalue":null},"checklist,default,default,task":{"type":"[(str,str,str)]","scope":"global","pernode":"never","switch":["-checklist_task 'standard item <(str,str,str)>'"],"shorthelp":"Checklist: item task","help":"Flowgraph job and task used to verify the checklist item.\nThe parameter should be left empty for manual and for tool\nflows that bypass the SC infrastructure.","example":["cli: -checklist_task 'ISO D000 (job0,place,0)'","api: check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))"],"defvalue":[]},"checklist,default,default,waiver,default":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_waiver 'standard item metric <file>'"],"shorthelp":"Checklist: item metric waivers","help":"Filepath to report(s) documenting waivers for the checklist\nitem specified on a per metric basis.","hashalgo":"sha256","example":["cli: -checklist_waiver 'ISO D000 bold my.txt'","api: check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')"],"defvalue":[]},"flowgraph,default,default,default,args":{"type":"[str]","scope":"global","pernode":"never","switch":["-flowgraph_args 'flow step index <str>'"],"shorthelp":"Flowgraph: Node-specific arguments","help":"User-specified arguments passed to the task's `setup()` method.\nThis allows for customizing a specific node's behavior without\naffecting other nodes running the same task.","example":["cli: -flowgraph_args 'asicflow cts 0 buffer_cells'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')"],"defvalue":[]},"flowgraph,default,default,default,goal,default":{"type":"float","scope":"global","pernode":"never","switch":["-flowgraph_goal 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric goals","help":"Goals specified on a per-node and per-metric basis used to\ndetermine whether a task run is considered successful. A task run\nmay be considered failing if the absolute value of any of its\nreported metrics is larger than the goal for that metric (if set).\nThis is often used for metrics like 'errors' or 'setupwns'\nwhere the goal is 0.","example":["cli: -flowgraph_goal 'asicflow cts 0 errors 0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)"],"defvalue":null},"flowgraph,default,default,default,input":{"type":"[(str,str)]","scope":"global","pernode":"never","switch":["-flowgraph_input 'flow step index <(str,str)>'"],"shorthelp":"Flowgraph: Node inputs","help":"A list of inputs for this flowgraph node, where each input is\nspecified as a (step, index) tuple. This defines the dependencies\nof this node.","example":["cli: -flowgraph_input 'asicflow cts 0 (place,0)'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))"],"defvalue":[]},"flowgraph,default,default,default,task":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_task 'flow step index <str>'"],"shorthelp":"Flowgraph: Task selection","help":"Name of the task (e.g., 'place', 'syn', 'join') associated\nwith the node's tool.","example":["cli: -flowgraph_task 'asicflow myplace 0 place'","api: flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')"],"defvalue":null},"flowgraph,default,default,default,taskmodule":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_taskmodule 'flow step index <str>'"],"shorthelp":"Flowgraph: Task module","help":"Full Python module path and class name of the task, formatted as\n'<full.module.path>/<ClassName>'. This is used to import and\ninstantiate the correct Task class for setup and execution.","example":["cli: -flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')"],"defvalue":null},"flowgraph,default,default,default,tool":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_tool 'flow step index <str>'"],"shorthelp":"Flowgraph: Tool selection","help":"Name of the tool (e.g., 'openroad', 'yosys', 'builtin') that\nthis node will execute.","example":["cli: -flowgraph_tool 'asicflow place 0 openroad'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')"],"defvalue":null},"flowgraph,default,default,default,weight,default":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-flowgraph_weight 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric weights","help":"Weights specified on a per-node and per-metric basis, used by\noptimization tasks (like 'minimum') to calculate a \"goodness\"\nscore for a run. The score is typically a weighted sum of\nmetric results.","example":["cli: -flowgraph_weight 'asicflow cts 0 area_cells 1.0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)"],"defvalue":0.0},"metric,errors":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_errors 'step index <int>'"],"shorthelp":"Metric: total errors","help":"Metric tracking the total number of errors on a\nper step and index basis.","example":["cli: -metric_errors 'dfm 0 0'","api: project.set('metric', 'errors', 0, step='dfm', index=0)"]},"metric,exetime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_exetime 'step index <float>'"],"shorthelp":"Metric: exetime","help":"Metric tracking time spent by the EDA executable\n:keypath:`tool,<tool>,task,<task>,exe` on a\nper step and index basis. It does not include the SiliconCompiler\nruntime overhead or time waiting for I/O operations and\ninter-processor communication to complete.","unit":"s","example":["cli: -metric_exetime 'dfm 0 10.0'","api: project.set('metric', 'exetime', 10.0, step='dfm', index=0)"]},"metric,memory":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_memory 'step index <float>'"],"shorthelp":"Metric: memory","help":"Metric tracking total peak program memory footprint on a per\nstep and index basis.","unit":"B","example":["cli: -metric_memory 'dfm 0 10e9'","api: project.set('metric', 'memory', 10e9, step='dfm', index=0)"]},"metric,tasktime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_tasktime 'step index <float>'"],"shorthelp":"Metric: tasktime","help":"Metric tracking the total amount of time spent on a task from\nbeginning to end, including data transfers and pre/post\nprocessing.","unit":"s","example":["cli: -metric_tasktime 'dfm 0 10.0'","api: project.set('metric', 'tasktime', 10.0, step='dfm', index=0)"]},"metric,totaltime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_totaltime 'step index <float>'"],"shorthelp":"Metric: totaltime","help":"Metric tracking the total amount of time spent from the beginning\nof the run up to and including the current step and index.","unit":"s","example":["cli: -metric_totaltime 'dfm 0 10.0'","api: project.set('metric', 'totaltime', 10.0, step='dfm', index=0)"]},"metric,warnings":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_warnings 'step index <int>'"],"shorthelp":"Metric: total warnings","help":"Metric tracking the total number of warnings on a\nper step and index basis.","example":["cli: -metric_warnings 'dfm 0 0'","api: project.set('metric', 'warnings', 0, step='dfm', index=0)"]},"option,alias":{"type":"[(str,str,str,str)]","scope":"global","pernode":"never","shorthelp":"Option: Fileset alias mapping","help":"List of filesets to alias during a run. When an alias is specific\nit will be used instead of the source fileset. It is useful when you\nwant to substitute a fileset from one library with a fileset from another,\nwithout changing the original design's code.\nFor example, you might use it to swap in a different version of an IP\nblock or a specific test environment.","example":["api: option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))"],"defvalue":[]},"option,autoissue":{"type":"bool","scope":"global","pernode":"never","switch":["-autoissue <bool>"],"shorthelp":"Option: Enables automatic generation of testcases","help":"Enables automatic generation of testcases\nif the specific node fails","example":["api: option.set('autoissue', True)"],"defvalue":false},"option,breakpoint":{"type":"bool","scope":"job","pernode":"optional","switch":["-breakpoint <bool>"],"shorthelp":"Option: breakpoint list","help":"\n                Set a breakpoint on specific steps. If the step is a TCL\n                based tool, then the breakpoints stops the flow inside the\n                EDA tool. If the step is a command line tool, then the flow\n                drops into a Python interpreter.","example":["cli: -breakpoint true","api: option.set('breakpoint', True)"],"defvalue":false},"option,builddir":{"type":"dir","scope":"global","pernode":"never","switch":["-builddir <dir>"],"shorthelp":"Option: build directory","help":"\n                The default build directory is in the local './build' where SC was\n                executed. This can be used to set an alternate\n                compilation directory path.","hashalgo":"sha256","example":["cli: -builddir ./build_the_future","api: option.set('builddir', './build_the_future')"],"defvalue":"build"},"option,cachedir":{"type":"dir","scope":"global","pernode":"never","switch":["-cachedir <dir>"],"shorthelp":"Option: user cache directory","help":"\n                Filepath to the cache SiliconCompiler keeps between runs. It holds\n                one subdirectory per kind of cached data: \"dataroot\" for downloaded\n                package data sources, and \"tools\" for the caches tools keep for\n                themselves, such as the compiler cache a Verilator build writes to.\n                Cached data goes in those subdirectories, not in the directory\n                itself. If the cache parameter is empty, the \".sc/cache\" directory\n                in the user's home directory will be used.","hashalgo":"sha256","example":["cli: -cachedir /home/user/.sc/cache","api: option.set('cachedir', '/home/user/.sc/cache')"],"defvalue":null},"option,clean":{"type":"bool","scope":"global","pernode":"never","switch":["-clean <bool>"],"shorthelp":"Option: cleanup previous job","help":"\n                Run a job from the start and do not use any of the previous job.\n                If :keypath:`option, jobincr` is True, the old job is preserved and\n                a new job number is assigned.\n                ","example":["cli: -clean","api: option.set('clean', True)"],"defvalue":false},"option,continue":{"type":"bool","scope":"global","pernode":"optional","switch":["-continue <bool>"],"shorthelp":"Option: continue-on-error","help":"\n                Attempt to continue even when errors are encountered in the SC\n                implementation. The default behavior is to quit executing the flow\n                if a task ends and the errors metric is greater than 0.\n\n                Set this on the node that may fail, not on the node that consumes\n                it: the option excuses a failure for the benefit of everything\n                downstream. Nodes that take input from an excused node are still\n                launched and run on whatever inputs did arrive -- a failed branch\n                is dropped, not substituted, so a merge assembles the branches\n                that survived. A node whose every input was excused still fails,\n                having nothing left to run on, and the excuse does not propagate:\n                a node that fails as a consequence of an excused failure upstream\n                needs an excuse of its own.\n\n                Note that the failing task itself always stops if the tool returns\n                a nonzero status code; what this option relaxes is whether the rest\n                of the flow proceeds without it. A run that finishes over a failed\n                branch still reports that branch as an error.\n                ","example":["cli: -continue","api: option.set('continue', True)"],"defvalue":false},"option,credentials":{"type":"file","scope":"global","pernode":"never","switch":["-credentials <file>"],"shorthelp":"Option: user credentials file","help":"\n                Filepath to credentials used for remote processing. If the\n                credentials parameter is empty, the remote processing client program\n                tries to access the \".sc/credentials\" file in the user's home\n                directory. The file supports the following fields:\n\n                address=<server address>\n                port=<server port> (optional)\n                username=<user id> (optional)\n                password=<password / key used for authentication> (optional)","hashalgo":"sha256","example":["cli: -credentials /home/user/.sc/credentials","api: option.set('credentials', '/home/user/.sc/credentials')"],"defvalue":null},"option,design":{"type":"str","scope":"global","pernode":"never","switch":["-design <str>"],"shorthelp":"Option: Design library name","help":"Name of the top level library","example":["cli: -design hello_world","api: option.set('design', 'hello_world')"],"defvalue":null},"option,env,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Option: environment variables","help":"Certain tools and reference flows require global environment\nvariables to be set. These variables can be managed externally or\nspecified through the env variable.","example":["api: option.set('env', 'PDK_HOME', '/disk/mypdk')"],"defvalue":null},"option,fileset":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Option: Selected design filesets","help":"List of filesets to use from the selected design library","example":["api: option.set('fileset', 'rtl')"],"defvalue":[]},"option,flow":{"type":"str","scope":"global","pernode":"never","switch":["-flow <str>"],"shorthelp":"Option: flow target","help":"\n                Sets the flow for the current run. The flow name\n                must match up with a 'flow' in the flowgraph","example":["cli: -flow asicflow","api: option.set('flow', 'asicflow')"],"defvalue":null},"option,from":{"type":"[str]","scope":"job","pernode":"never","switch":["-from <str>"],"shorthelp":"Option: starting step","help":"\n                Inclusive list of steps to start execution from. The default is to start\n                at all entry steps in the flow graph.\n\n                Steps ahead of the starting steps are not rerun: the run uses their\n                outputs from the existing build directory, even when they are out of\n                date. If a step that feeds a starting step has no usable outputs, the\n                run fails. Any other step left out of the run whose outputs are missing\n                or failed is added back and rerun, such as a parallel branch that merges\n                with the run further downstream.","example":["cli: -from 'import'","api: option.set('from', 'import')"],"defvalue":[]},"option,hash":{"type":"bool","scope":"global","pernode":"never","switch":["-hash <bool>"],"shorthelp":"Option: file hashing","help":"\n                Enables hashing of all inputs and outputs during\n                compilation. The hash values are stored in the hashvalue\n                field of the individual parameters.","example":["cli: -hash","api: option.set('hash', True)"],"defvalue":false},"option,jobincr":{"type":"bool","scope":"global","pernode":"never","switch":["-jobincr <bool>"],"shorthelp":"Option: autoincrement jobname","help":"\n                Forces an auto-update of the jobname parameter if a directory\n                matching the jobname is found in the build directory. If the\n                jobname does not include a trailing digit, then the number\n                '1' is added to the jobname before updating the jobname\n                parameter.","example":["cli: -jobincr","api: option.set('jobincr', True)"],"defvalue":false},"option,jobname":{"type":"str","scope":"global","pernode":"never","switch":["-jobname <str>"],"shorthelp":"Option: job name","help":"\n                Jobname during invocation of :meth:`.Project.run()`. The jobname combined with a\n                defined director structure (<dir>/<design>/<jobname>/<step>/<index>)\n                enables multiple levels of transparent job, step, and index\n                introspection.","example":["cli: -jobname may1","api: option.set('jobname', 'may1')"],"defvalue":"job0"},"option,nice":{"type":"int<-20..19>","scope":"global","pernode":"optional","switch":["-nice <int>"],"shorthelp":"Option: tool scheduling priority","help":"\n                Sets the type of execution priority of each individual flowgraph steps.\n                If the parameter is undefined, nice will not be used. For more information see\n                `Unix 'nice' <https://en.wikipedia.org/wiki/Nice_(Unix)>`_.","example":["cli: -nice 5","api: option.set('nice', 5)"],"defvalue":null},"option,nodashboard":{"type":"bool","scope":"global","pernode":"never","switch":["-nodashboard <bool>"],"shorthelp":"Option: Disables the dashboard","help":"Disables the dashboard during execution","example":["api: option.set('nodashboard', True)"],"defvalue":false},"option,nodisplay":{"type":"bool","scope":"global","pernode":"never","switch":["-nodisplay <bool>"],"shorthelp":"Option: headless execution","help":"\n                This flag prevents SiliconCompiler from opening GUI windows.","example":["cli: -nodisplay","api: option.set('nodisplay', True)"],"defvalue":false},"option,novercheck":{"type":"bool","scope":"global","pernode":"optional","switch":["-novercheck <bool>"],"shorthelp":"Option: disable version checking","help":"\n                Disables strict version checking on all invoked tools if True.\n                The list of supported version numbers is defined in the\n                :keypath:`tool,<tool>,task,<task>,version`.","example":["cli: -novercheck","api: option.set('novercheck', True)"],"defvalue":false},"option,optmode":{"type":"int<0..>","scope":"global","pernode":"optional","switch":["-O<str>","-optmode <str>"],"shorthelp":"Option: optimization mode","help":"\n                The compiler has modes to prioritize run time and ppa. Modes\n                include.\n\n                (O0) = Exploration mode for debugging setup\n                (O1) = Higher effort and better PPA than O0\n                (O2) = Higher effort and better PPA than O1\n                (O3) = Signoff quality. Better PPA and higher run times than O2\n                (O4-O98) = Reserved (compiler/target dependent)\n                (O99) = Experimental highest possible effort, may be unstable\n                ","example":["cli: -O3","cli: -optmode 3","api: option.set('optmode', 'O3')"],"defvalue":0},"option,prune":{"type":"[(str,str)]","scope":"job","pernode":"never","switch":["-prune 'node <(str,str)>'"],"shorthelp":"Option: flowgraph pruning","help":"\n                List of starting nodes for branches to be pruned.\n                The default is to not prune any nodes/branches.","example":["cli: -prune (syn,0)","api: option.set('prune', ('syn', '0'))"],"defvalue":[]},"option,quiet":{"type":"bool","scope":"global","pernode":"optional","switch":["-quiet <bool>"],"shorthelp":"Option: quiet execution","help":"\n                The -quiet option forces all steps to print to a log file.\n                This can be useful with Modern EDA tools which print\n                significant content to the screen.","example":["cli: -quiet","api: option.set('quiet', True)"],"defvalue":false},"option,remote":{"type":"bool","scope":"global","pernode":"never","switch":["-remote <bool>"],"shorthelp":"Option: enable remote processing","help":"\n                Sends job for remote processing if set to true. The remote\n                option requires a credentials file to be placed in the home\n                directory. Fore more information, see the credentials\n                parameter.","example":["cli: -remote","api: option.set('remote', True)"],"defvalue":false},"option,scheduler,cores":{"type":"int<1..>","scope":"global","pernode":"optional","switch":["-cores <int>"],"shorthelp":"Option: Scheduler core constraint","help":"\n                Specifies the number CPU cores required to run the job.\n                For the slurm scheduler, this translates to the '-c'\n                switch. For more information, see the job scheduler\n                documentation","example":["cli: -cores 48","api: option.set('cores', 48)"],"defvalue":null},"option,scheduler,defer":{"type":"str","scope":"global","pernode":"optional","switch":["-defer <str>"],"shorthelp":"Option: scheduler start time","help":"\n                Defer initiation of job until the specified time. The parameter\n                is pass through string for remote job scheduler such as slurm.\n                For more information about the exact format specification, see\n                the job scheduler documentation. Examples of valid slurm specific\n                values include: now+1hour, 16:00, 010-01-20T12:34:00. For more\n                information, see the job scheduler documentation.","example":["cli: -defer 16:00","api: option.set('defer', '16:00')"],"defvalue":null},"option,scheduler,maxnodes":{"type":"int<1..>","scope":"global","pernode":"never","switch":["-maxnodes <int>"],"shorthelp":"Option: maximum concurrent nodes","help":"\n                Maximum number of concurrent nodes to run in a job. If not set this will default\n                to the number of cpu cores available.","example":["cli: -maxnodes 4","api: option.set('maxnodes', 4)"],"defvalue":null},"option,scheduler,maxthreads":{"type":"int<1..>","scope":"global","pernode":"never","shorthelp":"Option: maximum number of threads to assign a task","help":"\n                Maximum number of threads for each task in a job. If not set this will default\n                to the number of cpu cores available.","example":["api: option.set('maxthreads', 4)"],"defvalue":null},"option,scheduler,memory":{"type":"int","scope":"global","pernode":"optional","switch":["-memory <int>"],"shorthelp":"Option: scheduler memory constraint","help":"\n                Specifies the amount of memory required to run the job,\n                specified in MB. For the slurm scheduler, this translates to\n                the '--mem' switch. For more information, see the job\n                scheduler documentation","unit":"MB","example":["cli: -memory 8000","api: option.set('memory', 8000)"],"defvalue":null},"option,scheduler,msgcontact":{"type":"{str}","scope":"global","pernode":"optional","switch":["-msgcontact <str>"],"shorthelp":"Option: message contact","help":"\n                List of email addresses to message on a :keypath:`option,scheduler,msgevent`.\n                Support for email messages relies on job scheduler daemon support.\n                For more information, see the job scheduler documentation. ","example":["cli: -msgcontact 'wile.e.coyote@acme.com'","api: option.set('msgcontact', 'wiley@acme.com')"],"defvalue":[]},"option,scheduler,msgevent":{"type":"{<all,begin,end,fail,summary,timeout>}","scope":"global","pernode":"optional","switch":["-msgevent <str>"],"shorthelp":"Option: message event trigger","help":"\n                Directs job scheduler to send a message to the user in\n                :keypath:`option,scheduler,msgcontact` when certain events occur\n                during a task.\n\n                * fail: send an email on failures\n                * timeout: send an email on timeouts\n                * begin: send an email at the start of a node task\n                * end: send an email at the end of a node task\n                * summary: send a summary email at the end of the run\n                * all: send an email on any event\n                ","example":["cli: -msgevent all","api: option.set('msgevent', 'all')"],"defvalue":[]},"option,scheduler,name":{"type":"<docker,lsf,sge,slurm>","scope":"global","pernode":"optional","switch":["-scheduler <str>"],"shorthelp":"Option: scheduler platform","help":"\n                Sets the type of job scheduler to be used for each individual\n                flowgraph steps. If the parameter is undefined, the steps are executed\n                on the same machine that the SC was launched on. If 'slurm' is used,\n                the host running the 'sc' command must be running a 'slurmctld' daemon\n                managing a Slurm cluster. Additionally, the build directory\n                (:keypath:`option,builddir`) must be located in shared storage which\n                can be accessed by all hosts in the cluster.","example":["cli: -scheduler slurm","api: option.set('name', 'slurm')"],"defvalue":null},"option,scheduler,options":{"type":"[str]","scope":"global","pernode":"optional","switch":["-scheduler_options <str>"],"shorthelp":"Option: scheduler arguments","help":"\n                Advanced/export options passed through unchanged to the job\n                scheduler as-is. (The user specified options must be compatible\n                with the rest of the scheduler parameters entered.(memory etc).\n                For more information, see the job scheduler documentation.","example":["cli: -scheduler_options \"--pty\"","api: option.set('options', \"--pty\")"],"defvalue":[]},"option,scheduler,queue":{"type":"str","scope":"global","pernode":"optional","switch":["-queue <str>"],"shorthelp":"Option: scheduler queue","help":"\n                Send the job to the specified queue. With slurm, this\n                translates to 'partition'. The queue name must match\n                the name of an existing job scheduler queue. For more information,\n                see the job scheduler documentation","example":["cli: -queue nightrun","api: option.set('queue', 'nightrun')"],"defvalue":null},"option,timeout":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-timeout <float>"],"shorthelp":"Option: timeout value","help":"\n                Timeout value in seconds. The timeout value is compared\n                against the wall time tracked by the SC runtime to determine\n                if an operation should continue.","unit":"s","example":["cli: -timeout 3600","api: option.set('timeout', 3600)"],"defvalue":null},"option,to":{"type":"[str]","scope":"job","pernode":"never","switch":["-to <str>"],"shorthelp":"Option: ending step","help":"\n                Inclusive list of steps to end execution with. The default is to go\n                to all exit steps in the flow graph.","example":["cli: -to 'syn'","api: option.set('to', 'syn')"],"defvalue":[]},"option,track":{"type":"bool","scope":"global","pernode":"optional","switch":["-track <bool>"],"shorthelp":"Option: enable provenance tracking","help":"\n                Turns on tracking of all 'record' parameters during each\n                task, otherwise only tool and runtime information will be recorded.\n                Tracking will result in potentially sensitive data\n                being recorded in the manifest so only turn on this feature\n                if you have control of the final manifest.","example":["cli: -track","api: option.set('track', True)"],"defvalue":false},"record,arch":{"type":"str","scope":"job","pernode":"required","switch":["-record_arch 'step index <str>'"],"shorthelp":"Record: hardware architecture","help":"Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)","example":["cli: -record_arch 'dfm 0 x86_64'","api: schema.set('record', 'arch', 'x86_64', step='dfm', index=0)"]},"record,distro":{"type":"str","scope":"job","pernode":"required","switch":["-record_distro 'step index <str>'"],"shorthelp":"Record: distro name","help":"Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)","example":["cli: -record_distro 'dfm 0 ubuntu'","api: schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)"]},"record,endtime":{"type":"str","scope":"job","pernode":"required","switch":["-record_endtime 'step index <str>'"],"shorthelp":"Record: end time","help":"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","example":["cli: -record_endtime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'endtime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,inputnode":{"type":"[(str,str)]","scope":"job","pernode":"required","switch":["-record_inputnode 'step index <(str,str)>'"],"shorthelp":"Record: node inputs","help":"List of selected inputs for the current step/index specified as\n(in_step, in_index) tuple.","example":["cli: -record_inputnode 'cts 0 (place,42)'","api: schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')"]},"record,ipaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_ipaddr 'step index <str>'"],"shorthelp":"Record: IP address","help":"Record tracking the IP address per step and index basis.","example":["cli: -record_ipaddr 'dfm 0 <addr>'","api: schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)"]},"record,kernelversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_kernelversion 'step index <str>'"],"shorthelp":"Record: O/S kernel version","help":"Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction\nbetween os kernels and os distributions.","example":["cli: -record_kernelversion 'dfm 0 5.11.0-34-generic'","api: schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)"]},"record,macaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_macaddr 'step index <str>'"],"shorthelp":"Record: MAC address","help":"Record tracking the MAC address per step and index basis.","example":["cli: -record_macaddr 'dfm 0 <addr>'","api: schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)"]},"record,machine":{"type":"str","scope":"job","pernode":"required","switch":["-record_machine 'step index <str>'"],"shorthelp":"Record: machine name","help":"Record tracking the machine name per step and index basis. (myhost, localhost, ...","example":["cli: -record_machine 'dfm 0 carbon'","api: schema.set('record', 'machine', 'carbon', step='dfm', index=0)"]},"record,osversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_osversion 'step index <str>'"],"shorthelp":"Record: O/S version","help":"Record tracking the O/S version per step and index basis. Since there is not standard version system for operating\nsystems, extracting information from is platform dependent.\nFor Linux based operating systems, the 'osversion' is the\nversion of the distro.","example":["cli: -record_osversion 'dfm 0 20.04.1-Ubuntu'","api: schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)"]},"record,platform":{"type":"str","scope":"job","pernode":"required","switch":["-record_platform 'step index <str>'"],"shorthelp":"Record: platform name","help":"Record tracking the platform name per step and index basis. (linux, windows, freebsd)","example":["cli: -record_platform 'dfm 0 linux'","api: schema.set('record', 'platform', 'linux', step='dfm', index=0)"]},"record,publickey":{"type":"str","scope":"job","pernode":"required","switch":["-record_publickey 'step index <str>'"],"shorthelp":"Record: public key","help":"Record tracking the public key per step and index basis.","example":["cli: -record_publickey 'dfm 0 <key>'","api: schema.set('record', 'publickey', '<key>', step='dfm', index=0)"]},"record,pythonpackage":{"type":"[str]","scope":"job","pernode":"never","switch":["-record_pythonpackage '<str>'"],"shorthelp":"Record: python packages","help":"Record tracking for the python packages installed.","example":["cli: -record_pythonpackage 'siliconcompiler==0.28.0'","api: schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')"],"defvalue":[]},"record,pythonversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_pythonversion 'step index <str>'"],"shorthelp":"Record: Python version","help":"Record tracking the Python version per step and index basis. Version of python used to run this task.","example":["cli: -record_pythonversion 'dfm 0 3.12.3'","api: schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)"]},"record,region":{"type":"str","scope":"job","pernode":"required","switch":["-record_region 'step index <str>'"],"shorthelp":"Record: cloud region","help":"Record tracking the cloud region per step and index basis. Recommended naming methodology:\n\n* local: node is the local machine\n* onprem: node in on-premises IT infrastructure\n* public: generic public cloud\n* govcloud: generic US government cloud\n* <region>: cloud and entity specific region string name","example":["cli: -record_region 'dfm 0 \"US Gov Boston\"'","api: schema.set('record', 'region', '\"US Gov Boston\"', step='dfm', index=0)"]},"record,remoteid":{"type":"str","scope":"job","pernode":"never","switch":["-record_remoteid '<str>'"],"shorthelp":"Record: remote job ID","help":"Record tracking the job ID for a remote run.","example":["cli: -record_remoteid '0123456789abcdeffedcba9876543210'","api: schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')"],"defvalue":null},"record,scversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_scversion 'step index <str>'"],"shorthelp":"Record: software version","help":"Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.","example":["cli: -record_scversion 'dfm 0 1.0'","api: schema.set('record', 'scversion', '1.0', step='dfm', index=0)"]},"record,starttime":{"type":"str","scope":"job","pernode":"required","switch":["-record_starttime 'step index <str>'"],"shorthelp":"Record: start time","help":"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","example":["cli: -record_starttime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'starttime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,status":{"type":"<error,pending,queued,running,skipped,success,timeout>","scope":"job","pernode":"required","switch":["-record_status 'step index <str>'"],"shorthelp":"Record: node execution status","help":"Record tracking for the status of a node.","example":["cli: -record_status 'syn 0 success'","api: schema.set('record', 'status', 'success', step='syn', index='0')"]},"record,toolargs":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolargs 'step index <str>'"],"shorthelp":"Record: tool CLI arguments","help":"Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.","example":["cli: -record_toolargs 'dfm 0 \"-I include/ foo.v\"'","api: schema.set('record', 'toolargs', '\"-I include/ foo.v\"', step='dfm', index=0)"]},"record,toolexitcode":{"type":"int","scope":"job","pernode":"required","switch":["-record_toolexitcode 'step index <int>'"],"shorthelp":"Record: tool exit code","help":"Record tracking the tool exit code per step and index basis.","example":["cli: -record_toolexitcode 'dfm 0 0'","api: schema.set('record', 'toolexitcode', 0, step='dfm', index=0)"]},"record,toolpath":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolpath 'step index <str>'"],"shorthelp":"Record: tool path","help":"Record tracking the tool path per step and index basis. Full path to tool executable used to run this\ntask.","example":["cli: -record_toolpath 'dfm 0 /usr/bin/openroad'","api: schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)"]},"record,toolversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolversion 'step index <str>'"],"shorthelp":"Record: tool version","help":"Record tracking the tool version per step and index basis. The tool version captured corresponds to the 'tool'\nparameter within the 'tool' dictionary.","example":["cli: -record_toolversion 'dfm 0 1.0'","api: schema.set('record', 'toolversion', '1.0', step='dfm', index=0)"]},"record,userid":{"type":"str","scope":"job","pernode":"required","switch":["-record_userid 'step index <str>'"],"shorthelp":"Record: userid","help":"Record tracking the userid per step and index basis.","example":["cli: -record_userid 'dfm 0 wiley'","api: schema.set('record', 'userid', 'wiley', step='dfm', index=0)"]},"schemaversion":{"type":"str","scope":"global","require":true,"pernode":"never","shorthelp":"Schema version number","lock":true,"example":["api: project.get('schemaversion')"],"defvalue":"0.57.2"},"tool,default,task,default,dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"tool,default,task,default,dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"tool,default,task,default,env,default":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_env 'tool task env <str>'"],"shorthelp":"Task: environment variables","help":"Environment variables to set for individual tasks. Keys and values\nshould be set in accordance with the task's documentation. Most\ntasks do not require extra environment variables to function.","example":["cli: -tool_task_env 'openroad cts MYVAR 42'","api: task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')"],"defvalue":null},"tool,default,task,default,exe":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_exe 'tool <str>'"],"shorthelp":"Tool: executable name","help":"Tool executable name.","example":["cli: -tool_exe 'openroad openroad'","api: task.set('tool', 'openroad', 'exe', 'openroad')"],"defvalue":null},"tool,default,task,default,format":{"type":"<csv,json,tcl,yaml>","scope":"job","pernode":"optional","switch":["-tool_format 'tool <str>'"],"shorthelp":"Tool: file format","help":"File format for tool manifest handoff.","example":["cli: -tool_format 'yosys tcl'","api: task.set('tool', 'yosys', 'format', 'tcl')"],"defvalue":null},"tool,default,task,default,input":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_input 'tool task <file>'"],"shorthelp":"Task: input files","help":"List of data files to be copied from previous flowgraph steps 'output'\ndirectory. The list of steps to copy files from is defined by the\nlist defined by the dictionary key :keypath:`flowgraph,<flow>,<step>,<index>,input`.\nAll files must be available for flow to continue. If a file\nis missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_input 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,licenseserver,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_licenseserver 'name key <str>'"],"shorthelp":"Tool: license servers","help":"Defines a set of tool-specific environment variables used by the executable\nthat depend on license key servers to control access. For multiple servers,\nseparate servers with a colon. The named license variables are read at\nruntime (:meth:`.Task.run()`) and the environment variables are set.","example":["cli: -tool_licenseserver 'atask ACME_LICENSE 1700@server'","api: task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')"],"defvalue":[]},"tool,default,task,default,option":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_option 'tool task <str>'"],"shorthelp":"Task: executable options","help":"List of command line options for the task executable, specified on\na per task and per step basis. Options must not include spaces.\nFor multiple argument options, each option is a separate list element.","example":["cli: -tool_task_option 'openroad cts -no_init'","api: task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')"],"defvalue":[]},"tool,default,task,default,output":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_output 'tool task <file>'"],"shorthelp":"Task: output files","help":"List of data files written to the 'output' directory of the\ntool/task/step/index used in the keypath. All files must be available\nfor flow to continue. If a file is missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_output 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,path":{"type":"dir","scope":"job","pernode":"optional","switch":["-tool_path 'tool <dir>'"],"shorthelp":"Tool: executable path","help":"File system path to tool executable. The path is prepended to the\nsystem PATH environment variable for batch and interactive runs. The\npath parameter can be left blank if the :keypath:`tool,<tool>,task,<task>,exe` is\nalready in the environment search path.","hashalgo":"sha256","example":["cli: -tool_path 'openroad /usr/local/bin'","api: task.set('tool', 'openroad', 'path', '/usr/local/bin')"],"defvalue":null},"tool,default,task,default,postscript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_postscript 'tool task <file>'"],"shorthelp":"Task: post-step script","help":"Path to a user supplied script to execute after the main execution\nstage of the step but before the design is saved.\nExact entry point depends on the step and main script being\nexecuted. An example of a postscript entry point would be immediately\nafter global placement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_postscript 'yosys syn syn_post.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')"],"defvalue":[]},"tool,default,task,default,prescript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_prescript 'tool task <file>'"],"shorthelp":"Task: pre-step script","help":"Path to a user supplied script to execute after reading in the design\nbut before the main execution stage of the step. Exact entry point\ndepends on the step and main script being executed. An example\nof a prescript entry point would be immediately before global\nplacement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_prescript 'yosys syn syn_pre.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')"],"defvalue":[]},"tool,default,task,default,refdir":{"type":"[dir]","scope":"job","pernode":"optional","switch":["-tool_task_refdir 'tool task <dir>'"],"shorthelp":"Task: script directory","help":"Path to directories containing reference flow scripts, specified\non a per step and index basis.","hashalgo":"sha256","example":["cli: -tool_task_refdir 'yosys syn ./myref'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')"],"defvalue":[]},"tool,default,task,default,regex,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_regex 'tool task suffix <str>'"],"shorthelp":"Task: regex filter","help":"A list of piped together grep commands. Each entry represents a set\nof command line arguments for grep including the regex pattern to\nmatch. Starting with the first list entry, each grep output is piped\ninto the following grep command in the list. Supported grep options\ninclude ``-v`` and ``-e``. Patterns starting with \"-\" should be\ndirectly preceded by the ``-e`` option. The following example\nillustrates the concept.\n\nUNIX grep:\n\n.. code-block:: bash\n\n    $ grep WARNING place.log | grep -v \"bbox\" > place.warnings\n\nSiliconCompiler::\n\n    task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',\n             [\"WARNING\", \"-v bbox\"])\n\nThe \"errors\" and \"warnings\" suffixes are special cases. When set,\nthe number of matches found for these regexes will be added to the\nerrors and warnings metrics for the task, respectively. This will\nalso cause the logfile to be added to the :keypath:`tool, <tool>,\ntask, <task>, report` parameter for those metrics, if not already present.","example":["cli: -tool_task_regex 'openroad place errors \"'-v ERROR'\"'","api: task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')"],"defvalue":[]},"tool,default,task,default,report,default":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_report 'tool task metric <file>'"],"shorthelp":"Task: metric report files","help":"List of report files associated with a specific 'metric'. The file path\nspecified is relative to the run directory of the current task.","hashalgo":"sha256","example":["cli: -tool_task_report 'openroad place holdtns \"place 0 place.log\"'","api: task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')"]},"tool,default,task,default,require":{"type":"{str}","scope":"job","pernode":"optional","switch":["-tool_task_require 'tool task <str>'"],"shorthelp":"Task: parameter requirements","help":"List of keypaths to required task parameters. The list is used\nby :meth:`.Project.check_manifest()` to verify that all parameters have been set up\nbefore step execution begins.","example":["cli: -tool_task_require 'openroad cts design'","api: task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')"],"defvalue":[]},"tool,default,task,default,sbom,default":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_sbom 'tool version <file>'"],"shorthelp":"Tool: software BOM","help":"Paths to software bill of material (SBOM) document file of the tool\nspecified on a per version basis. The SBOM includes critical\npackage information about the tool including the list of included\ncomponents, licenses, and copyright. The SBOM file is generally\nprovided as in a a standardized open data format such as SPDX.","hashalgo":"sha256","example":["cli: -tool_sbom 'yosys 1.0.1 ys_sbom.json'","api: task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')"],"defvalue":[]},"tool,default,task,default,script":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_script 'tool task <file>'"],"shorthelp":"Task: entry script","help":"Path to the entry script called by the executable specified\non a per task and per step basis.","hashalgo":"sha256","example":["cli: -tool_task_script 'yosys syn syn.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')"],"defvalue":[]},"tool,default,task,default,stderr,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stderr_destination 'tool task <str>'"],"shorthelp":"Task: destination for stderr","help":"Defines where to direct the output generated over stderr.\nSupported options are:\nnone: the stream generated to STDERR is ignored\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>","example":["cli: -tool_task_stderr_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stderr,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stderr_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stderr","help":"Specifies the file extension for the content redirected from stderr.","example":["cli: -tool_task_stderr_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stdout_destination 'tool task <str>'"],"shorthelp":"Task: destination for stdout","help":"Defines where to direct the output generated over stdout.\nSupported options are:\nnone: the stream generated to STDOUT is ignored.\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>.","example":["cli: -tool_task_stdout_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stdout_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stdout","help":"Specifies the file extension for the content redirected from stdout.","example":["cli: -tool_task_stdout_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,threads":{"type":"int<1..>","scope":"job","pernode":"optional","switch":["-tool_task_threads 'tool task <int>'"],"shorthelp":"Task: thread parallelism","help":"Thread parallelism to use for execution specified on a per task and per\nstep basis. If not specified, SC queries the operating system and sets\nthe threads based on the maximum thread count supported by the\nhardware.","example":["cli: -tool_task_threads 'magic drc 64'","api: task.set('tool', 'magic', 'task', 'drc', 'threads', '64')"],"defvalue":null},"tool,default,task,default,vendor":{"type":"str","scope":"job","pernode":"never","switch":["-tool_vendor 'tool <str>'"],"shorthelp":"Tool: vendor","help":"Name of the tool vendor. Parameter can be used to set vendor\nspecific technology variables in the PDK and libraries. For\nopen source projects, the project name should be used in\nplace of vendor.","example":["cli: -tool_vendor 'yosys yosys'","api: task.set('tool', 'yosys', 'vendor', 'yosys')"],"defvalue":null},"tool,default,task,default,version":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_version 'tool <str>'"],"shorthelp":"Tool: version","help":"List of acceptable versions of the tool executable to be used. Each\nentry in this list must be a version specifier as described by Python\n`PEP-440 <https://peps.python.org/pep-0440/#version-specifiers>`_.\nDuring task execution, the tool is called with the 'vswitch' to\ncheck the runtime executable version. If the version of the system\nexecutable is not allowed by any of the specifiers in 'version',\nthen the job is halted pre-execution. For backwards compatibility,\nentries that do not conform to the standard will be interpreted as a\nversion with an '==' specifier. This check can be disabled by\nsetting :keypath:`option,novercheck` to True.","example":["cli: -tool_version 'openroad >=v2.0'","api: task.set('tool', 'openroad', 'version', '>=v2.0')"],"defvalue":[]},"tool,default,task,default,vswitch":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_vswitch 'tool <str>'"],"shorthelp":"Tool: executable version switch","help":"Command line switch to use with executable used to print out\nthe version number. Common switches include ``-v``, ``-version``,\n``--version``. Some tools may require extra flags to run in batch mode.","example":["cli: -tool_vswitch 'openroad -version'","api: task.set('tool', 'openroad', 'vswitch', '-version')"],"defvalue":[]},"tool,default,task,default,warningoff":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_warningoff 'tool task <str>'"],"shorthelp":"Task: warning filter","help":"A list of tool warnings for which printing should be suppressed.\nGenerally this is done on a per design basis after review has\ndetermined that warning can be safely ignored The code for turning\noff warnings can be found in the specific task reference manual.","example":["cli: -tool_task_warningoff 'verilator lint COMBDLY'","api: task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')"],"defvalue":[]}}},"ASIC":{"module":"siliconcompiler.asic","class":"siliconcompiler.asic.ASIC","description":"The ASIC class extends the base Project class to provide specialized functionality and schema parameters for Application-Specific Integrated Circuit (ASIC) design flows.","parameters":{"arg,index":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_index <str>"],"shorthelp":"ARG: index argument","example":["cli: -arg_index 0","api: project.set('arg', 'index', '0')"],"defvalue":null},"arg,step":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_step <str>"],"shorthelp":"ARG: step argument","example":["cli: -arg_step 'route'","api: project.set('arg', 'step', 'route')"],"defvalue":null},"asic,asiclib":{"type":"{str}","scope":"global","pernode":"never","shorthelp":"ASIC: logic libraries","help":"List of all selected logic libraries\nto use for optimization for a given library architecture\n(9T, 11T, etc).","example":["api: asic.set('asic', 'asiclib', 'nangate45')"],"defvalue":[]},"asic,delaymodel":{"type":"str","scope":"global","pernode":"never","shorthelp":"ASIC: delay model","help":"Delay model to use for the target libs. Commonly supported values\nare nldm and ccs.","example":["api: asic.set('asic', 'delaymodel', 'ccs')"],"defvalue":null},"asic,mainlib":{"type":"str","scope":"global","pernode":"never","shorthelp":"ASIC: main logic library","help":"Main logic library to use during the run","example":["api: project.set('asic', 'mainlib', 'nangate45')"],"defvalue":null},"asic,maxlayer":{"type":"str","scope":"global","pernode":"never","shorthelp":"ASIC: maximum routing layer","help":"Maximum metal layer to be used for automated place and route","example":["api: project.set('asic', 'maxlayer', 'M7')"],"defvalue":null},"asic,minlayer":{"type":"str","scope":"global","pernode":"never","shorthelp":"ASIC: Minimum routing layer","help":"Minimum metal layer to be used for automated place and route","example":["api: project.set('asic', 'minlayer', 'M2')"],"defvalue":null},"asic,pdk":{"type":"str","scope":"global","pernode":"never","shorthelp":"ASIC: PDK target","help":"Target PDK used during compilation.","example":["api: project.set('asic', 'pdk', 'freepdk45')"],"defvalue":null},"checklist,default,default,criteria":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_criteria 'standard item <str>'"],"shorthelp":"Checklist: item criteria","help":"Simple list of signoff criteria for checklist item which\nmust all be met for signoff. Each signoff criteria consists of\na metric, a relational operator, and a value in the form\n'metric op value'.","example":["cli: -checklist_criteria 'ISO D000 errors==0'","api: check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')"],"defvalue":[]},"checklist,default,default,dataformat":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_dataformat 'standard item <str>'"],"shorthelp":"Checklist: item data format","help":"Free text description of the type of data files acceptable as\nchecklist signoff validation.","example":["cli: -checklist_dataformat 'ISO D000 README'","api: check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')"],"defvalue":null},"checklist,default,default,description":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_description 'standard item <str>'"],"shorthelp":"Checklist: item description","help":"A short one line description of the checklist item.","example":["cli: -checklist_description 'ISO D000 A-DESCRIPTION'","api: check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')"],"defvalue":null},"checklist,default,default,ok":{"type":"bool","scope":"global","pernode":"never","switch":["-checklist_ok 'standard item <bool>'"],"shorthelp":"Checklist: item ok","help":"Boolean check mark for the checklist item. A value of\nTrue indicates a human has inspected the all item dictionary\nparameters and verified they check out.","example":["cli: -checklist_ok 'ISO D000 true'","api: check.set('checklist', 'ISO', 'D000', 'ok', True)"],"defvalue":false},"checklist,default,default,rationale":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_rationale 'standard item <str>'"],"shorthelp":"Checklist: item rationale","help":"Rationale for the checklist item. Rationale should be a\nunique alphanumeric code used by the standard or a short one line\nor single word description.","example":["cli: -checklist_rationale 'ISO D000 reliability'","api: check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')"],"defvalue":[]},"checklist,default,default,report":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_report 'standard item <file>'"],"shorthelp":"Checklist: item report","help":"Filepath to report(s) of specified type documenting the successful\nvalidation of the checklist item.","hashalgo":"sha256","example":["cli: -checklist_report 'ISO D000 my.rpt'","api: check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')"],"defvalue":[]},"checklist,default,default,requirement":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_requirement 'standard item <str>'"],"shorthelp":"Checklist: item requirement","help":"A complete requirement description of the checklist item\nentered as a multi-line string.","example":["cli: -checklist_requirement 'ISO D000 DOCSTRING'","api: check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')"],"defvalue":null},"checklist,default,default,task":{"type":"[(str,str,str)]","scope":"global","pernode":"never","switch":["-checklist_task 'standard item <(str,str,str)>'"],"shorthelp":"Checklist: item task","help":"Flowgraph job and task used to verify the checklist item.\nThe parameter should be left empty for manual and for tool\nflows that bypass the SC infrastructure.","example":["cli: -checklist_task 'ISO D000 (job0,place,0)'","api: check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))"],"defvalue":[]},"checklist,default,default,waiver,default":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_waiver 'standard item metric <file>'"],"shorthelp":"Checklist: item metric waivers","help":"Filepath to report(s) documenting waivers for the checklist\nitem specified on a per metric basis.","hashalgo":"sha256","example":["cli: -checklist_waiver 'ISO D000 bold my.txt'","api: check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')"],"defvalue":[]},"constraint,area,aspectratio":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-constraint_aspectratio <float>"],"shorthelp":"Constraint: layout aspect ratio","example":["api: asic.set('constraint', 'aspectratio', 2.0)"],"defvalue":1.0},"constraint,area,corearea":{"type":"[(float,float)]","scope":"global","pernode":"optional","switch":["-constraint_corearea <(float,float)>"],"shorthelp":"Constraint: layout core area","unit":"um","example":["api: asic.set('constraint', 'corearea', (0, 0))"],"defvalue":[]},"constraint,area,coremargin":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-constraint_coremargin <float>"],"shorthelp":"Constraint: layout core margin","unit":"um","example":["api: asic.set('constraint', 'coremargin', 1)"],"defvalue":null},"constraint,area,density":{"type":"float<0.0..100.0>","scope":"global","pernode":"optional","switch":["-constraint_density <float>"],"shorthelp":"Constraint: layout density","example":["api: asic.set('constraint', 'density', 30)"],"defvalue":null},"constraint,area,diearea":{"type":"[(float,float)]","scope":"global","pernode":"optional","switch":["-constraint_diearea <(float,float)>"],"shorthelp":"Constraint: die area outline","unit":"um","example":["api: asic.set('constraint', 'diearea', (0, 0))"],"defvalue":[]},"constraint,component,default,halo":{"type":"(float,float)","scope":"global","pernode":"optional","switch":["-constraint_component_halo 'inst <(float,float)>'"],"shorthelp":"Constraint: component halo","unit":"um","example":["cli: -constraint_component_halo 'i0 (1,1)'","api: asic.set('constraint', 'component', 'i0', 'halo', (1, 1))"],"defvalue":null},"constraint,component,default,partname":{"type":"str","scope":"global","pernode":"optional","shorthelp":"Constraint: component part name","example":["api: asic.set('constraint', 'component', 'i0', 'partname', 'filler_x1')"],"defvalue":null},"constraint,component,default,placement":{"type":"(float,float)","scope":"global","pernode":"optional","shorthelp":"Constraint: component placement","unit":"um","example":["api: asic.set('constraint', 'component', 'i0', 'placement', (2.0, 3.0))"],"defvalue":null},"constraint,component,default,rotation":{"type":"<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","pernode":"optional","switch":["-constraint_component_rotation 'inst <str>'"],"shorthelp":"Constraint: component rotation","example":["cli: -constraint_component_rotation 'i0 R90'","api: asic.set('constraint', 'component', 'i0', 'rotation', 'R90')"],"defvalue":"R0"},"constraint,pin,default,layer":{"type":"str","scope":"global","pernode":"optional","shorthelp":"Constraint: pin layer","help":"\n                Pin metal layer constraint specified on a per pin basis.\n                Metal names should either be the PDK specific metal stack name or\n                an integer with '1' being the lowest routing layer.","example":["api: asic.set('constraint', 'pin', 'nreset', 'layer', 'm4')"],"defvalue":null},"constraint,pin,default,length":{"type":"float<0.0..>","scope":"global","pernode":"optional","shorthelp":"Constraint: pin length","help":"\n                Pin length constraint.  Package pin length refers to the\n                length of the electrical pins extending out from (or into)\n                a component. This parameter represents goal/intent, not an exact\n                specification. The layout system may adjust dimensions to meet\n                competing goals such as manufacturing design rules and grid placement\n                guidelines.","unit":"um","example":["api: asic.set('constraint', 'pin', 'nreset', 'length', 1.0)"],"defvalue":null},"constraint,pin,default,order":{"type":"int<0..>","scope":"global","pernode":"optional","shorthelp":"Constraint: pin order","help":"\n                The relative position of the named pin in a vector of pins\n                on the side specified by the 'side' option. Pin order counting\n                is done clockwise. If multiple pins on the same side have the\n                same order number, the actual order is at the discretion of the\n                tool.","example":["api: asic.set('constraint', 'pin', 'nreset', 'order', 1)"],"defvalue":null},"constraint,pin,default,placement":{"type":"(float,float)","scope":"global","pernode":"optional","shorthelp":"Constraint: pin placement","help":"\n                Placement location of a named pin, specified as a (x,y) tuple of\n                floats with respect to the lower left corner of the substrate. The location\n                refers to the center of the pin. The 'placement' parameter\n                is a goal/intent, not an exact specification. The layout system\n                may adjust sizes to meet competing goals such as manufacturing design\n                rules and grid placement guidelines.","unit":"um","example":["api: asic.set('constraint', 'pin', 'nreset', 'placement', (2.0, 3.0))"],"defvalue":null},"constraint,pin,default,shape":{"type":"<circle,hexagon,octagon,oval,pill,polygon,rectangle,square>","scope":"global","pernode":"optional","shorthelp":"Constraint: pin shape","help":"\n                Pin shape constraint specified on a per pin basis. In 3D design systems,\n                the pin shape represents the cross section of the pin in the direction\n                orthogonal to the signal flow direction. The 'pill' (aka stadium) shape,\n                is rectangle with semicircles at a pair of opposite sides. The other\n                pin shapes represent common geometric shape definitions.","example":["api: asic.set('constraint', 'pin', 'nreset', 'shape', 'circle')"],"defvalue":null},"constraint,pin,default,side":{"type":"int<1..>","scope":"global","pernode":"optional","shorthelp":"Constraint: pin side","help":"\n                Side of block where the named pin should be placed. Sides are\n                enumerated as integers with '1' being the lower left side,\n                with the side index incremented on right turn in a clock wise\n                fashion. In case of conflict between 'lower' and 'left',\n                'left' has precedence. The side option and order option are\n                orthogonal to the placement option.","example":["api: asic.set('constraint', 'pin', 'nreset', 'side', 1)"],"defvalue":null},"constraint,pin,default,width":{"type":"float<0.0..>","scope":"global","pernode":"optional","shorthelp":"Constraint: pin width","help":"\n                Pin width constraint.  Package pin width is the lateral\n                (side-to-side) thickness of a pin on a physical component.\n                This parameter represents goal/intent, not an exact\n                specification. The layout system may adjust dimensions to meet\n                competing goals such as manufacturing design rules and grid placement\n                guidelines.","unit":"um","example":["api: asic.set('constraint', 'pin', 'nreset', 'width', 1.0)"],"defvalue":null},"constraint,timing,mode,default,sdcfileset":{"type":"[(str,str)]","scope":"global","pernode":"optional","switch":["-constraint_timing_file 'scenario <file>'"],"shorthelp":"Constraint: SDC files","help":"List of timing constraint sets files to use for the scenario. The\n                values are combined with any constraints specified by the design\n                'constraint' parameter. If no constraints are found, a default\n                constraint file is used based on the clock definitions.","example":["api: mode.set('constraint', 'timing', 'worst', 'file', 'hello.sdc')"],"defvalue":[]},"constraint,timing,scenario,default,check":{"type":"{<dynamicpower,hold,leakagepower,maxcap,maxtran,mincap,power,setup,signalem>}","scope":"global","pernode":"optional","switch":["-constraint_timing_check 'scenario <str>'"],"shorthelp":"Constraint: timing checks","help":"\n                List of checks for to perform for the scenario. The checks must\n                align with the capabilities of the EDA tools and flow being used.\n                Checks generally include objectives like meeting setup and hold goals\n                and minimize power. Standard check names include setup, hold, power,\n                noise, reliability.","example":["api: asic.add('constraint', 'timing', 'worst', 'check', 'setup')"],"defvalue":[]},"constraint,timing,scenario,default,libcorner":{"type":"{str}","scope":"global","pernode":"optional","switch":["-constraint_timing_libcorner 'scenario <str>'"],"shorthelp":"Constraint: library corner","help":"List of characterization corners used to select\n                timing files for all logiclibs and macrolibs.","example":["api: asic.set('constraint', 'timing', 'worst', 'libcorner', 'ttt')"],"defvalue":[]},"constraint,timing,scenario,default,mode":{"type":"str","scope":"global","pernode":"optional","switch":["-constraint_timing_mode 'scenario <str>'"],"shorthelp":"Constraint: operating mode","help":"Operating mode for the scenario. Operating mode strings\n                can be values such as test, functional, standby.","example":["api: asic.set('constraint', 'timing', 'worst', 'mode', 'test')"],"defvalue":null},"constraint,timing,scenario,default,opcond":{"type":"str","scope":"global","pernode":"optional","switch":["-constraint_timing_opcond 'scenario <str>'"],"shorthelp":"Constraint: operating condition","help":"Operating condition applied to the scenario. The value\n                can be used to access specific conditions within the library\n                timing models from the :keypath:`ASIC,asic,asiclib` timing models.","example":["api: asic.set('constraint', 'timing', 'worst', 'opcond', 'typical_1.0')"],"defvalue":null},"constraint,timing,scenario,default,pexcorner":{"type":"str","scope":"global","pernode":"optional","switch":["-constraint_timing_pexcorner 'scenario <str>'"],"shorthelp":"Constraint: pex corner","help":"Parasitic corner applied to the scenario. The\n                'pexcorner' string must match a corner found in\n                :keypath:`PDK,pdk,pexmodelfileset`.","example":["api: asic.set('constraint', 'timing', 'worst', 'pexcorner', 'max')"],"defvalue":null},"constraint,timing,scenario,default,temperature":{"type":"float","scope":"global","pernode":"optional","switch":["-constraint_timing_temperature 'scenario <float>'"],"shorthelp":"Constraint: temperature","help":"Chip temperature applied to the scenario specified in degrees C.","unit":"C","example":["api: asic.set('constraint', 'timing', 'worst', 'temperature', '125')"],"defvalue":null},"constraint,timing,scenario,default,voltage,default":{"type":"float","scope":"global","pernode":"optional","switch":["-constraint_timing_voltage 'scenario pin <float>'"],"shorthelp":"Constraint: pin voltage level","help":"Operating voltage applied to a specific pin in the scenario.","unit":"V","example":["api: asic.set('constraint', 'timing', 'worst', 'voltage', 'VDD', '0.9')"],"defvalue":null},"flowgraph,default,default,default,args":{"type":"[str]","scope":"global","pernode":"never","switch":["-flowgraph_args 'flow step index <str>'"],"shorthelp":"Flowgraph: Node-specific arguments","help":"User-specified arguments passed to the task's `setup()` method.\nThis allows for customizing a specific node's behavior without\naffecting other nodes running the same task.","example":["cli: -flowgraph_args 'asicflow cts 0 buffer_cells'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')"],"defvalue":[]},"flowgraph,default,default,default,goal,default":{"type":"float","scope":"global","pernode":"never","switch":["-flowgraph_goal 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric goals","help":"Goals specified on a per-node and per-metric basis used to\ndetermine whether a task run is considered successful. A task run\nmay be considered failing if the absolute value of any of its\nreported metrics is larger than the goal for that metric (if set).\nThis is often used for metrics like 'errors' or 'setupwns'\nwhere the goal is 0.","example":["cli: -flowgraph_goal 'asicflow cts 0 errors 0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)"],"defvalue":null},"flowgraph,default,default,default,input":{"type":"[(str,str)]","scope":"global","pernode":"never","switch":["-flowgraph_input 'flow step index <(str,str)>'"],"shorthelp":"Flowgraph: Node inputs","help":"A list of inputs for this flowgraph node, where each input is\nspecified as a (step, index) tuple. This defines the dependencies\nof this node.","example":["cli: -flowgraph_input 'asicflow cts 0 (place,0)'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))"],"defvalue":[]},"flowgraph,default,default,default,task":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_task 'flow step index <str>'"],"shorthelp":"Flowgraph: Task selection","help":"Name of the task (e.g., 'place', 'syn', 'join') associated\nwith the node's tool.","example":["cli: -flowgraph_task 'asicflow myplace 0 place'","api: flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')"],"defvalue":null},"flowgraph,default,default,default,taskmodule":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_taskmodule 'flow step index <str>'"],"shorthelp":"Flowgraph: Task module","help":"Full Python module path and class name of the task, formatted as\n'<full.module.path>/<ClassName>'. This is used to import and\ninstantiate the correct Task class for setup and execution.","example":["cli: -flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')"],"defvalue":null},"flowgraph,default,default,default,tool":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_tool 'flow step index <str>'"],"shorthelp":"Flowgraph: Tool selection","help":"Name of the tool (e.g., 'openroad', 'yosys', 'builtin') that\nthis node will execute.","example":["cli: -flowgraph_tool 'asicflow place 0 openroad'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')"],"defvalue":null},"flowgraph,default,default,default,weight,default":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-flowgraph_weight 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric weights","help":"Weights specified on a per-node and per-metric basis, used by\noptimization tasks (like 'minimum') to calculate a \"goodness\"\nscore for a run. The score is typically a weighted sum of\nmetric results.","example":["cli: -flowgraph_weight 'asicflow cts 0 area_cells 1.0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)"],"defvalue":0.0},"metric,averagepower":{"type":"float","scope":"job","pernode":"required","switch":["-metric_averagepower 'step index <float>'"],"shorthelp":"Metric: averagepower","help":"Metric tracking the average workload power of the design specified on a per step\nand index basis. Power metric depend heavily on the method\nbeing used for extraction: dynamic vs static, workload\nspecification (vcd vs saif), power models, process/voltage/temperature.\nThe power averagepower metric tries to capture the data that would\nusually be reflected inside a datasheet given the appropriate\nfootnote conditions.","unit":"mw","example":["cli: -metric_averagepower 'place 0 0.01'","api: asic.set('metric', 'averagepower', 0.01, step='place', index=0)"]},"metric,buffers":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_buffers 'step index <int>'"],"shorthelp":"Metric: buffers","help":"Metric tracking the total number of buffer instances in the design\non a per step and index basis.","example":["cli: -metric_buffers 'place 0 100'","api: asic.set('metric', 'buffers', 50, step='place', index=0)"]},"metric,cellarea":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_cellarea 'step index <float>'"],"shorthelp":"Metric: cellarea","help":"Metric tracking the total cell area (ignoring fillers) occupied by the design.","unit":"um^2","example":["cli: -metric_cellarea 'place 0 100.00'","api: asic.set('metric', 'cellarea', 100.00, step='place', index=0)"]},"metric,cells":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_cells 'step index <int>'"],"shorthelp":"Metric: cells","help":"Metric tracking the total number of cell instances in the design\non a per step and index basis.","example":["cli: -metric_cells 'place 0 100'","api: asic.set('metric', 'cells', 50, step='place', index=0)"]},"metric,drcs":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_drcs 'step index <int>'"],"shorthelp":"Metric: total drcs","help":"Metric tracking the total number of physical design rule violations on a\nper step and index basis.","example":["cli: -metric_drcs 'dfm 0 0'","api: asic.set('metric', 'drcs', 0, step='dfm', index=0)"]},"metric,drvs":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_drvs 'step index <int>'"],"shorthelp":"Metric: total drvs","help":"Metric tracking the total number of design rule violations on a\nper step and index basis.","example":["cli: -metric_drvs 'dfm 0 0'","api: asic.set('metric', 'drvs', 0, step='dfm', index=0)"]},"metric,errors":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_errors 'step index <int>'"],"shorthelp":"Metric: total errors","help":"Metric tracking the total number of errors on a\nper step and index basis.","example":["cli: -metric_errors 'dfm 0 0'","api: project.set('metric', 'errors', 0, step='dfm', index=0)"]},"metric,exetime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_exetime 'step index <float>'"],"shorthelp":"Metric: exetime","help":"Metric tracking time spent by the EDA executable\n:keypath:`tool,<tool>,task,<task>,exe` on a\nper step and index basis. It does not include the SiliconCompiler\nruntime overhead or time waiting for I/O operations and\ninter-processor communication to complete.","unit":"s","example":["cli: -metric_exetime 'dfm 0 10.0'","api: project.set('metric', 'exetime', 10.0, step='dfm', index=0)"]},"metric,fmax":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_fmax 'step index <float>'"],"shorthelp":"Metric: fmax","help":"Metric tracking the maximum clock frequency on a per step and index basis.","unit":"Hz","example":["cli: -metric_fmax 'place 0 100e6'","api: asic.set('metric', 'fmax', 100e6, step='place', index=0)"]},"metric,holdpaths":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_holdpaths 'step index <int>'"],"shorthelp":"Metric: holdpaths","help":"Metric tracking the total number of timing paths violating hold\nconstraints.","example":["cli: -metric_holdpaths 'place 0 10'","api: asic.set('metric', 'holdpaths', 10, step='place', index=0)"]},"metric,holdskew":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdskew 'step index <float>'"],"shorthelp":"Metric: holdskew","help":"Metric tracking the hold clock skew on a per step and index basis.","unit":"ns","example":["cli: -metric_holdskew 'place 0 0.01'","api: asic.set('metric', 'holdskew', 0.01, step='place', index=0)"]},"metric,holdslack":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdslack 'step index <float>'"],"shorthelp":"Metric: holdslack","help":"Metric tracking the worst hold slack (positive or negative) on a per step and index basis.","unit":"ns","example":["cli: -metric_holdslack 'place 0 0.01'","api: asic.set('metric', 'holdslack', 0.01, step='place', index=0)"]},"metric,holdtns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdtns 'step index <float>'"],"shorthelp":"Metric: holdtns","help":"Metric tracking the total negative hold slack (TNS) on a per step and index basis.","unit":"ns","example":["cli: -metric_holdtns 'place 0 0.01'","api: asic.set('metric', 'holdtns', 0.01, step='place', index=0)"]},"metric,holdwns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdwns 'step index <float>'"],"shorthelp":"Metric: holdwns","help":"Metric tracking the worst negative hold slack (positive values truncated to zero) on a per step and index basis.","unit":"ns","example":["cli: -metric_holdwns 'place 0 0.01'","api: asic.set('metric', 'holdwns', 0.01, step='place', index=0)"]},"metric,inverters":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_inverters 'step index <int>'"],"shorthelp":"Metric: inverters","help":"Metric tracking the total number of inverter instances in the design\non a per step and index basis.","example":["cli: -metric_inverters 'place 0 100'","api: asic.set('metric', 'inverters', 50, step='place', index=0)"]},"metric,irdrop":{"type":"float","scope":"job","pernode":"required","switch":["-metric_irdrop 'step index <float>'"],"shorthelp":"Metric: peak IR drop","help":"Metric tracking the peak IR drop in the design based on extracted\npower and ground rail parasitics, library power models, and\nswitching activity. The switching activity calculated on a per\nnode basis is taken from one of three possible sources, in order\nof priority: VCD file, SAIF file, 'activityfactor' parameter.","unit":"mv","example":["cli: -metric_irdrop 'place 0 0.05'","api: asic.set('metric', 'irdrop', 0.05, step='place', index=0)"]},"metric,leakagepower":{"type":"float","scope":"job","pernode":"required","switch":["-metric_leakagepower 'step index <float>'"],"shorthelp":"Metric: leakagepower","help":"Metric tracking the leakage power with rails active but without any dynamic switching activity of the design specified on a per step\nand index basis. Power metric depend heavily on the method\nbeing used for extraction: dynamic vs static, workload\nspecification (vcd vs saif), power models, process/voltage/temperature.\nThe power leakagepower metric tries to capture the data that would\nusually be reflected inside a datasheet given the appropriate\nfootnote conditions.","unit":"mw","example":["cli: -metric_leakagepower 'place 0 0.01'","api: asic.set('metric', 'leakagepower', 0.01, step='place', index=0)"]},"metric,logicdepth":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_logicdepth 'step index <int>'"],"shorthelp":"Metric: logic depth","help":"Metric tracking the logic depth of the design. This is determined\nby the number of logic gates between the start of the critital timing\npath to the end of the path.","example":["cli: -metric_logicdepth 'place 0 8'","api: asic.set('metric', 'logicdepth', 8, step='place', index=0)"]},"metric,macroarea":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_macroarea 'step index <float>'"],"shorthelp":"Metric: macroarea","help":"Metric tracking the total macro cell area occupied by the design.","unit":"um^2","example":["cli: -metric_macroarea 'place 0 100.00'","api: asic.set('metric', 'macroarea', 100.00, step='place', index=0)"]},"metric,macros":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_macros 'step index <int>'"],"shorthelp":"Metric: macros","help":"Metric tracking the total number of macros in the design\non a per step and index basis.","example":["cli: -metric_macros 'place 0 100'","api: asic.set('metric', 'macros', 50, step='place', index=0)"]},"metric,memory":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_memory 'step index <float>'"],"shorthelp":"Metric: memory","help":"Metric tracking total peak program memory footprint on a per\nstep and index basis.","unit":"B","example":["cli: -metric_memory 'dfm 0 10e9'","api: project.set('metric', 'memory', 10e9, step='dfm', index=0)"]},"metric,nets":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_nets 'step index <int>'"],"shorthelp":"Metric: nets","help":"Metric tracking the total number of nets in the design\non a per step and index basis.","example":["cli: -metric_nets 'place 0 100'","api: asic.set('metric', 'nets', 50, step='place', index=0)"]},"metric,overflow":{"type":"int","scope":"job","pernode":"required","switch":["-metric_overflow 'step index <int>'"],"shorthelp":"Metric: overflow","help":"Metric tracking the total number of overflow tracks for the routing\non per step and index basis. Any non-zero number suggests an over\ncongested design. To analyze where the congestion is occurring\ninspect the router log files for detailed per metal overflow\nreporting and open up the design to find routing hotspots.","example":["cli: -metric_overflow 'place 0 0'","api: asic.set('metric', 'overflow', 50, step='place', index=0)"]},"metric,padcellarea":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_padcellarea 'step index <float>'"],"shorthelp":"Metric: padcellarea","help":"Metric tracking the total io pad cell area occupied by the design.","unit":"um^2","example":["cli: -metric_padcellarea 'place 0 100.00'","api: asic.set('metric', 'padcellarea', 100.00, step='place', index=0)"]},"metric,peakpower":{"type":"float","scope":"job","pernode":"required","switch":["-metric_peakpower 'step index <float>'"],"shorthelp":"Metric: peakpower","help":"Metric tracking the worst case total peak power of the design specified on a per step\nand index basis. Power metric depend heavily on the method\nbeing used for extraction: dynamic vs static, workload\nspecification (vcd vs saif), power models, process/voltage/temperature.\nThe power peakpower metric tries to capture the data that would\nusually be reflected inside a datasheet given the appropriate\nfootnote conditions.","unit":"mw","example":["cli: -metric_peakpower 'place 0 0.01'","api: asic.set('metric', 'peakpower', 0.01, step='place', index=0)"]},"metric,pins":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_pins 'step index <int>'"],"shorthelp":"Metric: pins","help":"Metric tracking the total number of pins in the design\non a per step and index basis.","example":["cli: -metric_pins 'place 0 100'","api: asic.set('metric', 'pins', 50, step='place', index=0)"]},"metric,registers":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_registers 'step index <int>'"],"shorthelp":"Metric: registers","help":"Metric tracking the total number of register instances in the design\non a per step and index basis.","example":["cli: -metric_registers 'place 0 100'","api: asic.set('metric', 'registers', 50, step='place', index=0)"]},"metric,setuppaths":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_setuppaths 'step index <int>'"],"shorthelp":"Metric: setuppaths","help":"Metric tracking the total number of timing paths violating setup\nconstraints.","example":["cli: -metric_setuppaths 'place 0 10'","api: asic.set('metric', 'setuppaths', 10, step='place', index=0)"]},"metric,setupskew":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setupskew 'step index <float>'"],"shorthelp":"Metric: setupskew","help":"Metric tracking the setup clock skew on a per step and index basis.","unit":"ns","example":["cli: -metric_setupskew 'place 0 0.01'","api: asic.set('metric', 'setupskew', 0.01, step='place', index=0)"]},"metric,setupslack":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setupslack 'step index <float>'"],"shorthelp":"Metric: setupslack","help":"Metric tracking the worst setup slack (positive or negative) on a per step and index basis.","unit":"ns","example":["cli: -metric_setupslack 'place 0 0.01'","api: asic.set('metric', 'setupslack', 0.01, step='place', index=0)"]},"metric,setuptns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setuptns 'step index <float>'"],"shorthelp":"Metric: setuptns","help":"Metric tracking the total negative setup slack (TNS) on a per step and index basis.","unit":"ns","example":["cli: -metric_setuptns 'place 0 0.01'","api: asic.set('metric', 'setuptns', 0.01, step='place', index=0)"]},"metric,setupwns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setupwns 'step index <float>'"],"shorthelp":"Metric: setupwns","help":"Metric tracking the worst negative setup slack (positive values truncated to zero) on a per step and index basis.","unit":"ns","example":["cli: -metric_setupwns 'place 0 0.01'","api: asic.set('metric', 'setupwns', 0.01, step='place', index=0)"]},"metric,stdcellarea":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_stdcellarea 'step index <float>'"],"shorthelp":"Metric: stdcellarea","help":"Metric tracking the total standard cell area occupied by the design.","unit":"um^2","example":["cli: -metric_stdcellarea 'place 0 100.00'","api: asic.set('metric', 'stdcellarea', 100.00, step='place', index=0)"]},"metric,tasktime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_tasktime 'step index <float>'"],"shorthelp":"Metric: tasktime","help":"Metric tracking the total amount of time spent on a task from\nbeginning to end, including data transfers and pre/post\nprocessing.","unit":"s","example":["cli: -metric_tasktime 'dfm 0 10.0'","api: project.set('metric', 'tasktime', 10.0, step='dfm', index=0)"]},"metric,totalarea":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_totalarea 'step index <float>'"],"shorthelp":"Metric: totalarea","help":"Metric tracking the total physical die area occupied by the design.","unit":"um^2","example":["cli: -metric_totalarea 'place 0 100.00'","api: asic.set('metric', 'totalarea', 100.00, step='place', index=0)"]},"metric,totaltime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_totaltime 'step index <float>'"],"shorthelp":"Metric: totaltime","help":"Metric tracking the total amount of time spent from the beginning\nof the run up to and including the current step and index.","unit":"s","example":["cli: -metric_totaltime 'dfm 0 10.0'","api: project.set('metric', 'totaltime', 10.0, step='dfm', index=0)"]},"metric,transistors":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_transistors 'step index <int>'"],"shorthelp":"Metric: transistors","help":"Metric tracking the total number of transistors in the design\non a per step and index basis.","example":["cli: -metric_transistors 'place 0 100'","api: asic.set('metric', 'transistors', 50, step='place', index=0)"]},"metric,unconstrained":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_unconstrained 'step index <int>'"],"shorthelp":"Metric: total unconstrained","help":"Metric tracking the total number of unconstrained timing paths on a\nper step and index basis.","example":["cli: -metric_unconstrained 'dfm 0 0'","api: asic.set('metric', 'unconstrained', 0, step='dfm', index=0)"]},"metric,utilization":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_utilization 'step index <float>'"],"shorthelp":"Metric: area utilization","help":"Metric tracking the area utilization of the design calculated as\n100 * (cellarea/totalarea).","unit":"%","example":["cli: -metric_utilization 'place 0 50.00'","api: asic.set('metric', 'utilization', 50.00, step='place', index=0)"]},"metric,vias":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_vias 'step index <int>'"],"shorthelp":"Metric: vias","help":"Metric tracking the total number of vias in the design\non a per step and index basis.","example":["cli: -metric_vias 'place 0 100'","api: asic.set('metric', 'vias', 50, step='place', index=0)"]},"metric,warnings":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_warnings 'step index <int>'"],"shorthelp":"Metric: total warnings","help":"Metric tracking the total number of warnings on a\nper step and index basis.","example":["cli: -metric_warnings 'dfm 0 0'","api: project.set('metric', 'warnings', 0, step='dfm', index=0)"]},"metric,wirelength":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_wirelength 'step index <float>'"],"shorthelp":"Metric: wirelength","help":"Metric tracking the total wirelength of the design on a per step\nand index basis.","unit":"um","example":["cli: -metric_wirelength 'place 0 100.0'","api: asic.set('metric', 'wirelength', 50.0, step='place', index=0)"]},"option,alias":{"type":"[(str,str,str,str)]","scope":"global","pernode":"never","shorthelp":"Option: Fileset alias mapping","help":"List of filesets to alias during a run. When an alias is specific\nit will be used instead of the source fileset. It is useful when you\nwant to substitute a fileset from one library with a fileset from another,\nwithout changing the original design's code.\nFor example, you might use it to swap in a different version of an IP\nblock or a specific test environment.","example":["api: option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))"],"defvalue":[]},"option,autoissue":{"type":"bool","scope":"global","pernode":"never","switch":["-autoissue <bool>"],"shorthelp":"Option: Enables automatic generation of testcases","help":"Enables automatic generation of testcases\nif the specific node fails","example":["api: option.set('autoissue', True)"],"defvalue":false},"option,breakpoint":{"type":"bool","scope":"job","pernode":"optional","switch":["-breakpoint <bool>"],"shorthelp":"Option: breakpoint list","help":"\n                Set a breakpoint on specific steps. If the step is a TCL\n                based tool, then the breakpoints stops the flow inside the\n                EDA tool. If the step is a command line tool, then the flow\n                drops into a Python interpreter.","example":["cli: -breakpoint true","api: option.set('breakpoint', True)"],"defvalue":false},"option,builddir":{"type":"dir","scope":"global","pernode":"never","switch":["-builddir <dir>"],"shorthelp":"Option: build directory","help":"\n                The default build directory is in the local './build' where SC was\n                executed. This can be used to set an alternate\n                compilation directory path.","hashalgo":"sha256","example":["cli: -builddir ./build_the_future","api: option.set('builddir', './build_the_future')"],"defvalue":"build"},"option,cachedir":{"type":"dir","scope":"global","pernode":"never","switch":["-cachedir <dir>"],"shorthelp":"Option: user cache directory","help":"\n                Filepath to the cache SiliconCompiler keeps between runs. It holds\n                one subdirectory per kind of cached data: \"dataroot\" for downloaded\n                package data sources, and \"tools\" for the caches tools keep for\n                themselves, such as the compiler cache a Verilator build writes to.\n                Cached data goes in those subdirectories, not in the directory\n                itself. If the cache parameter is empty, the \".sc/cache\" directory\n                in the user's home directory will be used.","hashalgo":"sha256","example":["cli: -cachedir /home/user/.sc/cache","api: option.set('cachedir', '/home/user/.sc/cache')"],"defvalue":null},"option,clean":{"type":"bool","scope":"global","pernode":"never","switch":["-clean <bool>"],"shorthelp":"Option: cleanup previous job","help":"\n                Run a job from the start and do not use any of the previous job.\n                If :keypath:`option, jobincr` is True, the old job is preserved and\n                a new job number is assigned.\n                ","example":["cli: -clean","api: option.set('clean', True)"],"defvalue":false},"option,continue":{"type":"bool","scope":"global","pernode":"optional","switch":["-continue <bool>"],"shorthelp":"Option: continue-on-error","help":"\n                Attempt to continue even when errors are encountered in the SC\n                implementation. The default behavior is to quit executing the flow\n                if a task ends and the errors metric is greater than 0.\n\n                Set this on the node that may fail, not on the node that consumes\n                it: the option excuses a failure for the benefit of everything\n                downstream. Nodes that take input from an excused node are still\n                launched and run on whatever inputs did arrive -- a failed branch\n                is dropped, not substituted, so a merge assembles the branches\n                that survived. A node whose every input was excused still fails,\n                having nothing left to run on, and the excuse does not propagate:\n                a node that fails as a consequence of an excused failure upstream\n                needs an excuse of its own.\n\n                Note that the failing task itself always stops if the tool returns\n                a nonzero status code; what this option relaxes is whether the rest\n                of the flow proceeds without it. A run that finishes over a failed\n                branch still reports that branch as an error.\n                ","example":["cli: -continue","api: option.set('continue', True)"],"defvalue":false},"option,credentials":{"type":"file","scope":"global","pernode":"never","switch":["-credentials <file>"],"shorthelp":"Option: user credentials file","help":"\n                Filepath to credentials used for remote processing. If the\n                credentials parameter is empty, the remote processing client program\n                tries to access the \".sc/credentials\" file in the user's home\n                directory. The file supports the following fields:\n\n                address=<server address>\n                port=<server port> (optional)\n                username=<user id> (optional)\n                password=<password / key used for authentication> (optional)","hashalgo":"sha256","example":["cli: -credentials /home/user/.sc/credentials","api: option.set('credentials', '/home/user/.sc/credentials')"],"defvalue":null},"option,design":{"type":"str","scope":"global","pernode":"never","switch":["-design <str>"],"shorthelp":"Option: Design library name","help":"Name of the top level library","example":["cli: -design hello_world","api: option.set('design', 'hello_world')"],"defvalue":null},"option,env,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Option: environment variables","help":"Certain tools and reference flows require global environment\nvariables to be set. These variables can be managed externally or\nspecified through the env variable.","example":["api: option.set('env', 'PDK_HOME', '/disk/mypdk')"],"defvalue":null},"option,fileset":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Option: Selected design filesets","help":"List of filesets to use from the selected design library","example":["api: option.set('fileset', 'rtl')"],"defvalue":[]},"option,flow":{"type":"str","scope":"global","pernode":"never","switch":["-flow <str>"],"shorthelp":"Option: flow target","help":"\n                Sets the flow for the current run. The flow name\n                must match up with a 'flow' in the flowgraph","example":["cli: -flow asicflow","api: option.set('flow', 'asicflow')"],"defvalue":null},"option,from":{"type":"[str]","scope":"job","pernode":"never","switch":["-from <str>"],"shorthelp":"Option: starting step","help":"\n                Inclusive list of steps to start execution from. The default is to start\n                at all entry steps in the flow graph.\n\n                Steps ahead of the starting steps are not rerun: the run uses their\n                outputs from the existing build directory, even when they are out of\n                date. If a step that feeds a starting step has no usable outputs, the\n                run fails. Any other step left out of the run whose outputs are missing\n                or failed is added back and rerun, such as a parallel branch that merges\n                with the run further downstream.","example":["cli: -from 'import'","api: option.set('from', 'import')"],"defvalue":[]},"option,hash":{"type":"bool","scope":"global","pernode":"never","switch":["-hash <bool>"],"shorthelp":"Option: file hashing","help":"\n                Enables hashing of all inputs and outputs during\n                compilation. The hash values are stored in the hashvalue\n                field of the individual parameters.","example":["cli: -hash","api: option.set('hash', True)"],"defvalue":false},"option,jobincr":{"type":"bool","scope":"global","pernode":"never","switch":["-jobincr <bool>"],"shorthelp":"Option: autoincrement jobname","help":"\n                Forces an auto-update of the jobname parameter if a directory\n                matching the jobname is found in the build directory. If the\n                jobname does not include a trailing digit, then the number\n                '1' is added to the jobname before updating the jobname\n                parameter.","example":["cli: -jobincr","api: option.set('jobincr', True)"],"defvalue":false},"option,jobname":{"type":"str","scope":"global","pernode":"never","switch":["-jobname <str>"],"shorthelp":"Option: job name","help":"\n                Jobname during invocation of :meth:`.Project.run()`. The jobname combined with a\n                defined director structure (<dir>/<design>/<jobname>/<step>/<index>)\n                enables multiple levels of transparent job, step, and index\n                introspection.","example":["cli: -jobname may1","api: option.set('jobname', 'may1')"],"defvalue":"job0"},"option,nice":{"type":"int<-20..19>","scope":"global","pernode":"optional","switch":["-nice <int>"],"shorthelp":"Option: tool scheduling priority","help":"\n                Sets the type of execution priority of each individual flowgraph steps.\n                If the parameter is undefined, nice will not be used. For more information see\n                `Unix 'nice' <https://en.wikipedia.org/wiki/Nice_(Unix)>`_.","example":["cli: -nice 5","api: option.set('nice', 5)"],"defvalue":null},"option,nodashboard":{"type":"bool","scope":"global","pernode":"never","switch":["-nodashboard <bool>"],"shorthelp":"Option: Disables the dashboard","help":"Disables the dashboard during execution","example":["api: option.set('nodashboard', True)"],"defvalue":false},"option,nodisplay":{"type":"bool","scope":"global","pernode":"never","switch":["-nodisplay <bool>"],"shorthelp":"Option: headless execution","help":"\n                This flag prevents SiliconCompiler from opening GUI windows.","example":["cli: -nodisplay","api: option.set('nodisplay', True)"],"defvalue":false},"option,novercheck":{"type":"bool","scope":"global","pernode":"optional","switch":["-novercheck <bool>"],"shorthelp":"Option: disable version checking","help":"\n                Disables strict version checking on all invoked tools if True.\n                The list of supported version numbers is defined in the\n                :keypath:`tool,<tool>,task,<task>,version`.","example":["cli: -novercheck","api: option.set('novercheck', True)"],"defvalue":false},"option,optmode":{"type":"int<0..>","scope":"global","pernode":"optional","switch":["-O<str>","-optmode <str>"],"shorthelp":"Option: optimization mode","help":"\n                The compiler has modes to prioritize run time and ppa. Modes\n                include.\n\n                (O0) = Exploration mode for debugging setup\n                (O1) = Higher effort and better PPA than O0\n                (O2) = Higher effort and better PPA than O1\n                (O3) = Signoff quality. Better PPA and higher run times than O2\n                (O4-O98) = Reserved (compiler/target dependent)\n                (O99) = Experimental highest possible effort, may be unstable\n                ","example":["cli: -O3","cli: -optmode 3","api: option.set('optmode', 'O3')"],"defvalue":0},"option,prune":{"type":"[(str,str)]","scope":"job","pernode":"never","switch":["-prune 'node <(str,str)>'"],"shorthelp":"Option: flowgraph pruning","help":"\n                List of starting nodes for branches to be pruned.\n                The default is to not prune any nodes/branches.","example":["cli: -prune (syn,0)","api: option.set('prune', ('syn', '0'))"],"defvalue":[]},"option,quiet":{"type":"bool","scope":"global","pernode":"optional","switch":["-quiet <bool>"],"shorthelp":"Option: quiet execution","help":"\n                The -quiet option forces all steps to print to a log file.\n                This can be useful with Modern EDA tools which print\n                significant content to the screen.","example":["cli: -quiet","api: option.set('quiet', True)"],"defvalue":false},"option,remote":{"type":"bool","scope":"global","pernode":"never","switch":["-remote <bool>"],"shorthelp":"Option: enable remote processing","help":"\n                Sends job for remote processing if set to true. The remote\n                option requires a credentials file to be placed in the home\n                directory. Fore more information, see the credentials\n                parameter.","example":["cli: -remote","api: option.set('remote', True)"],"defvalue":false},"option,scheduler,cores":{"type":"int<1..>","scope":"global","pernode":"optional","switch":["-cores <int>"],"shorthelp":"Option: Scheduler core constraint","help":"\n                Specifies the number CPU cores required to run the job.\n                For the slurm scheduler, this translates to the '-c'\n                switch. For more information, see the job scheduler\n                documentation","example":["cli: -cores 48","api: option.set('cores', 48)"],"defvalue":null},"option,scheduler,defer":{"type":"str","scope":"global","pernode":"optional","switch":["-defer <str>"],"shorthelp":"Option: scheduler start time","help":"\n                Defer initiation of job until the specified time. The parameter\n                is pass through string for remote job scheduler such as slurm.\n                For more information about the exact format specification, see\n                the job scheduler documentation. Examples of valid slurm specific\n                values include: now+1hour, 16:00, 010-01-20T12:34:00. For more\n                information, see the job scheduler documentation.","example":["cli: -defer 16:00","api: option.set('defer', '16:00')"],"defvalue":null},"option,scheduler,maxnodes":{"type":"int<1..>","scope":"global","pernode":"never","switch":["-maxnodes <int>"],"shorthelp":"Option: maximum concurrent nodes","help":"\n                Maximum number of concurrent nodes to run in a job. If not set this will default\n                to the number of cpu cores available.","example":["cli: -maxnodes 4","api: option.set('maxnodes', 4)"],"defvalue":null},"option,scheduler,maxthreads":{"type":"int<1..>","scope":"global","pernode":"never","shorthelp":"Option: maximum number of threads to assign a task","help":"\n                Maximum number of threads for each task in a job. If not set this will default\n                to the number of cpu cores available.","example":["api: option.set('maxthreads', 4)"],"defvalue":null},"option,scheduler,memory":{"type":"int","scope":"global","pernode":"optional","switch":["-memory <int>"],"shorthelp":"Option: scheduler memory constraint","help":"\n                Specifies the amount of memory required to run the job,\n                specified in MB. For the slurm scheduler, this translates to\n                the '--mem' switch. For more information, see the job\n                scheduler documentation","unit":"MB","example":["cli: -memory 8000","api: option.set('memory', 8000)"],"defvalue":null},"option,scheduler,msgcontact":{"type":"{str}","scope":"global","pernode":"optional","switch":["-msgcontact <str>"],"shorthelp":"Option: message contact","help":"\n                List of email addresses to message on a :keypath:`option,scheduler,msgevent`.\n                Support for email messages relies on job scheduler daemon support.\n                For more information, see the job scheduler documentation. ","example":["cli: -msgcontact 'wile.e.coyote@acme.com'","api: option.set('msgcontact', 'wiley@acme.com')"],"defvalue":[]},"option,scheduler,msgevent":{"type":"{<all,begin,end,fail,summary,timeout>}","scope":"global","pernode":"optional","switch":["-msgevent <str>"],"shorthelp":"Option: message event trigger","help":"\n                Directs job scheduler to send a message to the user in\n                :keypath:`option,scheduler,msgcontact` when certain events occur\n                during a task.\n\n                * fail: send an email on failures\n                * timeout: send an email on timeouts\n                * begin: send an email at the start of a node task\n                * end: send an email at the end of a node task\n                * summary: send a summary email at the end of the run\n                * all: send an email on any event\n                ","example":["cli: -msgevent all","api: option.set('msgevent', 'all')"],"defvalue":[]},"option,scheduler,name":{"type":"<docker,lsf,sge,slurm>","scope":"global","pernode":"optional","switch":["-scheduler <str>"],"shorthelp":"Option: scheduler platform","help":"\n                Sets the type of job scheduler to be used for each individual\n                flowgraph steps. If the parameter is undefined, the steps are executed\n                on the same machine that the SC was launched on. If 'slurm' is used,\n                the host running the 'sc' command must be running a 'slurmctld' daemon\n                managing a Slurm cluster. Additionally, the build directory\n                (:keypath:`option,builddir`) must be located in shared storage which\n                can be accessed by all hosts in the cluster.","example":["cli: -scheduler slurm","api: option.set('name', 'slurm')"],"defvalue":null},"option,scheduler,options":{"type":"[str]","scope":"global","pernode":"optional","switch":["-scheduler_options <str>"],"shorthelp":"Option: scheduler arguments","help":"\n                Advanced/export options passed through unchanged to the job\n                scheduler as-is. (The user specified options must be compatible\n                with the rest of the scheduler parameters entered.(memory etc).\n                For more information, see the job scheduler documentation.","example":["cli: -scheduler_options \"--pty\"","api: option.set('options', \"--pty\")"],"defvalue":[]},"option,scheduler,queue":{"type":"str","scope":"global","pernode":"optional","switch":["-queue <str>"],"shorthelp":"Option: scheduler queue","help":"\n                Send the job to the specified queue. With slurm, this\n                translates to 'partition'. The queue name must match\n                the name of an existing job scheduler queue. For more information,\n                see the job scheduler documentation","example":["cli: -queue nightrun","api: option.set('queue', 'nightrun')"],"defvalue":null},"option,timeout":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-timeout <float>"],"shorthelp":"Option: timeout value","help":"\n                Timeout value in seconds. The timeout value is compared\n                against the wall time tracked by the SC runtime to determine\n                if an operation should continue.","unit":"s","example":["cli: -timeout 3600","api: option.set('timeout', 3600)"],"defvalue":null},"option,to":{"type":"[str]","scope":"job","pernode":"never","switch":["-to <str>"],"shorthelp":"Option: ending step","help":"\n                Inclusive list of steps to end execution with. The default is to go\n                to all exit steps in the flow graph.","example":["cli: -to 'syn'","api: option.set('to', 'syn')"],"defvalue":[]},"option,track":{"type":"bool","scope":"global","pernode":"optional","switch":["-track <bool>"],"shorthelp":"Option: enable provenance tracking","help":"\n                Turns on tracking of all 'record' parameters during each\n                task, otherwise only tool and runtime information will be recorded.\n                Tracking will result in potentially sensitive data\n                being recorded in the manifest so only turn on this feature\n                if you have control of the final manifest.","example":["cli: -track","api: option.set('track', True)"],"defvalue":false},"record,arch":{"type":"str","scope":"job","pernode":"required","switch":["-record_arch 'step index <str>'"],"shorthelp":"Record: hardware architecture","help":"Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)","example":["cli: -record_arch 'dfm 0 x86_64'","api: schema.set('record', 'arch', 'x86_64', step='dfm', index=0)"]},"record,distro":{"type":"str","scope":"job","pernode":"required","switch":["-record_distro 'step index <str>'"],"shorthelp":"Record: distro name","help":"Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)","example":["cli: -record_distro 'dfm 0 ubuntu'","api: schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)"]},"record,endtime":{"type":"str","scope":"job","pernode":"required","switch":["-record_endtime 'step index <str>'"],"shorthelp":"Record: end time","help":"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","example":["cli: -record_endtime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'endtime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,inputnode":{"type":"[(str,str)]","scope":"job","pernode":"required","switch":["-record_inputnode 'step index <(str,str)>'"],"shorthelp":"Record: node inputs","help":"List of selected inputs for the current step/index specified as\n(in_step, in_index) tuple.","example":["cli: -record_inputnode 'cts 0 (place,42)'","api: schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')"]},"record,ipaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_ipaddr 'step index <str>'"],"shorthelp":"Record: IP address","help":"Record tracking the IP address per step and index basis.","example":["cli: -record_ipaddr 'dfm 0 <addr>'","api: schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)"]},"record,kernelversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_kernelversion 'step index <str>'"],"shorthelp":"Record: O/S kernel version","help":"Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction\nbetween os kernels and os distributions.","example":["cli: -record_kernelversion 'dfm 0 5.11.0-34-generic'","api: schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)"]},"record,macaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_macaddr 'step index <str>'"],"shorthelp":"Record: MAC address","help":"Record tracking the MAC address per step and index basis.","example":["cli: -record_macaddr 'dfm 0 <addr>'","api: schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)"]},"record,machine":{"type":"str","scope":"job","pernode":"required","switch":["-record_machine 'step index <str>'"],"shorthelp":"Record: machine name","help":"Record tracking the machine name per step and index basis. (myhost, localhost, ...","example":["cli: -record_machine 'dfm 0 carbon'","api: schema.set('record', 'machine', 'carbon', step='dfm', index=0)"]},"record,osversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_osversion 'step index <str>'"],"shorthelp":"Record: O/S version","help":"Record tracking the O/S version per step and index basis. Since there is not standard version system for operating\nsystems, extracting information from is platform dependent.\nFor Linux based operating systems, the 'osversion' is the\nversion of the distro.","example":["cli: -record_osversion 'dfm 0 20.04.1-Ubuntu'","api: schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)"]},"record,platform":{"type":"str","scope":"job","pernode":"required","switch":["-record_platform 'step index <str>'"],"shorthelp":"Record: platform name","help":"Record tracking the platform name per step and index basis. (linux, windows, freebsd)","example":["cli: -record_platform 'dfm 0 linux'","api: schema.set('record', 'platform', 'linux', step='dfm', index=0)"]},"record,publickey":{"type":"str","scope":"job","pernode":"required","switch":["-record_publickey 'step index <str>'"],"shorthelp":"Record: public key","help":"Record tracking the public key per step and index basis.","example":["cli: -record_publickey 'dfm 0 <key>'","api: schema.set('record', 'publickey', '<key>', step='dfm', index=0)"]},"record,pythonpackage":{"type":"[str]","scope":"job","pernode":"never","switch":["-record_pythonpackage '<str>'"],"shorthelp":"Record: python packages","help":"Record tracking for the python packages installed.","example":["cli: -record_pythonpackage 'siliconcompiler==0.28.0'","api: schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')"],"defvalue":[]},"record,pythonversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_pythonversion 'step index <str>'"],"shorthelp":"Record: Python version","help":"Record tracking the Python version per step and index basis. Version of python used to run this task.","example":["cli: -record_pythonversion 'dfm 0 3.12.3'","api: schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)"]},"record,region":{"type":"str","scope":"job","pernode":"required","switch":["-record_region 'step index <str>'"],"shorthelp":"Record: cloud region","help":"Record tracking the cloud region per step and index basis. Recommended naming methodology:\n\n* local: node is the local machine\n* onprem: node in on-premises IT infrastructure\n* public: generic public cloud\n* govcloud: generic US government cloud\n* <region>: cloud and entity specific region string name","example":["cli: -record_region 'dfm 0 \"US Gov Boston\"'","api: schema.set('record', 'region', '\"US Gov Boston\"', step='dfm', index=0)"]},"record,remoteid":{"type":"str","scope":"job","pernode":"never","switch":["-record_remoteid '<str>'"],"shorthelp":"Record: remote job ID","help":"Record tracking the job ID for a remote run.","example":["cli: -record_remoteid '0123456789abcdeffedcba9876543210'","api: schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')"],"defvalue":null},"record,scversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_scversion 'step index <str>'"],"shorthelp":"Record: software version","help":"Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.","example":["cli: -record_scversion 'dfm 0 1.0'","api: schema.set('record', 'scversion', '1.0', step='dfm', index=0)"]},"record,starttime":{"type":"str","scope":"job","pernode":"required","switch":["-record_starttime 'step index <str>'"],"shorthelp":"Record: start time","help":"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","example":["cli: -record_starttime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'starttime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,status":{"type":"<error,pending,queued,running,skipped,success,timeout>","scope":"job","pernode":"required","switch":["-record_status 'step index <str>'"],"shorthelp":"Record: node execution status","help":"Record tracking for the status of a node.","example":["cli: -record_status 'syn 0 success'","api: schema.set('record', 'status', 'success', step='syn', index='0')"]},"record,toolargs":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolargs 'step index <str>'"],"shorthelp":"Record: tool CLI arguments","help":"Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.","example":["cli: -record_toolargs 'dfm 0 \"-I include/ foo.v\"'","api: schema.set('record', 'toolargs', '\"-I include/ foo.v\"', step='dfm', index=0)"]},"record,toolexitcode":{"type":"int","scope":"job","pernode":"required","switch":["-record_toolexitcode 'step index <int>'"],"shorthelp":"Record: tool exit code","help":"Record tracking the tool exit code per step and index basis.","example":["cli: -record_toolexitcode 'dfm 0 0'","api: schema.set('record', 'toolexitcode', 0, step='dfm', index=0)"]},"record,toolpath":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolpath 'step index <str>'"],"shorthelp":"Record: tool path","help":"Record tracking the tool path per step and index basis. Full path to tool executable used to run this\ntask.","example":["cli: -record_toolpath 'dfm 0 /usr/bin/openroad'","api: schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)"]},"record,toolversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolversion 'step index <str>'"],"shorthelp":"Record: tool version","help":"Record tracking the tool version per step and index basis. The tool version captured corresponds to the 'tool'\nparameter within the 'tool' dictionary.","example":["cli: -record_toolversion 'dfm 0 1.0'","api: schema.set('record', 'toolversion', '1.0', step='dfm', index=0)"]},"record,userid":{"type":"str","scope":"job","pernode":"required","switch":["-record_userid 'step index <str>'"],"shorthelp":"Record: userid","help":"Record tracking the userid per step and index basis.","example":["cli: -record_userid 'dfm 0 wiley'","api: schema.set('record', 'userid', 'wiley', step='dfm', index=0)"]},"schemaversion":{"type":"str","scope":"global","require":true,"pernode":"never","shorthelp":"Schema version number","lock":true,"example":["api: project.get('schemaversion')"],"defvalue":"0.57.2"},"tool,default,task,default,dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"tool,default,task,default,dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"tool,default,task,default,env,default":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_env 'tool task env <str>'"],"shorthelp":"Task: environment variables","help":"Environment variables to set for individual tasks. Keys and values\nshould be set in accordance with the task's documentation. Most\ntasks do not require extra environment variables to function.","example":["cli: -tool_task_env 'openroad cts MYVAR 42'","api: task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')"],"defvalue":null},"tool,default,task,default,exe":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_exe 'tool <str>'"],"shorthelp":"Tool: executable name","help":"Tool executable name.","example":["cli: -tool_exe 'openroad openroad'","api: task.set('tool', 'openroad', 'exe', 'openroad')"],"defvalue":null},"tool,default,task,default,format":{"type":"<csv,json,tcl,yaml>","scope":"job","pernode":"optional","switch":["-tool_format 'tool <str>'"],"shorthelp":"Tool: file format","help":"File format for tool manifest handoff.","example":["cli: -tool_format 'yosys tcl'","api: task.set('tool', 'yosys', 'format', 'tcl')"],"defvalue":null},"tool,default,task,default,input":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_input 'tool task <file>'"],"shorthelp":"Task: input files","help":"List of data files to be copied from previous flowgraph steps 'output'\ndirectory. The list of steps to copy files from is defined by the\nlist defined by the dictionary key :keypath:`flowgraph,<flow>,<step>,<index>,input`.\nAll files must be available for flow to continue. If a file\nis missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_input 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,licenseserver,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_licenseserver 'name key <str>'"],"shorthelp":"Tool: license servers","help":"Defines a set of tool-specific environment variables used by the executable\nthat depend on license key servers to control access. For multiple servers,\nseparate servers with a colon. The named license variables are read at\nruntime (:meth:`.Task.run()`) and the environment variables are set.","example":["cli: -tool_licenseserver 'atask ACME_LICENSE 1700@server'","api: task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')"],"defvalue":[]},"tool,default,task,default,option":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_option 'tool task <str>'"],"shorthelp":"Task: executable options","help":"List of command line options for the task executable, specified on\na per task and per step basis. Options must not include spaces.\nFor multiple argument options, each option is a separate list element.","example":["cli: -tool_task_option 'openroad cts -no_init'","api: task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')"],"defvalue":[]},"tool,default,task,default,output":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_output 'tool task <file>'"],"shorthelp":"Task: output files","help":"List of data files written to the 'output' directory of the\ntool/task/step/index used in the keypath. All files must be available\nfor flow to continue. If a file is missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_output 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,path":{"type":"dir","scope":"job","pernode":"optional","switch":["-tool_path 'tool <dir>'"],"shorthelp":"Tool: executable path","help":"File system path to tool executable. The path is prepended to the\nsystem PATH environment variable for batch and interactive runs. The\npath parameter can be left blank if the :keypath:`tool,<tool>,task,<task>,exe` is\nalready in the environment search path.","hashalgo":"sha256","example":["cli: -tool_path 'openroad /usr/local/bin'","api: task.set('tool', 'openroad', 'path', '/usr/local/bin')"],"defvalue":null},"tool,default,task,default,postscript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_postscript 'tool task <file>'"],"shorthelp":"Task: post-step script","help":"Path to a user supplied script to execute after the main execution\nstage of the step but before the design is saved.\nExact entry point depends on the step and main script being\nexecuted. An example of a postscript entry point would be immediately\nafter global placement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_postscript 'yosys syn syn_post.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')"],"defvalue":[]},"tool,default,task,default,prescript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_prescript 'tool task <file>'"],"shorthelp":"Task: pre-step script","help":"Path to a user supplied script to execute after reading in the design\nbut before the main execution stage of the step. Exact entry point\ndepends on the step and main script being executed. An example\nof a prescript entry point would be immediately before global\nplacement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_prescript 'yosys syn syn_pre.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')"],"defvalue":[]},"tool,default,task,default,refdir":{"type":"[dir]","scope":"job","pernode":"optional","switch":["-tool_task_refdir 'tool task <dir>'"],"shorthelp":"Task: script directory","help":"Path to directories containing reference flow scripts, specified\non a per step and index basis.","hashalgo":"sha256","example":["cli: -tool_task_refdir 'yosys syn ./myref'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')"],"defvalue":[]},"tool,default,task,default,regex,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_regex 'tool task suffix <str>'"],"shorthelp":"Task: regex filter","help":"A list of piped together grep commands. Each entry represents a set\nof command line arguments for grep including the regex pattern to\nmatch. Starting with the first list entry, each grep output is piped\ninto the following grep command in the list. Supported grep options\ninclude ``-v`` and ``-e``. Patterns starting with \"-\" should be\ndirectly preceded by the ``-e`` option. The following example\nillustrates the concept.\n\nUNIX grep:\n\n.. code-block:: bash\n\n    $ grep WARNING place.log | grep -v \"bbox\" > place.warnings\n\nSiliconCompiler::\n\n    task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',\n             [\"WARNING\", \"-v bbox\"])\n\nThe \"errors\" and \"warnings\" suffixes are special cases. When set,\nthe number of matches found for these regexes will be added to the\nerrors and warnings metrics for the task, respectively. This will\nalso cause the logfile to be added to the :keypath:`tool, <tool>,\ntask, <task>, report` parameter for those metrics, if not already present.","example":["cli: -tool_task_regex 'openroad place errors \"'-v ERROR'\"'","api: task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')"],"defvalue":[]},"tool,default,task,default,report,default":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_report 'tool task metric <file>'"],"shorthelp":"Task: metric report files","help":"List of report files associated with a specific 'metric'. The file path\nspecified is relative to the run directory of the current task.","hashalgo":"sha256","example":["cli: -tool_task_report 'openroad place holdtns \"place 0 place.log\"'","api: task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')"]},"tool,default,task,default,require":{"type":"{str}","scope":"job","pernode":"optional","switch":["-tool_task_require 'tool task <str>'"],"shorthelp":"Task: parameter requirements","help":"List of keypaths to required task parameters. The list is used\nby :meth:`.Project.check_manifest()` to verify that all parameters have been set up\nbefore step execution begins.","example":["cli: -tool_task_require 'openroad cts design'","api: task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')"],"defvalue":[]},"tool,default,task,default,sbom,default":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_sbom 'tool version <file>'"],"shorthelp":"Tool: software BOM","help":"Paths to software bill of material (SBOM) document file of the tool\nspecified on a per version basis. The SBOM includes critical\npackage information about the tool including the list of included\ncomponents, licenses, and copyright. The SBOM file is generally\nprovided as in a a standardized open data format such as SPDX.","hashalgo":"sha256","example":["cli: -tool_sbom 'yosys 1.0.1 ys_sbom.json'","api: task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')"],"defvalue":[]},"tool,default,task,default,script":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_script 'tool task <file>'"],"shorthelp":"Task: entry script","help":"Path to the entry script called by the executable specified\non a per task and per step basis.","hashalgo":"sha256","example":["cli: -tool_task_script 'yosys syn syn.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')"],"defvalue":[]},"tool,default,task,default,stderr,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stderr_destination 'tool task <str>'"],"shorthelp":"Task: destination for stderr","help":"Defines where to direct the output generated over stderr.\nSupported options are:\nnone: the stream generated to STDERR is ignored\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>","example":["cli: -tool_task_stderr_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stderr,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stderr_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stderr","help":"Specifies the file extension for the content redirected from stderr.","example":["cli: -tool_task_stderr_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stdout_destination 'tool task <str>'"],"shorthelp":"Task: destination for stdout","help":"Defines where to direct the output generated over stdout.\nSupported options are:\nnone: the stream generated to STDOUT is ignored.\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>.","example":["cli: -tool_task_stdout_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stdout_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stdout","help":"Specifies the file extension for the content redirected from stdout.","example":["cli: -tool_task_stdout_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,threads":{"type":"int<1..>","scope":"job","pernode":"optional","switch":["-tool_task_threads 'tool task <int>'"],"shorthelp":"Task: thread parallelism","help":"Thread parallelism to use for execution specified on a per task and per\nstep basis. If not specified, SC queries the operating system and sets\nthe threads based on the maximum thread count supported by the\nhardware.","example":["cli: -tool_task_threads 'magic drc 64'","api: task.set('tool', 'magic', 'task', 'drc', 'threads', '64')"],"defvalue":null},"tool,default,task,default,vendor":{"type":"str","scope":"job","pernode":"never","switch":["-tool_vendor 'tool <str>'"],"shorthelp":"Tool: vendor","help":"Name of the tool vendor. Parameter can be used to set vendor\nspecific technology variables in the PDK and libraries. For\nopen source projects, the project name should be used in\nplace of vendor.","example":["cli: -tool_vendor 'yosys yosys'","api: task.set('tool', 'yosys', 'vendor', 'yosys')"],"defvalue":null},"tool,default,task,default,version":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_version 'tool <str>'"],"shorthelp":"Tool: version","help":"List of acceptable versions of the tool executable to be used. Each\nentry in this list must be a version specifier as described by Python\n`PEP-440 <https://peps.python.org/pep-0440/#version-specifiers>`_.\nDuring task execution, the tool is called with the 'vswitch' to\ncheck the runtime executable version. If the version of the system\nexecutable is not allowed by any of the specifiers in 'version',\nthen the job is halted pre-execution. For backwards compatibility,\nentries that do not conform to the standard will be interpreted as a\nversion with an '==' specifier. This check can be disabled by\nsetting :keypath:`option,novercheck` to True.","example":["cli: -tool_version 'openroad >=v2.0'","api: task.set('tool', 'openroad', 'version', '>=v2.0')"],"defvalue":[]},"tool,default,task,default,vswitch":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_vswitch 'tool <str>'"],"shorthelp":"Tool: executable version switch","help":"Command line switch to use with executable used to print out\nthe version number. Common switches include ``-v``, ``-version``,\n``--version``. Some tools may require extra flags to run in batch mode.","example":["cli: -tool_vswitch 'openroad -version'","api: task.set('tool', 'openroad', 'vswitch', '-version')"],"defvalue":[]},"tool,default,task,default,warningoff":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_warningoff 'tool task <str>'"],"shorthelp":"Task: warning filter","help":"A list of tool warnings for which printing should be suppressed.\nGenerally this is done on a per design basis after review has\ndetermined that warning can be safely ignored The code for turning\noff warnings can be found in the specific task reference manual.","example":["cli: -tool_task_warningoff 'verilator lint COMBDLY'","api: task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')"],"defvalue":[]}}},"FPGA":{"module":"siliconcompiler.fpga","class":"siliconcompiler.fpga.FPGA","description":"A class for managing FPGA projects, inheriting from the base Project class.","parameters":{"arg,index":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_index <str>"],"shorthelp":"ARG: index argument","example":["cli: -arg_index 0","api: project.set('arg', 'index', '0')"],"defvalue":null},"arg,step":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_step <str>"],"shorthelp":"ARG: step argument","example":["cli: -arg_step 'route'","api: project.set('arg', 'step', 'route')"],"defvalue":null},"checklist,default,default,criteria":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_criteria 'standard item <str>'"],"shorthelp":"Checklist: item criteria","help":"Simple list of signoff criteria for checklist item which\nmust all be met for signoff. Each signoff criteria consists of\na metric, a relational operator, and a value in the form\n'metric op value'.","example":["cli: -checklist_criteria 'ISO D000 errors==0'","api: check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')"],"defvalue":[]},"checklist,default,default,dataformat":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_dataformat 'standard item <str>'"],"shorthelp":"Checklist: item data format","help":"Free text description of the type of data files acceptable as\nchecklist signoff validation.","example":["cli: -checklist_dataformat 'ISO D000 README'","api: check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')"],"defvalue":null},"checklist,default,default,description":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_description 'standard item <str>'"],"shorthelp":"Checklist: item description","help":"A short one line description of the checklist item.","example":["cli: -checklist_description 'ISO D000 A-DESCRIPTION'","api: check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')"],"defvalue":null},"checklist,default,default,ok":{"type":"bool","scope":"global","pernode":"never","switch":["-checklist_ok 'standard item <bool>'"],"shorthelp":"Checklist: item ok","help":"Boolean check mark for the checklist item. A value of\nTrue indicates a human has inspected the all item dictionary\nparameters and verified they check out.","example":["cli: -checklist_ok 'ISO D000 true'","api: check.set('checklist', 'ISO', 'D000', 'ok', True)"],"defvalue":false},"checklist,default,default,rationale":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_rationale 'standard item <str>'"],"shorthelp":"Checklist: item rationale","help":"Rationale for the checklist item. Rationale should be a\nunique alphanumeric code used by the standard or a short one line\nor single word description.","example":["cli: -checklist_rationale 'ISO D000 reliability'","api: check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')"],"defvalue":[]},"checklist,default,default,report":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_report 'standard item <file>'"],"shorthelp":"Checklist: item report","help":"Filepath to report(s) of specified type documenting the successful\nvalidation of the checklist item.","hashalgo":"sha256","example":["cli: -checklist_report 'ISO D000 my.rpt'","api: check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')"],"defvalue":[]},"checklist,default,default,requirement":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_requirement 'standard item <str>'"],"shorthelp":"Checklist: item requirement","help":"A complete requirement description of the checklist item\nentered as a multi-line string.","example":["cli: -checklist_requirement 'ISO D000 DOCSTRING'","api: check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')"],"defvalue":null},"checklist,default,default,task":{"type":"[(str,str,str)]","scope":"global","pernode":"never","switch":["-checklist_task 'standard item <(str,str,str)>'"],"shorthelp":"Checklist: item task","help":"Flowgraph job and task used to verify the checklist item.\nThe parameter should be left empty for manual and for tool\nflows that bypass the SC infrastructure.","example":["cli: -checklist_task 'ISO D000 (job0,place,0)'","api: check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))"],"defvalue":[]},"checklist,default,default,waiver,default":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_waiver 'standard item metric <file>'"],"shorthelp":"Checklist: item metric waivers","help":"Filepath to report(s) documenting waivers for the checklist\nitem specified on a per metric basis.","hashalgo":"sha256","example":["cli: -checklist_waiver 'ISO D000 bold my.txt'","api: check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')"],"defvalue":[]},"constraint,timing,mode,default,sdcfileset":{"type":"[(str,str)]","scope":"global","pernode":"optional","switch":["-constraint_timing_file 'scenario <file>'"],"shorthelp":"Constraint: SDC files","help":"List of timing constraint sets files to use for the scenario. The\n                values are combined with any constraints specified by the design\n                'constraint' parameter. If no constraints are found, a default\n                constraint file is used based on the clock definitions.","example":["api: mode.set('constraint', 'timing', 'worst', 'file', 'hello.sdc')"],"defvalue":[]},"constraint,timing,scenario,default,mode":{"type":"str","scope":"global","pernode":"optional","switch":["-constraint_timing_mode 'scenario <str>'"],"shorthelp":"Constraint: operating mode","help":"Operating mode for the scenario. Operating mode strings\n                can be values such as test, functional, standby.","example":["api: fpga.set('constraint', 'timing', 'worst', 'mode', 'test')"],"defvalue":null},"flowgraph,default,default,default,args":{"type":"[str]","scope":"global","pernode":"never","switch":["-flowgraph_args 'flow step index <str>'"],"shorthelp":"Flowgraph: Node-specific arguments","help":"User-specified arguments passed to the task's `setup()` method.\nThis allows for customizing a specific node's behavior without\naffecting other nodes running the same task.","example":["cli: -flowgraph_args 'asicflow cts 0 buffer_cells'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')"],"defvalue":[]},"flowgraph,default,default,default,goal,default":{"type":"float","scope":"global","pernode":"never","switch":["-flowgraph_goal 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric goals","help":"Goals specified on a per-node and per-metric basis used to\ndetermine whether a task run is considered successful. A task run\nmay be considered failing if the absolute value of any of its\nreported metrics is larger than the goal for that metric (if set).\nThis is often used for metrics like 'errors' or 'setupwns'\nwhere the goal is 0.","example":["cli: -flowgraph_goal 'asicflow cts 0 errors 0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)"],"defvalue":null},"flowgraph,default,default,default,input":{"type":"[(str,str)]","scope":"global","pernode":"never","switch":["-flowgraph_input 'flow step index <(str,str)>'"],"shorthelp":"Flowgraph: Node inputs","help":"A list of inputs for this flowgraph node, where each input is\nspecified as a (step, index) tuple. This defines the dependencies\nof this node.","example":["cli: -flowgraph_input 'asicflow cts 0 (place,0)'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))"],"defvalue":[]},"flowgraph,default,default,default,task":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_task 'flow step index <str>'"],"shorthelp":"Flowgraph: Task selection","help":"Name of the task (e.g., 'place', 'syn', 'join') associated\nwith the node's tool.","example":["cli: -flowgraph_task 'asicflow myplace 0 place'","api: flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')"],"defvalue":null},"flowgraph,default,default,default,taskmodule":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_taskmodule 'flow step index <str>'"],"shorthelp":"Flowgraph: Task module","help":"Full Python module path and class name of the task, formatted as\n'<full.module.path>/<ClassName>'. This is used to import and\ninstantiate the correct Task class for setup and execution.","example":["cli: -flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')"],"defvalue":null},"flowgraph,default,default,default,tool":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_tool 'flow step index <str>'"],"shorthelp":"Flowgraph: Tool selection","help":"Name of the tool (e.g., 'openroad', 'yosys', 'builtin') that\nthis node will execute.","example":["cli: -flowgraph_tool 'asicflow place 0 openroad'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')"],"defvalue":null},"flowgraph,default,default,default,weight,default":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-flowgraph_weight 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric weights","help":"Weights specified on a per-node and per-metric basis, used by\noptimization tasks (like 'minimum') to calculate a \"goodness\"\nscore for a run. The score is typically a weighted sum of\nmetric results.","example":["cli: -flowgraph_weight 'asicflow cts 0 area_cells 1.0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)"],"defvalue":0.0},"fpga,device":{"type":"str","scope":"global","pernode":"never","defvalue":null},"metric,averagepower":{"type":"float","scope":"job","pernode":"required","switch":["-metric_averagepower 'step index <float>'"],"shorthelp":"Metric: averagepower","help":"Metric tracking the average workload power of the design specified on a per step\nand index basis. Power metric depend heavily on the method\nbeing used for extraction: dynamic vs static, workload\nspecification (vcd vs saif), power models, process/voltage/temperature.\nThe power averagepower metric tries to capture the data that would\nusually be reflected inside a datasheet given the appropriate\nfootnote conditions.","unit":"mw","example":["cli: -metric_averagepower 'place 0 0.01'","api: fpga.set('metric', 'averagepower', 0.01, step='place', index=0)"]},"metric,brams":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_brams 'step index <int>'"],"shorthelp":"Metric: FPGA BRAM tiles used","help":"Metric tracking the total FPGA BRAM tiles used used by the design as reported\nby the implementation tool. There is no standardized definition\nfor this metric across vendors, so metric comparisons can\ngenerally only be done between runs on identical tools and\ndevice families.","example":["cli: -metric_brams 'place 0 100'","api: fpga.set('metric', 'brams', 100, step='place', index=0)"]},"metric,cells":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_cells 'step index <int>'"],"shorthelp":"Metric: cells","help":"Metric tracking the total number of cell instances in the design\non a per step and index basis.","example":["cli: -metric_cells 'place 0 100'","api: fpga.set('metric', 'cells', 50, step='place', index=0)"]},"metric,dsps":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_dsps 'step index <int>'"],"shorthelp":"Metric: FPGA DSP slices used","help":"Metric tracking the total FPGA DSP slices used used by the design as reported\nby the implementation tool. There is no standardized definition\nfor this metric across vendors, so metric comparisons can\ngenerally only be done between runs on identical tools and\ndevice families.","example":["cli: -metric_dsps 'place 0 100'","api: fpga.set('metric', 'dsps', 100, step='place', index=0)"]},"metric,errors":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_errors 'step index <int>'"],"shorthelp":"Metric: total errors","help":"Metric tracking the total number of errors on a\nper step and index basis.","example":["cli: -metric_errors 'dfm 0 0'","api: project.set('metric', 'errors', 0, step='dfm', index=0)"]},"metric,exetime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_exetime 'step index <float>'"],"shorthelp":"Metric: exetime","help":"Metric tracking time spent by the EDA executable\n:keypath:`tool,<tool>,task,<task>,exe` on a\nper step and index basis. It does not include the SiliconCompiler\nruntime overhead or time waiting for I/O operations and\ninter-processor communication to complete.","unit":"s","example":["cli: -metric_exetime 'dfm 0 10.0'","api: project.set('metric', 'exetime', 10.0, step='dfm', index=0)"]},"metric,fmax":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_fmax 'step index <float>'"],"shorthelp":"Metric: fmax","help":"Metric tracking the maximum clock frequency on a per step and index basis.","unit":"Hz","example":["cli: -metric_fmax 'place 0 100e6'","api: fpga.set('metric', 'fmax', 100e6, step='place', index=0)"]},"metric,holdpaths":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_holdpaths 'step index <int>'"],"shorthelp":"Metric: holdpaths","help":"Metric tracking the total number of timing paths violating hold\nconstraints.","example":["cli: -metric_holdpaths 'place 0 10'","api: fpga.set('metric', 'holdpaths', 10, step='place', index=0)"]},"metric,holdskew":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdskew 'step index <float>'"],"shorthelp":"Metric: holdskew","help":"Metric tracking the hold clock skew on a per step and index basis.","unit":"ns","example":["cli: -metric_holdskew 'place 0 0.01'","api: fpga.set('metric', 'holdskew', 0.01, step='place', index=0)"]},"metric,holdslack":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdslack 'step index <float>'"],"shorthelp":"Metric: holdslack","help":"Metric tracking the worst hold slack (positive or negative) on a per step and index basis.","unit":"ns","example":["cli: -metric_holdslack 'place 0 0.01'","api: fpga.set('metric', 'holdslack', 0.01, step='place', index=0)"]},"metric,holdtns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdtns 'step index <float>'"],"shorthelp":"Metric: holdtns","help":"Metric tracking the total negative hold slack (TNS) on a per step and index basis.","unit":"ns","example":["cli: -metric_holdtns 'place 0 0.01'","api: fpga.set('metric', 'holdtns', 0.01, step='place', index=0)"]},"metric,holdwns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_holdwns 'step index <float>'"],"shorthelp":"Metric: holdwns","help":"Metric tracking the worst negative hold slack (positive values truncated to zero) on a per step and index basis.","unit":"ns","example":["cli: -metric_holdwns 'place 0 0.01'","api: fpga.set('metric', 'holdwns', 0.01, step='place', index=0)"]},"metric,leakagepower":{"type":"float","scope":"job","pernode":"required","switch":["-metric_leakagepower 'step index <float>'"],"shorthelp":"Metric: leakagepower","help":"Metric tracking the leakage power with rails active but without any dynamic switching activity of the design specified on a per step\nand index basis. Power metric depend heavily on the method\nbeing used for extraction: dynamic vs static, workload\nspecification (vcd vs saif), power models, process/voltage/temperature.\nThe power leakagepower metric tries to capture the data that would\nusually be reflected inside a datasheet given the appropriate\nfootnote conditions.","unit":"mw","example":["cli: -metric_leakagepower 'place 0 0.01'","api: fpga.set('metric', 'leakagepower', 0.01, step='place', index=0)"]},"metric,logicdepth":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_logicdepth 'step index <int>'"],"shorthelp":"Metric: logic depth","help":"Metric tracking the logic depth of the design. This is determined\nby the number of logic gates between the start of the critital timing\npath to the end of the path.","example":["cli: -metric_logicdepth 'place 0 8'","api: fpga.set('metric', 'logicdepth', 8, step='place', index=0)"]},"metric,luts":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_luts 'step index <int>'"],"shorthelp":"Metric: FPGA LUTs used","help":"Metric tracking the total FPGA LUTs used used by the design as reported\nby the implementation tool. There is no standardized definition\nfor this metric across vendors, so metric comparisons can\ngenerally only be done between runs on identical tools and\ndevice families.","example":["cli: -metric_luts 'place 0 100'","api: fpga.set('metric', 'luts', 100, step='place', index=0)"]},"metric,macros":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_macros 'step index <int>'"],"shorthelp":"Metric: macros","help":"Metric tracking the total number of macros in the design\non a per step and index basis.","example":["cli: -metric_macros 'place 0 100'","api: fpga.set('metric', 'macros', 50, step='place', index=0)"]},"metric,memory":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_memory 'step index <float>'"],"shorthelp":"Metric: memory","help":"Metric tracking total peak program memory footprint on a per\nstep and index basis.","unit":"B","example":["cli: -metric_memory 'dfm 0 10e9'","api: project.set('metric', 'memory', 10e9, step='dfm', index=0)"]},"metric,nets":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_nets 'step index <int>'"],"shorthelp":"Metric: nets","help":"Metric tracking the total number of nets in the design\non a per step and index basis.","example":["cli: -metric_nets 'place 0 100'","api: fpga.set('metric', 'nets', 50, step='place', index=0)"]},"metric,overflow":{"type":"int","scope":"job","pernode":"required","switch":["-metric_overflow 'step index <int>'"],"shorthelp":"Metric: overflow","help":"Metric tracking the total number of overflow tracks for the routing\non per step and index basis. Any non-zero number suggests an over\ncongested design. To analyze where the congestion is occurring\ninspect the router log files for detailed per metal overflow\nreporting and open up the design to find routing hotspots.","example":["cli: -metric_overflow 'place 0 0'","api: fpga.set('metric', 'overflow', 50, step='place', index=0)"]},"metric,peakpower":{"type":"float","scope":"job","pernode":"required","switch":["-metric_peakpower 'step index <float>'"],"shorthelp":"Metric: peakpower","help":"Metric tracking the worst case total peak power of the design specified on a per step\nand index basis. Power metric depend heavily on the method\nbeing used for extraction: dynamic vs static, workload\nspecification (vcd vs saif), power models, process/voltage/temperature.\nThe power peakpower metric tries to capture the data that would\nusually be reflected inside a datasheet given the appropriate\nfootnote conditions.","unit":"mw","example":["cli: -metric_peakpower 'place 0 0.01'","api: fpga.set('metric', 'peakpower', 0.01, step='place', index=0)"]},"metric,pins":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_pins 'step index <int>'"],"shorthelp":"Metric: pins","help":"Metric tracking the total number of pins in the design\non a per step and index basis.","example":["cli: -metric_pins 'place 0 100'","api: fpga.set('metric', 'pins', 50, step='place', index=0)"]},"metric,registers":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_registers 'step index <int>'"],"shorthelp":"Metric: registers","help":"Metric tracking the total number of register instances in the design\non a per step and index basis.","example":["cli: -metric_registers 'place 0 100'","api: fpga.set('metric', 'registers', 50, step='place', index=0)"]},"metric,setuppaths":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_setuppaths 'step index <int>'"],"shorthelp":"Metric: setuppaths","help":"Metric tracking the total number of timing paths violating setup\nconstraints.","example":["cli: -metric_setuppaths 'place 0 10'","api: fpga.set('metric', 'setuppaths', 10, step='place', index=0)"]},"metric,setupskew":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setupskew 'step index <float>'"],"shorthelp":"Metric: setupskew","help":"Metric tracking the setup clock skew on a per step and index basis.","unit":"ns","example":["cli: -metric_setupskew 'place 0 0.01'","api: fpga.set('metric', 'setupskew', 0.01, step='place', index=0)"]},"metric,setupslack":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setupslack 'step index <float>'"],"shorthelp":"Metric: setupslack","help":"Metric tracking the worst setup slack (positive or negative) on a per step and index basis.","unit":"ns","example":["cli: -metric_setupslack 'place 0 0.01'","api: fpga.set('metric', 'setupslack', 0.01, step='place', index=0)"]},"metric,setuptns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setuptns 'step index <float>'"],"shorthelp":"Metric: setuptns","help":"Metric tracking the total negative setup slack (TNS) on a per step and index basis.","unit":"ns","example":["cli: -metric_setuptns 'place 0 0.01'","api: fpga.set('metric', 'setuptns', 0.01, step='place', index=0)"]},"metric,setupwns":{"type":"float","scope":"job","pernode":"required","switch":["-metric_setupwns 'step index <float>'"],"shorthelp":"Metric: setupwns","help":"Metric tracking the worst negative setup slack (positive values truncated to zero) on a per step and index basis.","unit":"ns","example":["cli: -metric_setupwns 'place 0 0.01'","api: fpga.set('metric', 'setupwns', 0.01, step='place', index=0)"]},"metric,tasktime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_tasktime 'step index <float>'"],"shorthelp":"Metric: tasktime","help":"Metric tracking the total amount of time spent on a task from\nbeginning to end, including data transfers and pre/post\nprocessing.","unit":"s","example":["cli: -metric_tasktime 'dfm 0 10.0'","api: project.set('metric', 'tasktime', 10.0, step='dfm', index=0)"]},"metric,totaltime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_totaltime 'step index <float>'"],"shorthelp":"Metric: totaltime","help":"Metric tracking the total amount of time spent from the beginning\nof the run up to and including the current step and index.","unit":"s","example":["cli: -metric_totaltime 'dfm 0 10.0'","api: project.set('metric', 'totaltime', 10.0, step='dfm', index=0)"]},"metric,unconstrained":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_unconstrained 'step index <int>'"],"shorthelp":"Metric: total unconstrained","help":"Metric tracking the total number of unconstrained timing paths on a\nper step and index basis.","example":["cli: -metric_unconstrained 'dfm 0 0'","api: fpga.set('metric', 'unconstrained', 0, step='dfm', index=0)"]},"metric,utilization":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_utilization 'step index <float>'"],"shorthelp":"Metric: area utilization","help":"Metric tracking the area utilization of the design calculated as\n100 * (cellarea/totalarea).","unit":"%","example":["cli: -metric_utilization 'place 0 50.00'","api: fpga.set('metric', 'utilization', 50.00, step='place', index=0)"]},"metric,warnings":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_warnings 'step index <int>'"],"shorthelp":"Metric: total warnings","help":"Metric tracking the total number of warnings on a\nper step and index basis.","example":["cli: -metric_warnings 'dfm 0 0'","api: project.set('metric', 'warnings', 0, step='dfm', index=0)"]},"metric,wirelength":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_wirelength 'step index <float>'"],"shorthelp":"Metric: wirelength","help":"Metric tracking the total wirelength of the design on a per step\nand index basis.","example":["cli: -metric_wirelength 'place 0 100.0'","api: fpga.set('metric', 'wirelength', 50.0, step='place', index=0)"]},"option,alias":{"type":"[(str,str,str,str)]","scope":"global","pernode":"never","shorthelp":"Option: Fileset alias mapping","help":"List of filesets to alias during a run. When an alias is specific\nit will be used instead of the source fileset. It is useful when you\nwant to substitute a fileset from one library with a fileset from another,\nwithout changing the original design's code.\nFor example, you might use it to swap in a different version of an IP\nblock or a specific test environment.","example":["api: option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))"],"defvalue":[]},"option,autoissue":{"type":"bool","scope":"global","pernode":"never","switch":["-autoissue <bool>"],"shorthelp":"Option: Enables automatic generation of testcases","help":"Enables automatic generation of testcases\nif the specific node fails","example":["api: option.set('autoissue', True)"],"defvalue":false},"option,breakpoint":{"type":"bool","scope":"job","pernode":"optional","switch":["-breakpoint <bool>"],"shorthelp":"Option: breakpoint list","help":"\n                Set a breakpoint on specific steps. If the step is a TCL\n                based tool, then the breakpoints stops the flow inside the\n                EDA tool. If the step is a command line tool, then the flow\n                drops into a Python interpreter.","example":["cli: -breakpoint true","api: option.set('breakpoint', True)"],"defvalue":false},"option,builddir":{"type":"dir","scope":"global","pernode":"never","switch":["-builddir <dir>"],"shorthelp":"Option: build directory","help":"\n                The default build directory is in the local './build' where SC was\n                executed. This can be used to set an alternate\n                compilation directory path.","hashalgo":"sha256","example":["cli: -builddir ./build_the_future","api: option.set('builddir', './build_the_future')"],"defvalue":"build"},"option,cachedir":{"type":"dir","scope":"global","pernode":"never","switch":["-cachedir <dir>"],"shorthelp":"Option: user cache directory","help":"\n                Filepath to the cache SiliconCompiler keeps between runs. It holds\n                one subdirectory per kind of cached data: \"dataroot\" for downloaded\n                package data sources, and \"tools\" for the caches tools keep for\n                themselves, such as the compiler cache a Verilator build writes to.\n                Cached data goes in those subdirectories, not in the directory\n                itself. If the cache parameter is empty, the \".sc/cache\" directory\n                in the user's home directory will be used.","hashalgo":"sha256","example":["cli: -cachedir /home/user/.sc/cache","api: option.set('cachedir', '/home/user/.sc/cache')"],"defvalue":null},"option,clean":{"type":"bool","scope":"global","pernode":"never","switch":["-clean <bool>"],"shorthelp":"Option: cleanup previous job","help":"\n                Run a job from the start and do not use any of the previous job.\n                If :keypath:`option, jobincr` is True, the old job is preserved and\n                a new job number is assigned.\n                ","example":["cli: -clean","api: option.set('clean', True)"],"defvalue":false},"option,continue":{"type":"bool","scope":"global","pernode":"optional","switch":["-continue <bool>"],"shorthelp":"Option: continue-on-error","help":"\n                Attempt to continue even when errors are encountered in the SC\n                implementation. The default behavior is to quit executing the flow\n                if a task ends and the errors metric is greater than 0.\n\n                Set this on the node that may fail, not on the node that consumes\n                it: the option excuses a failure for the benefit of everything\n                downstream. Nodes that take input from an excused node are still\n                launched and run on whatever inputs did arrive -- a failed branch\n                is dropped, not substituted, so a merge assembles the branches\n                that survived. A node whose every input was excused still fails,\n                having nothing left to run on, and the excuse does not propagate:\n                a node that fails as a consequence of an excused failure upstream\n                needs an excuse of its own.\n\n                Note that the failing task itself always stops if the tool returns\n                a nonzero status code; what this option relaxes is whether the rest\n                of the flow proceeds without it. A run that finishes over a failed\n                branch still reports that branch as an error.\n                ","example":["cli: -continue","api: option.set('continue', True)"],"defvalue":false},"option,credentials":{"type":"file","scope":"global","pernode":"never","switch":["-credentials <file>"],"shorthelp":"Option: user credentials file","help":"\n                Filepath to credentials used for remote processing. If the\n                credentials parameter is empty, the remote processing client program\n                tries to access the \".sc/credentials\" file in the user's home\n                directory. The file supports the following fields:\n\n                address=<server address>\n                port=<server port> (optional)\n                username=<user id> (optional)\n                password=<password / key used for authentication> (optional)","hashalgo":"sha256","example":["cli: -credentials /home/user/.sc/credentials","api: option.set('credentials', '/home/user/.sc/credentials')"],"defvalue":null},"option,design":{"type":"str","scope":"global","pernode":"never","switch":["-design <str>"],"shorthelp":"Option: Design library name","help":"Name of the top level library","example":["cli: -design hello_world","api: option.set('design', 'hello_world')"],"defvalue":null},"option,env,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Option: environment variables","help":"Certain tools and reference flows require global environment\nvariables to be set. These variables can be managed externally or\nspecified through the env variable.","example":["api: option.set('env', 'PDK_HOME', '/disk/mypdk')"],"defvalue":null},"option,fileset":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Option: Selected design filesets","help":"List of filesets to use from the selected design library","example":["api: option.set('fileset', 'rtl')"],"defvalue":[]},"option,flow":{"type":"str","scope":"global","pernode":"never","switch":["-flow <str>"],"shorthelp":"Option: flow target","help":"\n                Sets the flow for the current run. The flow name\n                must match up with a 'flow' in the flowgraph","example":["cli: -flow asicflow","api: option.set('flow', 'asicflow')"],"defvalue":null},"option,from":{"type":"[str]","scope":"job","pernode":"never","switch":["-from <str>"],"shorthelp":"Option: starting step","help":"\n                Inclusive list of steps to start execution from. The default is to start\n                at all entry steps in the flow graph.\n\n                Steps ahead of the starting steps are not rerun: the run uses their\n                outputs from the existing build directory, even when they are out of\n                date. If a step that feeds a starting step has no usable outputs, the\n                run fails. Any other step left out of the run whose outputs are missing\n                or failed is added back and rerun, such as a parallel branch that merges\n                with the run further downstream.","example":["cli: -from 'import'","api: option.set('from', 'import')"],"defvalue":[]},"option,hash":{"type":"bool","scope":"global","pernode":"never","switch":["-hash <bool>"],"shorthelp":"Option: file hashing","help":"\n                Enables hashing of all inputs and outputs during\n                compilation. The hash values are stored in the hashvalue\n                field of the individual parameters.","example":["cli: -hash","api: option.set('hash', True)"],"defvalue":false},"option,jobincr":{"type":"bool","scope":"global","pernode":"never","switch":["-jobincr <bool>"],"shorthelp":"Option: autoincrement jobname","help":"\n                Forces an auto-update of the jobname parameter if a directory\n                matching the jobname is found in the build directory. If the\n                jobname does not include a trailing digit, then the number\n                '1' is added to the jobname before updating the jobname\n                parameter.","example":["cli: -jobincr","api: option.set('jobincr', True)"],"defvalue":false},"option,jobname":{"type":"str","scope":"global","pernode":"never","switch":["-jobname <str>"],"shorthelp":"Option: job name","help":"\n                Jobname during invocation of :meth:`.Project.run()`. The jobname combined with a\n                defined director structure (<dir>/<design>/<jobname>/<step>/<index>)\n                enables multiple levels of transparent job, step, and index\n                introspection.","example":["cli: -jobname may1","api: option.set('jobname', 'may1')"],"defvalue":"job0"},"option,nice":{"type":"int<-20..19>","scope":"global","pernode":"optional","switch":["-nice <int>"],"shorthelp":"Option: tool scheduling priority","help":"\n                Sets the type of execution priority of each individual flowgraph steps.\n                If the parameter is undefined, nice will not be used. For more information see\n                `Unix 'nice' <https://en.wikipedia.org/wiki/Nice_(Unix)>`_.","example":["cli: -nice 5","api: option.set('nice', 5)"],"defvalue":null},"option,nodashboard":{"type":"bool","scope":"global","pernode":"never","switch":["-nodashboard <bool>"],"shorthelp":"Option: Disables the dashboard","help":"Disables the dashboard during execution","example":["api: option.set('nodashboard', True)"],"defvalue":false},"option,nodisplay":{"type":"bool","scope":"global","pernode":"never","switch":["-nodisplay <bool>"],"shorthelp":"Option: headless execution","help":"\n                This flag prevents SiliconCompiler from opening GUI windows.","example":["cli: -nodisplay","api: option.set('nodisplay', True)"],"defvalue":false},"option,novercheck":{"type":"bool","scope":"global","pernode":"optional","switch":["-novercheck <bool>"],"shorthelp":"Option: disable version checking","help":"\n                Disables strict version checking on all invoked tools if True.\n                The list of supported version numbers is defined in the\n                :keypath:`tool,<tool>,task,<task>,version`.","example":["cli: -novercheck","api: option.set('novercheck', True)"],"defvalue":false},"option,optmode":{"type":"int<0..>","scope":"global","pernode":"optional","switch":["-O<str>","-optmode <str>"],"shorthelp":"Option: optimization mode","help":"\n                The compiler has modes to prioritize run time and ppa. Modes\n                include.\n\n                (O0) = Exploration mode for debugging setup\n                (O1) = Higher effort and better PPA than O0\n                (O2) = Higher effort and better PPA than O1\n                (O3) = Signoff quality. Better PPA and higher run times than O2\n                (O4-O98) = Reserved (compiler/target dependent)\n                (O99) = Experimental highest possible effort, may be unstable\n                ","example":["cli: -O3","cli: -optmode 3","api: option.set('optmode', 'O3')"],"defvalue":0},"option,prune":{"type":"[(str,str)]","scope":"job","pernode":"never","switch":["-prune 'node <(str,str)>'"],"shorthelp":"Option: flowgraph pruning","help":"\n                List of starting nodes for branches to be pruned.\n                The default is to not prune any nodes/branches.","example":["cli: -prune (syn,0)","api: option.set('prune', ('syn', '0'))"],"defvalue":[]},"option,quiet":{"type":"bool","scope":"global","pernode":"optional","switch":["-quiet <bool>"],"shorthelp":"Option: quiet execution","help":"\n                The -quiet option forces all steps to print to a log file.\n                This can be useful with Modern EDA tools which print\n                significant content to the screen.","example":["cli: -quiet","api: option.set('quiet', True)"],"defvalue":false},"option,remote":{"type":"bool","scope":"global","pernode":"never","switch":["-remote <bool>"],"shorthelp":"Option: enable remote processing","help":"\n                Sends job for remote processing if set to true. The remote\n                option requires a credentials file to be placed in the home\n                directory. Fore more information, see the credentials\n                parameter.","example":["cli: -remote","api: option.set('remote', True)"],"defvalue":false},"option,scheduler,cores":{"type":"int<1..>","scope":"global","pernode":"optional","switch":["-cores <int>"],"shorthelp":"Option: Scheduler core constraint","help":"\n                Specifies the number CPU cores required to run the job.\n                For the slurm scheduler, this translates to the '-c'\n                switch. For more information, see the job scheduler\n                documentation","example":["cli: -cores 48","api: option.set('cores', 48)"],"defvalue":null},"option,scheduler,defer":{"type":"str","scope":"global","pernode":"optional","switch":["-defer <str>"],"shorthelp":"Option: scheduler start time","help":"\n                Defer initiation of job until the specified time. The parameter\n                is pass through string for remote job scheduler such as slurm.\n                For more information about the exact format specification, see\n                the job scheduler documentation. Examples of valid slurm specific\n                values include: now+1hour, 16:00, 010-01-20T12:34:00. For more\n                information, see the job scheduler documentation.","example":["cli: -defer 16:00","api: option.set('defer', '16:00')"],"defvalue":null},"option,scheduler,maxnodes":{"type":"int<1..>","scope":"global","pernode":"never","switch":["-maxnodes <int>"],"shorthelp":"Option: maximum concurrent nodes","help":"\n                Maximum number of concurrent nodes to run in a job. If not set this will default\n                to the number of cpu cores available.","example":["cli: -maxnodes 4","api: option.set('maxnodes', 4)"],"defvalue":null},"option,scheduler,maxthreads":{"type":"int<1..>","scope":"global","pernode":"never","shorthelp":"Option: maximum number of threads to assign a task","help":"\n                Maximum number of threads for each task in a job. If not set this will default\n                to the number of cpu cores available.","example":["api: option.set('maxthreads', 4)"],"defvalue":null},"option,scheduler,memory":{"type":"int","scope":"global","pernode":"optional","switch":["-memory <int>"],"shorthelp":"Option: scheduler memory constraint","help":"\n                Specifies the amount of memory required to run the job,\n                specified in MB. For the slurm scheduler, this translates to\n                the '--mem' switch. For more information, see the job\n                scheduler documentation","unit":"MB","example":["cli: -memory 8000","api: option.set('memory', 8000)"],"defvalue":null},"option,scheduler,msgcontact":{"type":"{str}","scope":"global","pernode":"optional","switch":["-msgcontact <str>"],"shorthelp":"Option: message contact","help":"\n                List of email addresses to message on a :keypath:`option,scheduler,msgevent`.\n                Support for email messages relies on job scheduler daemon support.\n                For more information, see the job scheduler documentation. ","example":["cli: -msgcontact 'wile.e.coyote@acme.com'","api: option.set('msgcontact', 'wiley@acme.com')"],"defvalue":[]},"option,scheduler,msgevent":{"type":"{<all,begin,end,fail,summary,timeout>}","scope":"global","pernode":"optional","switch":["-msgevent <str>"],"shorthelp":"Option: message event trigger","help":"\n                Directs job scheduler to send a message to the user in\n                :keypath:`option,scheduler,msgcontact` when certain events occur\n                during a task.\n\n                * fail: send an email on failures\n                * timeout: send an email on timeouts\n                * begin: send an email at the start of a node task\n                * end: send an email at the end of a node task\n                * summary: send a summary email at the end of the run\n                * all: send an email on any event\n                ","example":["cli: -msgevent all","api: option.set('msgevent', 'all')"],"defvalue":[]},"option,scheduler,name":{"type":"<docker,lsf,sge,slurm>","scope":"global","pernode":"optional","switch":["-scheduler <str>"],"shorthelp":"Option: scheduler platform","help":"\n                Sets the type of job scheduler to be used for each individual\n                flowgraph steps. If the parameter is undefined, the steps are executed\n                on the same machine that the SC was launched on. If 'slurm' is used,\n                the host running the 'sc' command must be running a 'slurmctld' daemon\n                managing a Slurm cluster. Additionally, the build directory\n                (:keypath:`option,builddir`) must be located in shared storage which\n                can be accessed by all hosts in the cluster.","example":["cli: -scheduler slurm","api: option.set('name', 'slurm')"],"defvalue":null},"option,scheduler,options":{"type":"[str]","scope":"global","pernode":"optional","switch":["-scheduler_options <str>"],"shorthelp":"Option: scheduler arguments","help":"\n                Advanced/export options passed through unchanged to the job\n                scheduler as-is. (The user specified options must be compatible\n                with the rest of the scheduler parameters entered.(memory etc).\n                For more information, see the job scheduler documentation.","example":["cli: -scheduler_options \"--pty\"","api: option.set('options', \"--pty\")"],"defvalue":[]},"option,scheduler,queue":{"type":"str","scope":"global","pernode":"optional","switch":["-queue <str>"],"shorthelp":"Option: scheduler queue","help":"\n                Send the job to the specified queue. With slurm, this\n                translates to 'partition'. The queue name must match\n                the name of an existing job scheduler queue. For more information,\n                see the job scheduler documentation","example":["cli: -queue nightrun","api: option.set('queue', 'nightrun')"],"defvalue":null},"option,timeout":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-timeout <float>"],"shorthelp":"Option: timeout value","help":"\n                Timeout value in seconds. The timeout value is compared\n                against the wall time tracked by the SC runtime to determine\n                if an operation should continue.","unit":"s","example":["cli: -timeout 3600","api: option.set('timeout', 3600)"],"defvalue":null},"option,to":{"type":"[str]","scope":"job","pernode":"never","switch":["-to <str>"],"shorthelp":"Option: ending step","help":"\n                Inclusive list of steps to end execution with. The default is to go\n                to all exit steps in the flow graph.","example":["cli: -to 'syn'","api: option.set('to', 'syn')"],"defvalue":[]},"option,track":{"type":"bool","scope":"global","pernode":"optional","switch":["-track <bool>"],"shorthelp":"Option: enable provenance tracking","help":"\n                Turns on tracking of all 'record' parameters during each\n                task, otherwise only tool and runtime information will be recorded.\n                Tracking will result in potentially sensitive data\n                being recorded in the manifest so only turn on this feature\n                if you have control of the final manifest.","example":["cli: -track","api: option.set('track', True)"],"defvalue":false},"record,arch":{"type":"str","scope":"job","pernode":"required","switch":["-record_arch 'step index <str>'"],"shorthelp":"Record: hardware architecture","help":"Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)","example":["cli: -record_arch 'dfm 0 x86_64'","api: schema.set('record', 'arch', 'x86_64', step='dfm', index=0)"]},"record,distro":{"type":"str","scope":"job","pernode":"required","switch":["-record_distro 'step index <str>'"],"shorthelp":"Record: distro name","help":"Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)","example":["cli: -record_distro 'dfm 0 ubuntu'","api: schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)"]},"record,endtime":{"type":"str","scope":"job","pernode":"required","switch":["-record_endtime 'step index <str>'"],"shorthelp":"Record: end time","help":"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","example":["cli: -record_endtime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'endtime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,inputnode":{"type":"[(str,str)]","scope":"job","pernode":"required","switch":["-record_inputnode 'step index <(str,str)>'"],"shorthelp":"Record: node inputs","help":"List of selected inputs for the current step/index specified as\n(in_step, in_index) tuple.","example":["cli: -record_inputnode 'cts 0 (place,42)'","api: schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')"]},"record,ipaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_ipaddr 'step index <str>'"],"shorthelp":"Record: IP address","help":"Record tracking the IP address per step and index basis.","example":["cli: -record_ipaddr 'dfm 0 <addr>'","api: schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)"]},"record,kernelversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_kernelversion 'step index <str>'"],"shorthelp":"Record: O/S kernel version","help":"Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction\nbetween os kernels and os distributions.","example":["cli: -record_kernelversion 'dfm 0 5.11.0-34-generic'","api: schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)"]},"record,macaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_macaddr 'step index <str>'"],"shorthelp":"Record: MAC address","help":"Record tracking the MAC address per step and index basis.","example":["cli: -record_macaddr 'dfm 0 <addr>'","api: schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)"]},"record,machine":{"type":"str","scope":"job","pernode":"required","switch":["-record_machine 'step index <str>'"],"shorthelp":"Record: machine name","help":"Record tracking the machine name per step and index basis. (myhost, localhost, ...","example":["cli: -record_machine 'dfm 0 carbon'","api: schema.set('record', 'machine', 'carbon', step='dfm', index=0)"]},"record,osversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_osversion 'step index <str>'"],"shorthelp":"Record: O/S version","help":"Record tracking the O/S version per step and index basis. Since there is not standard version system for operating\nsystems, extracting information from is platform dependent.\nFor Linux based operating systems, the 'osversion' is the\nversion of the distro.","example":["cli: -record_osversion 'dfm 0 20.04.1-Ubuntu'","api: schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)"]},"record,platform":{"type":"str","scope":"job","pernode":"required","switch":["-record_platform 'step index <str>'"],"shorthelp":"Record: platform name","help":"Record tracking the platform name per step and index basis. (linux, windows, freebsd)","example":["cli: -record_platform 'dfm 0 linux'","api: schema.set('record', 'platform', 'linux', step='dfm', index=0)"]},"record,publickey":{"type":"str","scope":"job","pernode":"required","switch":["-record_publickey 'step index <str>'"],"shorthelp":"Record: public key","help":"Record tracking the public key per step and index basis.","example":["cli: -record_publickey 'dfm 0 <key>'","api: schema.set('record', 'publickey', '<key>', step='dfm', index=0)"]},"record,pythonpackage":{"type":"[str]","scope":"job","pernode":"never","switch":["-record_pythonpackage '<str>'"],"shorthelp":"Record: python packages","help":"Record tracking for the python packages installed.","example":["cli: -record_pythonpackage 'siliconcompiler==0.28.0'","api: schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')"],"defvalue":[]},"record,pythonversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_pythonversion 'step index <str>'"],"shorthelp":"Record: Python version","help":"Record tracking the Python version per step and index basis. Version of python used to run this task.","example":["cli: -record_pythonversion 'dfm 0 3.12.3'","api: schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)"]},"record,region":{"type":"str","scope":"job","pernode":"required","switch":["-record_region 'step index <str>'"],"shorthelp":"Record: cloud region","help":"Record tracking the cloud region per step and index basis. Recommended naming methodology:\n\n* local: node is the local machine\n* onprem: node in on-premises IT infrastructure\n* public: generic public cloud\n* govcloud: generic US government cloud\n* <region>: cloud and entity specific region string name","example":["cli: -record_region 'dfm 0 \"US Gov Boston\"'","api: schema.set('record', 'region', '\"US Gov Boston\"', step='dfm', index=0)"]},"record,remoteid":{"type":"str","scope":"job","pernode":"never","switch":["-record_remoteid '<str>'"],"shorthelp":"Record: remote job ID","help":"Record tracking the job ID for a remote run.","example":["cli: -record_remoteid '0123456789abcdeffedcba9876543210'","api: schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')"],"defvalue":null},"record,scversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_scversion 'step index <str>'"],"shorthelp":"Record: software version","help":"Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.","example":["cli: -record_scversion 'dfm 0 1.0'","api: schema.set('record', 'scversion', '1.0', step='dfm', index=0)"]},"record,starttime":{"type":"str","scope":"job","pernode":"required","switch":["-record_starttime 'step index <str>'"],"shorthelp":"Record: start time","help":"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","example":["cli: -record_starttime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'starttime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,status":{"type":"<error,pending,queued,running,skipped,success,timeout>","scope":"job","pernode":"required","switch":["-record_status 'step index <str>'"],"shorthelp":"Record: node execution status","help":"Record tracking for the status of a node.","example":["cli: -record_status 'syn 0 success'","api: schema.set('record', 'status', 'success', step='syn', index='0')"]},"record,toolargs":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolargs 'step index <str>'"],"shorthelp":"Record: tool CLI arguments","help":"Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.","example":["cli: -record_toolargs 'dfm 0 \"-I include/ foo.v\"'","api: schema.set('record', 'toolargs', '\"-I include/ foo.v\"', step='dfm', index=0)"]},"record,toolexitcode":{"type":"int","scope":"job","pernode":"required","switch":["-record_toolexitcode 'step index <int>'"],"shorthelp":"Record: tool exit code","help":"Record tracking the tool exit code per step and index basis.","example":["cli: -record_toolexitcode 'dfm 0 0'","api: schema.set('record', 'toolexitcode', 0, step='dfm', index=0)"]},"record,toolpath":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolpath 'step index <str>'"],"shorthelp":"Record: tool path","help":"Record tracking the tool path per step and index basis. Full path to tool executable used to run this\ntask.","example":["cli: -record_toolpath 'dfm 0 /usr/bin/openroad'","api: schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)"]},"record,toolversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolversion 'step index <str>'"],"shorthelp":"Record: tool version","help":"Record tracking the tool version per step and index basis. The tool version captured corresponds to the 'tool'\nparameter within the 'tool' dictionary.","example":["cli: -record_toolversion 'dfm 0 1.0'","api: schema.set('record', 'toolversion', '1.0', step='dfm', index=0)"]},"record,userid":{"type":"str","scope":"job","pernode":"required","switch":["-record_userid 'step index <str>'"],"shorthelp":"Record: userid","help":"Record tracking the userid per step and index basis.","example":["cli: -record_userid 'dfm 0 wiley'","api: schema.set('record', 'userid', 'wiley', step='dfm', index=0)"]},"schemaversion":{"type":"str","scope":"global","require":true,"pernode":"never","shorthelp":"Schema version number","lock":true,"example":["api: project.get('schemaversion')"],"defvalue":"0.57.2"},"tool,default,task,default,dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"tool,default,task,default,dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"tool,default,task,default,env,default":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_env 'tool task env <str>'"],"shorthelp":"Task: environment variables","help":"Environment variables to set for individual tasks. Keys and values\nshould be set in accordance with the task's documentation. Most\ntasks do not require extra environment variables to function.","example":["cli: -tool_task_env 'openroad cts MYVAR 42'","api: task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')"],"defvalue":null},"tool,default,task,default,exe":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_exe 'tool <str>'"],"shorthelp":"Tool: executable name","help":"Tool executable name.","example":["cli: -tool_exe 'openroad openroad'","api: task.set('tool', 'openroad', 'exe', 'openroad')"],"defvalue":null},"tool,default,task,default,format":{"type":"<csv,json,tcl,yaml>","scope":"job","pernode":"optional","switch":["-tool_format 'tool <str>'"],"shorthelp":"Tool: file format","help":"File format for tool manifest handoff.","example":["cli: -tool_format 'yosys tcl'","api: task.set('tool', 'yosys', 'format', 'tcl')"],"defvalue":null},"tool,default,task,default,input":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_input 'tool task <file>'"],"shorthelp":"Task: input files","help":"List of data files to be copied from previous flowgraph steps 'output'\ndirectory. The list of steps to copy files from is defined by the\nlist defined by the dictionary key :keypath:`flowgraph,<flow>,<step>,<index>,input`.\nAll files must be available for flow to continue. If a file\nis missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_input 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,licenseserver,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_licenseserver 'name key <str>'"],"shorthelp":"Tool: license servers","help":"Defines a set of tool-specific environment variables used by the executable\nthat depend on license key servers to control access. For multiple servers,\nseparate servers with a colon. The named license variables are read at\nruntime (:meth:`.Task.run()`) and the environment variables are set.","example":["cli: -tool_licenseserver 'atask ACME_LICENSE 1700@server'","api: task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')"],"defvalue":[]},"tool,default,task,default,option":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_option 'tool task <str>'"],"shorthelp":"Task: executable options","help":"List of command line options for the task executable, specified on\na per task and per step basis. Options must not include spaces.\nFor multiple argument options, each option is a separate list element.","example":["cli: -tool_task_option 'openroad cts -no_init'","api: task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')"],"defvalue":[]},"tool,default,task,default,output":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_output 'tool task <file>'"],"shorthelp":"Task: output files","help":"List of data files written to the 'output' directory of the\ntool/task/step/index used in the keypath. All files must be available\nfor flow to continue. If a file is missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_output 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,path":{"type":"dir","scope":"job","pernode":"optional","switch":["-tool_path 'tool <dir>'"],"shorthelp":"Tool: executable path","help":"File system path to tool executable. The path is prepended to the\nsystem PATH environment variable for batch and interactive runs. The\npath parameter can be left blank if the :keypath:`tool,<tool>,task,<task>,exe` is\nalready in the environment search path.","hashalgo":"sha256","example":["cli: -tool_path 'openroad /usr/local/bin'","api: task.set('tool', 'openroad', 'path', '/usr/local/bin')"],"defvalue":null},"tool,default,task,default,postscript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_postscript 'tool task <file>'"],"shorthelp":"Task: post-step script","help":"Path to a user supplied script to execute after the main execution\nstage of the step but before the design is saved.\nExact entry point depends on the step and main script being\nexecuted. An example of a postscript entry point would be immediately\nafter global placement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_postscript 'yosys syn syn_post.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')"],"defvalue":[]},"tool,default,task,default,prescript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_prescript 'tool task <file>'"],"shorthelp":"Task: pre-step script","help":"Path to a user supplied script to execute after reading in the design\nbut before the main execution stage of the step. Exact entry point\ndepends on the step and main script being executed. An example\nof a prescript entry point would be immediately before global\nplacement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_prescript 'yosys syn syn_pre.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')"],"defvalue":[]},"tool,default,task,default,refdir":{"type":"[dir]","scope":"job","pernode":"optional","switch":["-tool_task_refdir 'tool task <dir>'"],"shorthelp":"Task: script directory","help":"Path to directories containing reference flow scripts, specified\non a per step and index basis.","hashalgo":"sha256","example":["cli: -tool_task_refdir 'yosys syn ./myref'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')"],"defvalue":[]},"tool,default,task,default,regex,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_regex 'tool task suffix <str>'"],"shorthelp":"Task: regex filter","help":"A list of piped together grep commands. Each entry represents a set\nof command line arguments for grep including the regex pattern to\nmatch. Starting with the first list entry, each grep output is piped\ninto the following grep command in the list. Supported grep options\ninclude ``-v`` and ``-e``. Patterns starting with \"-\" should be\ndirectly preceded by the ``-e`` option. The following example\nillustrates the concept.\n\nUNIX grep:\n\n.. code-block:: bash\n\n    $ grep WARNING place.log | grep -v \"bbox\" > place.warnings\n\nSiliconCompiler::\n\n    task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',\n             [\"WARNING\", \"-v bbox\"])\n\nThe \"errors\" and \"warnings\" suffixes are special cases. When set,\nthe number of matches found for these regexes will be added to the\nerrors and warnings metrics for the task, respectively. This will\nalso cause the logfile to be added to the :keypath:`tool, <tool>,\ntask, <task>, report` parameter for those metrics, if not already present.","example":["cli: -tool_task_regex 'openroad place errors \"'-v ERROR'\"'","api: task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')"],"defvalue":[]},"tool,default,task,default,report,default":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_report 'tool task metric <file>'"],"shorthelp":"Task: metric report files","help":"List of report files associated with a specific 'metric'. The file path\nspecified is relative to the run directory of the current task.","hashalgo":"sha256","example":["cli: -tool_task_report 'openroad place holdtns \"place 0 place.log\"'","api: task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')"]},"tool,default,task,default,require":{"type":"{str}","scope":"job","pernode":"optional","switch":["-tool_task_require 'tool task <str>'"],"shorthelp":"Task: parameter requirements","help":"List of keypaths to required task parameters. The list is used\nby :meth:`.Project.check_manifest()` to verify that all parameters have been set up\nbefore step execution begins.","example":["cli: -tool_task_require 'openroad cts design'","api: task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')"],"defvalue":[]},"tool,default,task,default,sbom,default":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_sbom 'tool version <file>'"],"shorthelp":"Tool: software BOM","help":"Paths to software bill of material (SBOM) document file of the tool\nspecified on a per version basis. The SBOM includes critical\npackage information about the tool including the list of included\ncomponents, licenses, and copyright. The SBOM file is generally\nprovided as in a a standardized open data format such as SPDX.","hashalgo":"sha256","example":["cli: -tool_sbom 'yosys 1.0.1 ys_sbom.json'","api: task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')"],"defvalue":[]},"tool,default,task,default,script":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_script 'tool task <file>'"],"shorthelp":"Task: entry script","help":"Path to the entry script called by the executable specified\non a per task and per step basis.","hashalgo":"sha256","example":["cli: -tool_task_script 'yosys syn syn.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')"],"defvalue":[]},"tool,default,task,default,stderr,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stderr_destination 'tool task <str>'"],"shorthelp":"Task: destination for stderr","help":"Defines where to direct the output generated over stderr.\nSupported options are:\nnone: the stream generated to STDERR is ignored\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>","example":["cli: -tool_task_stderr_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stderr,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stderr_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stderr","help":"Specifies the file extension for the content redirected from stderr.","example":["cli: -tool_task_stderr_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stdout_destination 'tool task <str>'"],"shorthelp":"Task: destination for stdout","help":"Defines where to direct the output generated over stdout.\nSupported options are:\nnone: the stream generated to STDOUT is ignored.\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>.","example":["cli: -tool_task_stdout_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stdout_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stdout","help":"Specifies the file extension for the content redirected from stdout.","example":["cli: -tool_task_stdout_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,threads":{"type":"int<1..>","scope":"job","pernode":"optional","switch":["-tool_task_threads 'tool task <int>'"],"shorthelp":"Task: thread parallelism","help":"Thread parallelism to use for execution specified on a per task and per\nstep basis. If not specified, SC queries the operating system and sets\nthe threads based on the maximum thread count supported by the\nhardware.","example":["cli: -tool_task_threads 'magic drc 64'","api: task.set('tool', 'magic', 'task', 'drc', 'threads', '64')"],"defvalue":null},"tool,default,task,default,vendor":{"type":"str","scope":"job","pernode":"never","switch":["-tool_vendor 'tool <str>'"],"shorthelp":"Tool: vendor","help":"Name of the tool vendor. Parameter can be used to set vendor\nspecific technology variables in the PDK and libraries. For\nopen source projects, the project name should be used in\nplace of vendor.","example":["cli: -tool_vendor 'yosys yosys'","api: task.set('tool', 'yosys', 'vendor', 'yosys')"],"defvalue":null},"tool,default,task,default,version":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_version 'tool <str>'"],"shorthelp":"Tool: version","help":"List of acceptable versions of the tool executable to be used. Each\nentry in this list must be a version specifier as described by Python\n`PEP-440 <https://peps.python.org/pep-0440/#version-specifiers>`_.\nDuring task execution, the tool is called with the 'vswitch' to\ncheck the runtime executable version. If the version of the system\nexecutable is not allowed by any of the specifiers in 'version',\nthen the job is halted pre-execution. For backwards compatibility,\nentries that do not conform to the standard will be interpreted as a\nversion with an '==' specifier. This check can be disabled by\nsetting :keypath:`option,novercheck` to True.","example":["cli: -tool_version 'openroad >=v2.0'","api: task.set('tool', 'openroad', 'version', '>=v2.0')"],"defvalue":[]},"tool,default,task,default,vswitch":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_vswitch 'tool <str>'"],"shorthelp":"Tool: executable version switch","help":"Command line switch to use with executable used to print out\nthe version number. Common switches include ``-v``, ``-version``,\n``--version``. Some tools may require extra flags to run in batch mode.","example":["cli: -tool_vswitch 'openroad -version'","api: task.set('tool', 'openroad', 'vswitch', '-version')"],"defvalue":[]},"tool,default,task,default,warningoff":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_warningoff 'tool task <str>'"],"shorthelp":"Task: warning filter","help":"A list of tool warnings for which printing should be suppressed.\nGenerally this is done on a per design basis after review has\ndetermined that warning can be safely ignored The code for turning\noff warnings can be found in the specific task reference manual.","example":["cli: -tool_task_warningoff 'verilator lint COMBDLY'","api: task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')"],"defvalue":[]}}},"Lint":{"module":"siliconcompiler.project","class":"siliconcompiler.project.Lint","description":"A specialized Project class tailored for linting tasks.","parameters":{"arg,index":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_index <str>"],"shorthelp":"ARG: index argument","example":["cli: -arg_index 0","api: project.set('arg', 'index', '0')"],"defvalue":null},"arg,step":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_step <str>"],"shorthelp":"ARG: step argument","example":["cli: -arg_step 'route'","api: project.set('arg', 'step', 'route')"],"defvalue":null},"checklist,default,default,criteria":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_criteria 'standard item <str>'"],"shorthelp":"Checklist: item criteria","help":"Simple list of signoff criteria for checklist item which\nmust all be met for signoff. Each signoff criteria consists of\na metric, a relational operator, and a value in the form\n'metric op value'.","example":["cli: -checklist_criteria 'ISO D000 errors==0'","api: check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')"],"defvalue":[]},"checklist,default,default,dataformat":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_dataformat 'standard item <str>'"],"shorthelp":"Checklist: item data format","help":"Free text description of the type of data files acceptable as\nchecklist signoff validation.","example":["cli: -checklist_dataformat 'ISO D000 README'","api: check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')"],"defvalue":null},"checklist,default,default,description":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_description 'standard item <str>'"],"shorthelp":"Checklist: item description","help":"A short one line description of the checklist item.","example":["cli: -checklist_description 'ISO D000 A-DESCRIPTION'","api: check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')"],"defvalue":null},"checklist,default,default,ok":{"type":"bool","scope":"global","pernode":"never","switch":["-checklist_ok 'standard item <bool>'"],"shorthelp":"Checklist: item ok","help":"Boolean check mark for the checklist item. A value of\nTrue indicates a human has inspected the all item dictionary\nparameters and verified they check out.","example":["cli: -checklist_ok 'ISO D000 true'","api: check.set('checklist', 'ISO', 'D000', 'ok', True)"],"defvalue":false},"checklist,default,default,rationale":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_rationale 'standard item <str>'"],"shorthelp":"Checklist: item rationale","help":"Rationale for the checklist item. Rationale should be a\nunique alphanumeric code used by the standard or a short one line\nor single word description.","example":["cli: -checklist_rationale 'ISO D000 reliability'","api: check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')"],"defvalue":[]},"checklist,default,default,report":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_report 'standard item <file>'"],"shorthelp":"Checklist: item report","help":"Filepath to report(s) of specified type documenting the successful\nvalidation of the checklist item.","hashalgo":"sha256","example":["cli: -checklist_report 'ISO D000 my.rpt'","api: check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')"],"defvalue":[]},"checklist,default,default,requirement":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_requirement 'standard item <str>'"],"shorthelp":"Checklist: item requirement","help":"A complete requirement description of the checklist item\nentered as a multi-line string.","example":["cli: -checklist_requirement 'ISO D000 DOCSTRING'","api: check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')"],"defvalue":null},"checklist,default,default,task":{"type":"[(str,str,str)]","scope":"global","pernode":"never","switch":["-checklist_task 'standard item <(str,str,str)>'"],"shorthelp":"Checklist: item task","help":"Flowgraph job and task used to verify the checklist item.\nThe parameter should be left empty for manual and for tool\nflows that bypass the SC infrastructure.","example":["cli: -checklist_task 'ISO D000 (job0,place,0)'","api: check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))"],"defvalue":[]},"checklist,default,default,waiver,default":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_waiver 'standard item metric <file>'"],"shorthelp":"Checklist: item metric waivers","help":"Filepath to report(s) documenting waivers for the checklist\nitem specified on a per metric basis.","hashalgo":"sha256","example":["cli: -checklist_waiver 'ISO D000 bold my.txt'","api: check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')"],"defvalue":[]},"flowgraph,default,default,default,args":{"type":"[str]","scope":"global","pernode":"never","switch":["-flowgraph_args 'flow step index <str>'"],"shorthelp":"Flowgraph: Node-specific arguments","help":"User-specified arguments passed to the task's `setup()` method.\nThis allows for customizing a specific node's behavior without\naffecting other nodes running the same task.","example":["cli: -flowgraph_args 'asicflow cts 0 buffer_cells'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')"],"defvalue":[]},"flowgraph,default,default,default,goal,default":{"type":"float","scope":"global","pernode":"never","switch":["-flowgraph_goal 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric goals","help":"Goals specified on a per-node and per-metric basis used to\ndetermine whether a task run is considered successful. A task run\nmay be considered failing if the absolute value of any of its\nreported metrics is larger than the goal for that metric (if set).\nThis is often used for metrics like 'errors' or 'setupwns'\nwhere the goal is 0.","example":["cli: -flowgraph_goal 'asicflow cts 0 errors 0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)"],"defvalue":null},"flowgraph,default,default,default,input":{"type":"[(str,str)]","scope":"global","pernode":"never","switch":["-flowgraph_input 'flow step index <(str,str)>'"],"shorthelp":"Flowgraph: Node inputs","help":"A list of inputs for this flowgraph node, where each input is\nspecified as a (step, index) tuple. This defines the dependencies\nof this node.","example":["cli: -flowgraph_input 'asicflow cts 0 (place,0)'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))"],"defvalue":[]},"flowgraph,default,default,default,task":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_task 'flow step index <str>'"],"shorthelp":"Flowgraph: Task selection","help":"Name of the task (e.g., 'place', 'syn', 'join') associated\nwith the node's tool.","example":["cli: -flowgraph_task 'asicflow myplace 0 place'","api: flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')"],"defvalue":null},"flowgraph,default,default,default,taskmodule":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_taskmodule 'flow step index <str>'"],"shorthelp":"Flowgraph: Task module","help":"Full Python module path and class name of the task, formatted as\n'<full.module.path>/<ClassName>'. This is used to import and\ninstantiate the correct Task class for setup and execution.","example":["cli: -flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')"],"defvalue":null},"flowgraph,default,default,default,tool":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_tool 'flow step index <str>'"],"shorthelp":"Flowgraph: Tool selection","help":"Name of the tool (e.g., 'openroad', 'yosys', 'builtin') that\nthis node will execute.","example":["cli: -flowgraph_tool 'asicflow place 0 openroad'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')"],"defvalue":null},"flowgraph,default,default,default,weight,default":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-flowgraph_weight 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric weights","help":"Weights specified on a per-node and per-metric basis, used by\noptimization tasks (like 'minimum') to calculate a \"goodness\"\nscore for a run. The score is typically a weighted sum of\nmetric results.","example":["cli: -flowgraph_weight 'asicflow cts 0 area_cells 1.0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)"],"defvalue":0.0},"metric,errors":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_errors 'step index <int>'"],"shorthelp":"Metric: total errors","help":"Metric tracking the total number of errors on a\nper step and index basis.","example":["cli: -metric_errors 'dfm 0 0'","api: project.set('metric', 'errors', 0, step='dfm', index=0)"]},"metric,exetime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_exetime 'step index <float>'"],"shorthelp":"Metric: exetime","help":"Metric tracking time spent by the EDA executable\n:keypath:`tool,<tool>,task,<task>,exe` on a\nper step and index basis. It does not include the SiliconCompiler\nruntime overhead or time waiting for I/O operations and\ninter-processor communication to complete.","unit":"s","example":["cli: -metric_exetime 'dfm 0 10.0'","api: project.set('metric', 'exetime', 10.0, step='dfm', index=0)"]},"metric,memory":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_memory 'step index <float>'"],"shorthelp":"Metric: memory","help":"Metric tracking total peak program memory footprint on a per\nstep and index basis.","unit":"B","example":["cli: -metric_memory 'dfm 0 10e9'","api: project.set('metric', 'memory', 10e9, step='dfm', index=0)"]},"metric,tasktime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_tasktime 'step index <float>'"],"shorthelp":"Metric: tasktime","help":"Metric tracking the total amount of time spent on a task from\nbeginning to end, including data transfers and pre/post\nprocessing.","unit":"s","example":["cli: -metric_tasktime 'dfm 0 10.0'","api: project.set('metric', 'tasktime', 10.0, step='dfm', index=0)"]},"metric,totaltime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_totaltime 'step index <float>'"],"shorthelp":"Metric: totaltime","help":"Metric tracking the total amount of time spent from the beginning\nof the run up to and including the current step and index.","unit":"s","example":["cli: -metric_totaltime 'dfm 0 10.0'","api: project.set('metric', 'totaltime', 10.0, step='dfm', index=0)"]},"metric,warnings":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_warnings 'step index <int>'"],"shorthelp":"Metric: total warnings","help":"Metric tracking the total number of warnings on a\nper step and index basis.","example":["cli: -metric_warnings 'dfm 0 0'","api: project.set('metric', 'warnings', 0, step='dfm', index=0)"]},"option,alias":{"type":"[(str,str,str,str)]","scope":"global","pernode":"never","shorthelp":"Option: Fileset alias mapping","help":"List of filesets to alias during a run. When an alias is specific\nit will be used instead of the source fileset. It is useful when you\nwant to substitute a fileset from one library with a fileset from another,\nwithout changing the original design's code.\nFor example, you might use it to swap in a different version of an IP\nblock or a specific test environment.","example":["api: option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))"],"defvalue":[]},"option,autoissue":{"type":"bool","scope":"global","pernode":"never","switch":["-autoissue <bool>"],"shorthelp":"Option: Enables automatic generation of testcases","help":"Enables automatic generation of testcases\nif the specific node fails","example":["api: option.set('autoissue', True)"],"defvalue":false},"option,breakpoint":{"type":"bool","scope":"job","pernode":"optional","switch":["-breakpoint <bool>"],"shorthelp":"Option: breakpoint list","help":"\n                Set a breakpoint on specific steps. If the step is a TCL\n                based tool, then the breakpoints stops the flow inside the\n                EDA tool. If the step is a command line tool, then the flow\n                drops into a Python interpreter.","example":["cli: -breakpoint true","api: option.set('breakpoint', True)"],"defvalue":false},"option,builddir":{"type":"dir","scope":"global","pernode":"never","switch":["-builddir <dir>"],"shorthelp":"Option: build directory","help":"\n                The default build directory is in the local './build' where SC was\n                executed. This can be used to set an alternate\n                compilation directory path.","hashalgo":"sha256","example":["cli: -builddir ./build_the_future","api: option.set('builddir', './build_the_future')"],"defvalue":"build"},"option,cachedir":{"type":"dir","scope":"global","pernode":"never","switch":["-cachedir <dir>"],"shorthelp":"Option: user cache directory","help":"\n                Filepath to the cache SiliconCompiler keeps between runs. It holds\n                one subdirectory per kind of cached data: \"dataroot\" for downloaded\n                package data sources, and \"tools\" for the caches tools keep for\n                themselves, such as the compiler cache a Verilator build writes to.\n                Cached data goes in those subdirectories, not in the directory\n                itself. If the cache parameter is empty, the \".sc/cache\" directory\n                in the user's home directory will be used.","hashalgo":"sha256","example":["cli: -cachedir /home/user/.sc/cache","api: option.set('cachedir', '/home/user/.sc/cache')"],"defvalue":null},"option,clean":{"type":"bool","scope":"global","pernode":"never","switch":["-clean <bool>"],"shorthelp":"Option: cleanup previous job","help":"\n                Run a job from the start and do not use any of the previous job.\n                If :keypath:`option, jobincr` is True, the old job is preserved and\n                a new job number is assigned.\n                ","example":["cli: -clean","api: option.set('clean', True)"],"defvalue":false},"option,continue":{"type":"bool","scope":"global","pernode":"optional","switch":["-continue <bool>"],"shorthelp":"Option: continue-on-error","help":"\n                Attempt to continue even when errors are encountered in the SC\n                implementation. The default behavior is to quit executing the flow\n                if a task ends and the errors metric is greater than 0.\n\n                Set this on the node that may fail, not on the node that consumes\n                it: the option excuses a failure for the benefit of everything\n                downstream. Nodes that take input from an excused node are still\n                launched and run on whatever inputs did arrive -- a failed branch\n                is dropped, not substituted, so a merge assembles the branches\n                that survived. A node whose every input was excused still fails,\n                having nothing left to run on, and the excuse does not propagate:\n                a node that fails as a consequence of an excused failure upstream\n                needs an excuse of its own.\n\n                Note that the failing task itself always stops if the tool returns\n                a nonzero status code; what this option relaxes is whether the rest\n                of the flow proceeds without it. A run that finishes over a failed\n                branch still reports that branch as an error.\n                ","example":["cli: -continue","api: option.set('continue', True)"],"defvalue":false},"option,credentials":{"type":"file","scope":"global","pernode":"never","switch":["-credentials <file>"],"shorthelp":"Option: user credentials file","help":"\n                Filepath to credentials used for remote processing. If the\n                credentials parameter is empty, the remote processing client program\n                tries to access the \".sc/credentials\" file in the user's home\n                directory. The file supports the following fields:\n\n                address=<server address>\n                port=<server port> (optional)\n                username=<user id> (optional)\n                password=<password / key used for authentication> (optional)","hashalgo":"sha256","example":["cli: -credentials /home/user/.sc/credentials","api: option.set('credentials', '/home/user/.sc/credentials')"],"defvalue":null},"option,design":{"type":"str","scope":"global","pernode":"never","switch":["-design <str>"],"shorthelp":"Option: Design library name","help":"Name of the top level library","example":["cli: -design hello_world","api: option.set('design', 'hello_world')"],"defvalue":null},"option,env,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Option: environment variables","help":"Certain tools and reference flows require global environment\nvariables to be set. These variables can be managed externally or\nspecified through the env variable.","example":["api: option.set('env', 'PDK_HOME', '/disk/mypdk')"],"defvalue":null},"option,fileset":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Option: Selected design filesets","help":"List of filesets to use from the selected design library","example":["api: option.set('fileset', 'rtl')"],"defvalue":[]},"option,flow":{"type":"str","scope":"global","pernode":"never","switch":["-flow <str>"],"shorthelp":"Option: flow target","help":"\n                Sets the flow for the current run. The flow name\n                must match up with a 'flow' in the flowgraph","example":["cli: -flow asicflow","api: option.set('flow', 'asicflow')"],"defvalue":null},"option,from":{"type":"[str]","scope":"job","pernode":"never","switch":["-from <str>"],"shorthelp":"Option: starting step","help":"\n                Inclusive list of steps to start execution from. The default is to start\n                at all entry steps in the flow graph.\n\n                Steps ahead of the starting steps are not rerun: the run uses their\n                outputs from the existing build directory, even when they are out of\n                date. If a step that feeds a starting step has no usable outputs, the\n                run fails. Any other step left out of the run whose outputs are missing\n                or failed is added back and rerun, such as a parallel branch that merges\n                with the run further downstream.","example":["cli: -from 'import'","api: option.set('from', 'import')"],"defvalue":[]},"option,hash":{"type":"bool","scope":"global","pernode":"never","switch":["-hash <bool>"],"shorthelp":"Option: file hashing","help":"\n                Enables hashing of all inputs and outputs during\n                compilation. The hash values are stored in the hashvalue\n                field of the individual parameters.","example":["cli: -hash","api: option.set('hash', True)"],"defvalue":false},"option,jobincr":{"type":"bool","scope":"global","pernode":"never","switch":["-jobincr <bool>"],"shorthelp":"Option: autoincrement jobname","help":"\n                Forces an auto-update of the jobname parameter if a directory\n                matching the jobname is found in the build directory. If the\n                jobname does not include a trailing digit, then the number\n                '1' is added to the jobname before updating the jobname\n                parameter.","example":["cli: -jobincr","api: option.set('jobincr', True)"],"defvalue":false},"option,jobname":{"type":"str","scope":"global","pernode":"never","switch":["-jobname <str>"],"shorthelp":"Option: job name","help":"\n                Jobname during invocation of :meth:`.Project.run()`. The jobname combined with a\n                defined director structure (<dir>/<design>/<jobname>/<step>/<index>)\n                enables multiple levels of transparent job, step, and index\n                introspection.","example":["cli: -jobname may1","api: option.set('jobname', 'may1')"],"defvalue":"job0"},"option,nice":{"type":"int<-20..19>","scope":"global","pernode":"optional","switch":["-nice <int>"],"shorthelp":"Option: tool scheduling priority","help":"\n                Sets the type of execution priority of each individual flowgraph steps.\n                If the parameter is undefined, nice will not be used. For more information see\n                `Unix 'nice' <https://en.wikipedia.org/wiki/Nice_(Unix)>`_.","example":["cli: -nice 5","api: option.set('nice', 5)"],"defvalue":null},"option,nodashboard":{"type":"bool","scope":"global","pernode":"never","switch":["-nodashboard <bool>"],"shorthelp":"Option: Disables the dashboard","help":"Disables the dashboard during execution","example":["api: option.set('nodashboard', True)"],"defvalue":false},"option,nodisplay":{"type":"bool","scope":"global","pernode":"never","switch":["-nodisplay <bool>"],"shorthelp":"Option: headless execution","help":"\n                This flag prevents SiliconCompiler from opening GUI windows.","example":["cli: -nodisplay","api: option.set('nodisplay', True)"],"defvalue":false},"option,novercheck":{"type":"bool","scope":"global","pernode":"optional","switch":["-novercheck <bool>"],"shorthelp":"Option: disable version checking","help":"\n                Disables strict version checking on all invoked tools if True.\n                The list of supported version numbers is defined in the\n                :keypath:`tool,<tool>,task,<task>,version`.","example":["cli: -novercheck","api: option.set('novercheck', True)"],"defvalue":false},"option,optmode":{"type":"int<0..>","scope":"global","pernode":"optional","switch":["-O<str>","-optmode <str>"],"shorthelp":"Option: optimization mode","help":"\n                The compiler has modes to prioritize run time and ppa. Modes\n                include.\n\n                (O0) = Exploration mode for debugging setup\n                (O1) = Higher effort and better PPA than O0\n                (O2) = Higher effort and better PPA than O1\n                (O3) = Signoff quality. Better PPA and higher run times than O2\n                (O4-O98) = Reserved (compiler/target dependent)\n                (O99) = Experimental highest possible effort, may be unstable\n                ","example":["cli: -O3","cli: -optmode 3","api: option.set('optmode', 'O3')"],"defvalue":0},"option,prune":{"type":"[(str,str)]","scope":"job","pernode":"never","switch":["-prune 'node <(str,str)>'"],"shorthelp":"Option: flowgraph pruning","help":"\n                List of starting nodes for branches to be pruned.\n                The default is to not prune any nodes/branches.","example":["cli: -prune (syn,0)","api: option.set('prune', ('syn', '0'))"],"defvalue":[]},"option,quiet":{"type":"bool","scope":"global","pernode":"optional","switch":["-quiet <bool>"],"shorthelp":"Option: quiet execution","help":"\n                The -quiet option forces all steps to print to a log file.\n                This can be useful with Modern EDA tools which print\n                significant content to the screen.","example":["cli: -quiet","api: option.set('quiet', True)"],"defvalue":false},"option,remote":{"type":"bool","scope":"global","pernode":"never","switch":["-remote <bool>"],"shorthelp":"Option: enable remote processing","help":"\n                Sends job for remote processing if set to true. The remote\n                option requires a credentials file to be placed in the home\n                directory. Fore more information, see the credentials\n                parameter.","example":["cli: -remote","api: option.set('remote', True)"],"defvalue":false},"option,scheduler,cores":{"type":"int<1..>","scope":"global","pernode":"optional","switch":["-cores <int>"],"shorthelp":"Option: Scheduler core constraint","help":"\n                Specifies the number CPU cores required to run the job.\n                For the slurm scheduler, this translates to the '-c'\n                switch. For more information, see the job scheduler\n                documentation","example":["cli: -cores 48","api: option.set('cores', 48)"],"defvalue":null},"option,scheduler,defer":{"type":"str","scope":"global","pernode":"optional","switch":["-defer <str>"],"shorthelp":"Option: scheduler start time","help":"\n                Defer initiation of job until the specified time. The parameter\n                is pass through string for remote job scheduler such as slurm.\n                For more information about the exact format specification, see\n                the job scheduler documentation. Examples of valid slurm specific\n                values include: now+1hour, 16:00, 010-01-20T12:34:00. For more\n                information, see the job scheduler documentation.","example":["cli: -defer 16:00","api: option.set('defer', '16:00')"],"defvalue":null},"option,scheduler,maxnodes":{"type":"int<1..>","scope":"global","pernode":"never","switch":["-maxnodes <int>"],"shorthelp":"Option: maximum concurrent nodes","help":"\n                Maximum number of concurrent nodes to run in a job. If not set this will default\n                to the number of cpu cores available.","example":["cli: -maxnodes 4","api: option.set('maxnodes', 4)"],"defvalue":null},"option,scheduler,maxthreads":{"type":"int<1..>","scope":"global","pernode":"never","shorthelp":"Option: maximum number of threads to assign a task","help":"\n                Maximum number of threads for each task in a job. If not set this will default\n                to the number of cpu cores available.","example":["api: option.set('maxthreads', 4)"],"defvalue":null},"option,scheduler,memory":{"type":"int","scope":"global","pernode":"optional","switch":["-memory <int>"],"shorthelp":"Option: scheduler memory constraint","help":"\n                Specifies the amount of memory required to run the job,\n                specified in MB. For the slurm scheduler, this translates to\n                the '--mem' switch. For more information, see the job\n                scheduler documentation","unit":"MB","example":["cli: -memory 8000","api: option.set('memory', 8000)"],"defvalue":null},"option,scheduler,msgcontact":{"type":"{str}","scope":"global","pernode":"optional","switch":["-msgcontact <str>"],"shorthelp":"Option: message contact","help":"\n                List of email addresses to message on a :keypath:`option,scheduler,msgevent`.\n                Support for email messages relies on job scheduler daemon support.\n                For more information, see the job scheduler documentation. ","example":["cli: -msgcontact 'wile.e.coyote@acme.com'","api: option.set('msgcontact', 'wiley@acme.com')"],"defvalue":[]},"option,scheduler,msgevent":{"type":"{<all,begin,end,fail,summary,timeout>}","scope":"global","pernode":"optional","switch":["-msgevent <str>"],"shorthelp":"Option: message event trigger","help":"\n                Directs job scheduler to send a message to the user in\n                :keypath:`option,scheduler,msgcontact` when certain events occur\n                during a task.\n\n                * fail: send an email on failures\n                * timeout: send an email on timeouts\n                * begin: send an email at the start of a node task\n                * end: send an email at the end of a node task\n                * summary: send a summary email at the end of the run\n                * all: send an email on any event\n                ","example":["cli: -msgevent all","api: option.set('msgevent', 'all')"],"defvalue":[]},"option,scheduler,name":{"type":"<docker,lsf,sge,slurm>","scope":"global","pernode":"optional","switch":["-scheduler <str>"],"shorthelp":"Option: scheduler platform","help":"\n                Sets the type of job scheduler to be used for each individual\n                flowgraph steps. If the parameter is undefined, the steps are executed\n                on the same machine that the SC was launched on. If 'slurm' is used,\n                the host running the 'sc' command must be running a 'slurmctld' daemon\n                managing a Slurm cluster. Additionally, the build directory\n                (:keypath:`option,builddir`) must be located in shared storage which\n                can be accessed by all hosts in the cluster.","example":["cli: -scheduler slurm","api: option.set('name', 'slurm')"],"defvalue":null},"option,scheduler,options":{"type":"[str]","scope":"global","pernode":"optional","switch":["-scheduler_options <str>"],"shorthelp":"Option: scheduler arguments","help":"\n                Advanced/export options passed through unchanged to the job\n                scheduler as-is. (The user specified options must be compatible\n                with the rest of the scheduler parameters entered.(memory etc).\n                For more information, see the job scheduler documentation.","example":["cli: -scheduler_options \"--pty\"","api: option.set('options', \"--pty\")"],"defvalue":[]},"option,scheduler,queue":{"type":"str","scope":"global","pernode":"optional","switch":["-queue <str>"],"shorthelp":"Option: scheduler queue","help":"\n                Send the job to the specified queue. With slurm, this\n                translates to 'partition'. The queue name must match\n                the name of an existing job scheduler queue. For more information,\n                see the job scheduler documentation","example":["cli: -queue nightrun","api: option.set('queue', 'nightrun')"],"defvalue":null},"option,timeout":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-timeout <float>"],"shorthelp":"Option: timeout value","help":"\n                Timeout value in seconds. The timeout value is compared\n                against the wall time tracked by the SC runtime to determine\n                if an operation should continue.","unit":"s","example":["cli: -timeout 3600","api: option.set('timeout', 3600)"],"defvalue":null},"option,to":{"type":"[str]","scope":"job","pernode":"never","switch":["-to <str>"],"shorthelp":"Option: ending step","help":"\n                Inclusive list of steps to end execution with. The default is to go\n                to all exit steps in the flow graph.","example":["cli: -to 'syn'","api: option.set('to', 'syn')"],"defvalue":[]},"option,track":{"type":"bool","scope":"global","pernode":"optional","switch":["-track <bool>"],"shorthelp":"Option: enable provenance tracking","help":"\n                Turns on tracking of all 'record' parameters during each\n                task, otherwise only tool and runtime information will be recorded.\n                Tracking will result in potentially sensitive data\n                being recorded in the manifest so only turn on this feature\n                if you have control of the final manifest.","example":["cli: -track","api: option.set('track', True)"],"defvalue":false},"record,arch":{"type":"str","scope":"job","pernode":"required","switch":["-record_arch 'step index <str>'"],"shorthelp":"Record: hardware architecture","help":"Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)","example":["cli: -record_arch 'dfm 0 x86_64'","api: schema.set('record', 'arch', 'x86_64', step='dfm', index=0)"]},"record,distro":{"type":"str","scope":"job","pernode":"required","switch":["-record_distro 'step index <str>'"],"shorthelp":"Record: distro name","help":"Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)","example":["cli: -record_distro 'dfm 0 ubuntu'","api: schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)"]},"record,endtime":{"type":"str","scope":"job","pernode":"required","switch":["-record_endtime 'step index <str>'"],"shorthelp":"Record: end time","help":"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","example":["cli: -record_endtime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'endtime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,inputnode":{"type":"[(str,str)]","scope":"job","pernode":"required","switch":["-record_inputnode 'step index <(str,str)>'"],"shorthelp":"Record: node inputs","help":"List of selected inputs for the current step/index specified as\n(in_step, in_index) tuple.","example":["cli: -record_inputnode 'cts 0 (place,42)'","api: schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')"]},"record,ipaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_ipaddr 'step index <str>'"],"shorthelp":"Record: IP address","help":"Record tracking the IP address per step and index basis.","example":["cli: -record_ipaddr 'dfm 0 <addr>'","api: schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)"]},"record,kernelversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_kernelversion 'step index <str>'"],"shorthelp":"Record: O/S kernel version","help":"Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction\nbetween os kernels and os distributions.","example":["cli: -record_kernelversion 'dfm 0 5.11.0-34-generic'","api: schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)"]},"record,macaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_macaddr 'step index <str>'"],"shorthelp":"Record: MAC address","help":"Record tracking the MAC address per step and index basis.","example":["cli: -record_macaddr 'dfm 0 <addr>'","api: schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)"]},"record,machine":{"type":"str","scope":"job","pernode":"required","switch":["-record_machine 'step index <str>'"],"shorthelp":"Record: machine name","help":"Record tracking the machine name per step and index basis. (myhost, localhost, ...","example":["cli: -record_machine 'dfm 0 carbon'","api: schema.set('record', 'machine', 'carbon', step='dfm', index=0)"]},"record,osversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_osversion 'step index <str>'"],"shorthelp":"Record: O/S version","help":"Record tracking the O/S version per step and index basis. Since there is not standard version system for operating\nsystems, extracting information from is platform dependent.\nFor Linux based operating systems, the 'osversion' is the\nversion of the distro.","example":["cli: -record_osversion 'dfm 0 20.04.1-Ubuntu'","api: schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)"]},"record,platform":{"type":"str","scope":"job","pernode":"required","switch":["-record_platform 'step index <str>'"],"shorthelp":"Record: platform name","help":"Record tracking the platform name per step and index basis. (linux, windows, freebsd)","example":["cli: -record_platform 'dfm 0 linux'","api: schema.set('record', 'platform', 'linux', step='dfm', index=0)"]},"record,publickey":{"type":"str","scope":"job","pernode":"required","switch":["-record_publickey 'step index <str>'"],"shorthelp":"Record: public key","help":"Record tracking the public key per step and index basis.","example":["cli: -record_publickey 'dfm 0 <key>'","api: schema.set('record', 'publickey', '<key>', step='dfm', index=0)"]},"record,pythonpackage":{"type":"[str]","scope":"job","pernode":"never","switch":["-record_pythonpackage '<str>'"],"shorthelp":"Record: python packages","help":"Record tracking for the python packages installed.","example":["cli: -record_pythonpackage 'siliconcompiler==0.28.0'","api: schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')"],"defvalue":[]},"record,pythonversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_pythonversion 'step index <str>'"],"shorthelp":"Record: Python version","help":"Record tracking the Python version per step and index basis. Version of python used to run this task.","example":["cli: -record_pythonversion 'dfm 0 3.12.3'","api: schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)"]},"record,region":{"type":"str","scope":"job","pernode":"required","switch":["-record_region 'step index <str>'"],"shorthelp":"Record: cloud region","help":"Record tracking the cloud region per step and index basis. Recommended naming methodology:\n\n* local: node is the local machine\n* onprem: node in on-premises IT infrastructure\n* public: generic public cloud\n* govcloud: generic US government cloud\n* <region>: cloud and entity specific region string name","example":["cli: -record_region 'dfm 0 \"US Gov Boston\"'","api: schema.set('record', 'region', '\"US Gov Boston\"', step='dfm', index=0)"]},"record,remoteid":{"type":"str","scope":"job","pernode":"never","switch":["-record_remoteid '<str>'"],"shorthelp":"Record: remote job ID","help":"Record tracking the job ID for a remote run.","example":["cli: -record_remoteid '0123456789abcdeffedcba9876543210'","api: schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')"],"defvalue":null},"record,scversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_scversion 'step index <str>'"],"shorthelp":"Record: software version","help":"Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.","example":["cli: -record_scversion 'dfm 0 1.0'","api: schema.set('record', 'scversion', '1.0', step='dfm', index=0)"]},"record,starttime":{"type":"str","scope":"job","pernode":"required","switch":["-record_starttime 'step index <str>'"],"shorthelp":"Record: start time","help":"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","example":["cli: -record_starttime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'starttime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,status":{"type":"<error,pending,queued,running,skipped,success,timeout>","scope":"job","pernode":"required","switch":["-record_status 'step index <str>'"],"shorthelp":"Record: node execution status","help":"Record tracking for the status of a node.","example":["cli: -record_status 'syn 0 success'","api: schema.set('record', 'status', 'success', step='syn', index='0')"]},"record,toolargs":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolargs 'step index <str>'"],"shorthelp":"Record: tool CLI arguments","help":"Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.","example":["cli: -record_toolargs 'dfm 0 \"-I include/ foo.v\"'","api: schema.set('record', 'toolargs', '\"-I include/ foo.v\"', step='dfm', index=0)"]},"record,toolexitcode":{"type":"int","scope":"job","pernode":"required","switch":["-record_toolexitcode 'step index <int>'"],"shorthelp":"Record: tool exit code","help":"Record tracking the tool exit code per step and index basis.","example":["cli: -record_toolexitcode 'dfm 0 0'","api: schema.set('record', 'toolexitcode', 0, step='dfm', index=0)"]},"record,toolpath":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolpath 'step index <str>'"],"shorthelp":"Record: tool path","help":"Record tracking the tool path per step and index basis. Full path to tool executable used to run this\ntask.","example":["cli: -record_toolpath 'dfm 0 /usr/bin/openroad'","api: schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)"]},"record,toolversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolversion 'step index <str>'"],"shorthelp":"Record: tool version","help":"Record tracking the tool version per step and index basis. The tool version captured corresponds to the 'tool'\nparameter within the 'tool' dictionary.","example":["cli: -record_toolversion 'dfm 0 1.0'","api: schema.set('record', 'toolversion', '1.0', step='dfm', index=0)"]},"record,userid":{"type":"str","scope":"job","pernode":"required","switch":["-record_userid 'step index <str>'"],"shorthelp":"Record: userid","help":"Record tracking the userid per step and index basis.","example":["cli: -record_userid 'dfm 0 wiley'","api: schema.set('record', 'userid', 'wiley', step='dfm', index=0)"]},"schemaversion":{"type":"str","scope":"global","require":true,"pernode":"never","shorthelp":"Schema version number","lock":true,"example":["api: project.get('schemaversion')"],"defvalue":"0.57.2"},"tool,default,task,default,dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"tool,default,task,default,dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"tool,default,task,default,env,default":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_env 'tool task env <str>'"],"shorthelp":"Task: environment variables","help":"Environment variables to set for individual tasks. Keys and values\nshould be set in accordance with the task's documentation. Most\ntasks do not require extra environment variables to function.","example":["cli: -tool_task_env 'openroad cts MYVAR 42'","api: task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')"],"defvalue":null},"tool,default,task,default,exe":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_exe 'tool <str>'"],"shorthelp":"Tool: executable name","help":"Tool executable name.","example":["cli: -tool_exe 'openroad openroad'","api: task.set('tool', 'openroad', 'exe', 'openroad')"],"defvalue":null},"tool,default,task,default,format":{"type":"<csv,json,tcl,yaml>","scope":"job","pernode":"optional","switch":["-tool_format 'tool <str>'"],"shorthelp":"Tool: file format","help":"File format for tool manifest handoff.","example":["cli: -tool_format 'yosys tcl'","api: task.set('tool', 'yosys', 'format', 'tcl')"],"defvalue":null},"tool,default,task,default,input":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_input 'tool task <file>'"],"shorthelp":"Task: input files","help":"List of data files to be copied from previous flowgraph steps 'output'\ndirectory. The list of steps to copy files from is defined by the\nlist defined by the dictionary key :keypath:`flowgraph,<flow>,<step>,<index>,input`.\nAll files must be available for flow to continue. If a file\nis missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_input 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,licenseserver,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_licenseserver 'name key <str>'"],"shorthelp":"Tool: license servers","help":"Defines a set of tool-specific environment variables used by the executable\nthat depend on license key servers to control access. For multiple servers,\nseparate servers with a colon. The named license variables are read at\nruntime (:meth:`.Task.run()`) and the environment variables are set.","example":["cli: -tool_licenseserver 'atask ACME_LICENSE 1700@server'","api: task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')"],"defvalue":[]},"tool,default,task,default,option":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_option 'tool task <str>'"],"shorthelp":"Task: executable options","help":"List of command line options for the task executable, specified on\na per task and per step basis. Options must not include spaces.\nFor multiple argument options, each option is a separate list element.","example":["cli: -tool_task_option 'openroad cts -no_init'","api: task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')"],"defvalue":[]},"tool,default,task,default,output":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_output 'tool task <file>'"],"shorthelp":"Task: output files","help":"List of data files written to the 'output' directory of the\ntool/task/step/index used in the keypath. All files must be available\nfor flow to continue. If a file is missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_output 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,path":{"type":"dir","scope":"job","pernode":"optional","switch":["-tool_path 'tool <dir>'"],"shorthelp":"Tool: executable path","help":"File system path to tool executable. The path is prepended to the\nsystem PATH environment variable for batch and interactive runs. The\npath parameter can be left blank if the :keypath:`tool,<tool>,task,<task>,exe` is\nalready in the environment search path.","hashalgo":"sha256","example":["cli: -tool_path 'openroad /usr/local/bin'","api: task.set('tool', 'openroad', 'path', '/usr/local/bin')"],"defvalue":null},"tool,default,task,default,postscript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_postscript 'tool task <file>'"],"shorthelp":"Task: post-step script","help":"Path to a user supplied script to execute after the main execution\nstage of the step but before the design is saved.\nExact entry point depends on the step and main script being\nexecuted. An example of a postscript entry point would be immediately\nafter global placement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_postscript 'yosys syn syn_post.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')"],"defvalue":[]},"tool,default,task,default,prescript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_prescript 'tool task <file>'"],"shorthelp":"Task: pre-step script","help":"Path to a user supplied script to execute after reading in the design\nbut before the main execution stage of the step. Exact entry point\ndepends on the step and main script being executed. An example\nof a prescript entry point would be immediately before global\nplacement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_prescript 'yosys syn syn_pre.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')"],"defvalue":[]},"tool,default,task,default,refdir":{"type":"[dir]","scope":"job","pernode":"optional","switch":["-tool_task_refdir 'tool task <dir>'"],"shorthelp":"Task: script directory","help":"Path to directories containing reference flow scripts, specified\non a per step and index basis.","hashalgo":"sha256","example":["cli: -tool_task_refdir 'yosys syn ./myref'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')"],"defvalue":[]},"tool,default,task,default,regex,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_regex 'tool task suffix <str>'"],"shorthelp":"Task: regex filter","help":"A list of piped together grep commands. Each entry represents a set\nof command line arguments for grep including the regex pattern to\nmatch. Starting with the first list entry, each grep output is piped\ninto the following grep command in the list. Supported grep options\ninclude ``-v`` and ``-e``. Patterns starting with \"-\" should be\ndirectly preceded by the ``-e`` option. The following example\nillustrates the concept.\n\nUNIX grep:\n\n.. code-block:: bash\n\n    $ grep WARNING place.log | grep -v \"bbox\" > place.warnings\n\nSiliconCompiler::\n\n    task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',\n             [\"WARNING\", \"-v bbox\"])\n\nThe \"errors\" and \"warnings\" suffixes are special cases. When set,\nthe number of matches found for these regexes will be added to the\nerrors and warnings metrics for the task, respectively. This will\nalso cause the logfile to be added to the :keypath:`tool, <tool>,\ntask, <task>, report` parameter for those metrics, if not already present.","example":["cli: -tool_task_regex 'openroad place errors \"'-v ERROR'\"'","api: task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')"],"defvalue":[]},"tool,default,task,default,report,default":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_report 'tool task metric <file>'"],"shorthelp":"Task: metric report files","help":"List of report files associated with a specific 'metric'. The file path\nspecified is relative to the run directory of the current task.","hashalgo":"sha256","example":["cli: -tool_task_report 'openroad place holdtns \"place 0 place.log\"'","api: task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')"]},"tool,default,task,default,require":{"type":"{str}","scope":"job","pernode":"optional","switch":["-tool_task_require 'tool task <str>'"],"shorthelp":"Task: parameter requirements","help":"List of keypaths to required task parameters. The list is used\nby :meth:`.Project.check_manifest()` to verify that all parameters have been set up\nbefore step execution begins.","example":["cli: -tool_task_require 'openroad cts design'","api: task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')"],"defvalue":[]},"tool,default,task,default,sbom,default":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_sbom 'tool version <file>'"],"shorthelp":"Tool: software BOM","help":"Paths to software bill of material (SBOM) document file of the tool\nspecified on a per version basis. The SBOM includes critical\npackage information about the tool including the list of included\ncomponents, licenses, and copyright. The SBOM file is generally\nprovided as in a a standardized open data format such as SPDX.","hashalgo":"sha256","example":["cli: -tool_sbom 'yosys 1.0.1 ys_sbom.json'","api: task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')"],"defvalue":[]},"tool,default,task,default,script":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_script 'tool task <file>'"],"shorthelp":"Task: entry script","help":"Path to the entry script called by the executable specified\non a per task and per step basis.","hashalgo":"sha256","example":["cli: -tool_task_script 'yosys syn syn.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')"],"defvalue":[]},"tool,default,task,default,stderr,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stderr_destination 'tool task <str>'"],"shorthelp":"Task: destination for stderr","help":"Defines where to direct the output generated over stderr.\nSupported options are:\nnone: the stream generated to STDERR is ignored\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>","example":["cli: -tool_task_stderr_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stderr,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stderr_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stderr","help":"Specifies the file extension for the content redirected from stderr.","example":["cli: -tool_task_stderr_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stdout_destination 'tool task <str>'"],"shorthelp":"Task: destination for stdout","help":"Defines where to direct the output generated over stdout.\nSupported options are:\nnone: the stream generated to STDOUT is ignored.\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>.","example":["cli: -tool_task_stdout_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stdout_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stdout","help":"Specifies the file extension for the content redirected from stdout.","example":["cli: -tool_task_stdout_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,threads":{"type":"int<1..>","scope":"job","pernode":"optional","switch":["-tool_task_threads 'tool task <int>'"],"shorthelp":"Task: thread parallelism","help":"Thread parallelism to use for execution specified on a per task and per\nstep basis. If not specified, SC queries the operating system and sets\nthe threads based on the maximum thread count supported by the\nhardware.","example":["cli: -tool_task_threads 'magic drc 64'","api: task.set('tool', 'magic', 'task', 'drc', 'threads', '64')"],"defvalue":null},"tool,default,task,default,vendor":{"type":"str","scope":"job","pernode":"never","switch":["-tool_vendor 'tool <str>'"],"shorthelp":"Tool: vendor","help":"Name of the tool vendor. Parameter can be used to set vendor\nspecific technology variables in the PDK and libraries. For\nopen source projects, the project name should be used in\nplace of vendor.","example":["cli: -tool_vendor 'yosys yosys'","api: task.set('tool', 'yosys', 'vendor', 'yosys')"],"defvalue":null},"tool,default,task,default,version":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_version 'tool <str>'"],"shorthelp":"Tool: version","help":"List of acceptable versions of the tool executable to be used. Each\nentry in this list must be a version specifier as described by Python\n`PEP-440 <https://peps.python.org/pep-0440/#version-specifiers>`_.\nDuring task execution, the tool is called with the 'vswitch' to\ncheck the runtime executable version. If the version of the system\nexecutable is not allowed by any of the specifiers in 'version',\nthen the job is halted pre-execution. For backwards compatibility,\nentries that do not conform to the standard will be interpreted as a\nversion with an '==' specifier. This check can be disabled by\nsetting :keypath:`option,novercheck` to True.","example":["cli: -tool_version 'openroad >=v2.0'","api: task.set('tool', 'openroad', 'version', '>=v2.0')"],"defvalue":[]},"tool,default,task,default,vswitch":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_vswitch 'tool <str>'"],"shorthelp":"Tool: executable version switch","help":"Command line switch to use with executable used to print out\nthe version number. Common switches include ``-v``, ``-version``,\n``--version``. Some tools may require extra flags to run in batch mode.","example":["cli: -tool_vswitch 'openroad -version'","api: task.set('tool', 'openroad', 'vswitch', '-version')"],"defvalue":[]},"tool,default,task,default,warningoff":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_warningoff 'tool task <str>'"],"shorthelp":"Task: warning filter","help":"A list of tool warnings for which printing should be suppressed.\nGenerally this is done on a per design basis after review has\ndetermined that warning can be safely ignored The code for turning\noff warnings can be found in the specific task reference manual.","example":["cli: -tool_task_warningoff 'verilator lint COMBDLY'","api: task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')"],"defvalue":[]}}},"Sim":{"module":"siliconcompiler.project","class":"siliconcompiler.project.Sim","description":"A specialized Project class tailored for simulation tasks.","parameters":{"arg,index":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_index <str>"],"shorthelp":"ARG: index argument","example":["cli: -arg_index 0","api: project.set('arg', 'index', '0')"],"defvalue":null},"arg,step":{"type":"str","scope":"scratch","pernode":"never","switch":["-arg_step <str>"],"shorthelp":"ARG: step argument","example":["cli: -arg_step 'route'","api: project.set('arg', 'step', 'route')"],"defvalue":null},"checklist,default,default,criteria":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_criteria 'standard item <str>'"],"shorthelp":"Checklist: item criteria","help":"Simple list of signoff criteria for checklist item which\nmust all be met for signoff. Each signoff criteria consists of\na metric, a relational operator, and a value in the form\n'metric op value'.","example":["cli: -checklist_criteria 'ISO D000 errors==0'","api: check.set('checklist', 'ISO', 'D000', 'criteria', 'errors==0')"],"defvalue":[]},"checklist,default,default,dataformat":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_dataformat 'standard item <str>'"],"shorthelp":"Checklist: item data format","help":"Free text description of the type of data files acceptable as\nchecklist signoff validation.","example":["cli: -checklist_dataformat 'ISO D000 README'","api: check.set('checklist', 'ISO', 'D000', 'dataformat', 'README')"],"defvalue":null},"checklist,default,default,description":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_description 'standard item <str>'"],"shorthelp":"Checklist: item description","help":"A short one line description of the checklist item.","example":["cli: -checklist_description 'ISO D000 A-DESCRIPTION'","api: check.set('checklist', 'ISO', 'D000', 'description', 'A-DESCRIPTION')"],"defvalue":null},"checklist,default,default,ok":{"type":"bool","scope":"global","pernode":"never","switch":["-checklist_ok 'standard item <bool>'"],"shorthelp":"Checklist: item ok","help":"Boolean check mark for the checklist item. A value of\nTrue indicates a human has inspected the all item dictionary\nparameters and verified they check out.","example":["cli: -checklist_ok 'ISO D000 true'","api: check.set('checklist', 'ISO', 'D000', 'ok', True)"],"defvalue":false},"checklist,default,default,rationale":{"type":"[str]","scope":"global","pernode":"never","switch":["-checklist_rationale 'standard item <str>'"],"shorthelp":"Checklist: item rationale","help":"Rationale for the checklist item. Rationale should be a\nunique alphanumeric code used by the standard or a short one line\nor single word description.","example":["cli: -checklist_rationale 'ISO D000 reliability'","api: check.set('checklist', 'ISO', 'D000', 'rationale', 'reliability')"],"defvalue":[]},"checklist,default,default,report":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_report 'standard item <file>'"],"shorthelp":"Checklist: item report","help":"Filepath to report(s) of specified type documenting the successful\nvalidation of the checklist item.","hashalgo":"sha256","example":["cli: -checklist_report 'ISO D000 my.rpt'","api: check.set('checklist', 'ISO', 'D000', 'report', 'my.rpt')"],"defvalue":[]},"checklist,default,default,requirement":{"type":"str","scope":"global","pernode":"never","switch":["-checklist_requirement 'standard item <str>'"],"shorthelp":"Checklist: item requirement","help":"A complete requirement description of the checklist item\nentered as a multi-line string.","example":["cli: -checklist_requirement 'ISO D000 DOCSTRING'","api: check.set('checklist', 'ISO', 'D000', 'requirement', 'DOCSTRING')"],"defvalue":null},"checklist,default,default,task":{"type":"[(str,str,str)]","scope":"global","pernode":"never","switch":["-checklist_task 'standard item <(str,str,str)>'"],"shorthelp":"Checklist: item task","help":"Flowgraph job and task used to verify the checklist item.\nThe parameter should be left empty for manual and for tool\nflows that bypass the SC infrastructure.","example":["cli: -checklist_task 'ISO D000 (job0,place,0)'","api: check.set('checklist', 'ISO', 'D000', 'task', ('job0', 'place', '0'))"],"defvalue":[]},"checklist,default,default,waiver,default":{"type":"[file]","scope":"global","pernode":"never","switch":["-checklist_waiver 'standard item metric <file>'"],"shorthelp":"Checklist: item metric waivers","help":"Filepath to report(s) documenting waivers for the checklist\nitem specified on a per metric basis.","hashalgo":"sha256","example":["cli: -checklist_waiver 'ISO D000 bold my.txt'","api: check.set('checklist', 'ISO', 'D000', 'waiver', 'hold', 'my.txt')"],"defvalue":[]},"flowgraph,default,default,default,args":{"type":"[str]","scope":"global","pernode":"never","switch":["-flowgraph_args 'flow step index <str>'"],"shorthelp":"Flowgraph: Node-specific arguments","help":"User-specified arguments passed to the task's `setup()` method.\nThis allows for customizing a specific node's behavior without\naffecting other nodes running the same task.","example":["cli: -flowgraph_args 'asicflow cts 0 buffer_cells'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'args', 'buffer_cells')"],"defvalue":[]},"flowgraph,default,default,default,goal,default":{"type":"float","scope":"global","pernode":"never","switch":["-flowgraph_goal 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric goals","help":"Goals specified on a per-node and per-metric basis used to\ndetermine whether a task run is considered successful. A task run\nmay be considered failing if the absolute value of any of its\nreported metrics is larger than the goal for that metric (if set).\nThis is often used for metrics like 'errors' or 'setupwns'\nwhere the goal is 0.","example":["cli: -flowgraph_goal 'asicflow cts 0 errors 0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'goal', 'errors', 0)"],"defvalue":null},"flowgraph,default,default,default,input":{"type":"[(str,str)]","scope":"global","pernode":"never","switch":["-flowgraph_input 'flow step index <(str,str)>'"],"shorthelp":"Flowgraph: Node inputs","help":"A list of inputs for this flowgraph node, where each input is\nspecified as a (step, index) tuple. This defines the dependencies\nof this node.","example":["cli: -flowgraph_input 'asicflow cts 0 (place,0)'","api: flow.add('flowgraph', 'asicflow', 'cts', '0', 'input', ('place', '0'))"],"defvalue":[]},"flowgraph,default,default,default,task":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_task 'flow step index <str>'"],"shorthelp":"Flowgraph: Task selection","help":"Name of the task (e.g., 'place', 'syn', 'join') associated\nwith the node's tool.","example":["cli: -flowgraph_task 'asicflow myplace 0 place'","api: flow.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')"],"defvalue":null},"flowgraph,default,default,default,taskmodule":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_taskmodule 'flow step index <str>'"],"shorthelp":"Flowgraph: Task module","help":"Full Python module path and class name of the task, formatted as\n'<full.module.path>/<ClassName>'. This is used to import and\ninstantiate the correct Task class for setup and execution.","example":["cli: -flowgraph_taskmodule 'asicflow place 0 siliconcompiler.tools.openroad/Place'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'taskmodule', 'siliconcompiler.tools.openroad/Place')"],"defvalue":null},"flowgraph,default,default,default,tool":{"type":"str","scope":"global","pernode":"never","switch":["-flowgraph_tool 'flow step index <str>'"],"shorthelp":"Flowgraph: Tool selection","help":"Name of the tool (e.g., 'openroad', 'yosys', 'builtin') that\nthis node will execute.","example":["cli: -flowgraph_tool 'asicflow place 0 openroad'","api: flow.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')"],"defvalue":null},"flowgraph,default,default,default,weight,default":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-flowgraph_weight 'flow step index metric <float>'"],"shorthelp":"Flowgraph: Metric weights","help":"Weights specified on a per-node and per-metric basis, used by\noptimization tasks (like 'minimum') to calculate a \"goodness\"\nscore for a run. The score is typically a weighted sum of\nmetric results.","example":["cli: -flowgraph_weight 'asicflow cts 0 area_cells 1.0'","api: flow.set('flowgraph', 'asicflow', 'cts', '0', 'weight', 'area_cells', 1.0)"],"defvalue":0.0},"metric,errors":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_errors 'step index <int>'"],"shorthelp":"Metric: total errors","help":"Metric tracking the total number of errors on a\nper step and index basis.","example":["cli: -metric_errors 'dfm 0 0'","api: project.set('metric', 'errors', 0, step='dfm', index=0)"]},"metric,exetime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_exetime 'step index <float>'"],"shorthelp":"Metric: exetime","help":"Metric tracking time spent by the EDA executable\n:keypath:`tool,<tool>,task,<task>,exe` on a\nper step and index basis. It does not include the SiliconCompiler\nruntime overhead or time waiting for I/O operations and\ninter-processor communication to complete.","unit":"s","example":["cli: -metric_exetime 'dfm 0 10.0'","api: project.set('metric', 'exetime', 10.0, step='dfm', index=0)"]},"metric,memory":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_memory 'step index <float>'"],"shorthelp":"Metric: memory","help":"Metric tracking total peak program memory footprint on a per\nstep and index basis.","unit":"B","example":["cli: -metric_memory 'dfm 0 10e9'","api: project.set('metric', 'memory', 10e9, step='dfm', index=0)"]},"metric,tasktime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_tasktime 'step index <float>'"],"shorthelp":"Metric: tasktime","help":"Metric tracking the total amount of time spent on a task from\nbeginning to end, including data transfers and pre/post\nprocessing.","unit":"s","example":["cli: -metric_tasktime 'dfm 0 10.0'","api: project.set('metric', 'tasktime', 10.0, step='dfm', index=0)"]},"metric,totaltime":{"type":"float<0.0..>","scope":"job","pernode":"required","switch":["-metric_totaltime 'step index <float>'"],"shorthelp":"Metric: totaltime","help":"Metric tracking the total amount of time spent from the beginning\nof the run up to and including the current step and index.","unit":"s","example":["cli: -metric_totaltime 'dfm 0 10.0'","api: project.set('metric', 'totaltime', 10.0, step='dfm', index=0)"]},"metric,warnings":{"type":"int<0..>","scope":"job","pernode":"required","switch":["-metric_warnings 'step index <int>'"],"shorthelp":"Metric: total warnings","help":"Metric tracking the total number of warnings on a\nper step and index basis.","example":["cli: -metric_warnings 'dfm 0 0'","api: project.set('metric', 'warnings', 0, step='dfm', index=0)"]},"option,alias":{"type":"[(str,str,str,str)]","scope":"global","pernode":"never","shorthelp":"Option: Fileset alias mapping","help":"List of filesets to alias during a run. When an alias is specific\nit will be used instead of the source fileset. It is useful when you\nwant to substitute a fileset from one library with a fileset from another,\nwithout changing the original design's code.\nFor example, you might use it to swap in a different version of an IP\nblock or a specific test environment.","example":["api: option.set('alias', ('design', 'rtl', 'lambda', 'rtl'))"],"defvalue":[]},"option,autoissue":{"type":"bool","scope":"global","pernode":"never","switch":["-autoissue <bool>"],"shorthelp":"Option: Enables automatic generation of testcases","help":"Enables automatic generation of testcases\nif the specific node fails","example":["api: option.set('autoissue', True)"],"defvalue":false},"option,breakpoint":{"type":"bool","scope":"job","pernode":"optional","switch":["-breakpoint <bool>"],"shorthelp":"Option: breakpoint list","help":"\n                Set a breakpoint on specific steps. If the step is a TCL\n                based tool, then the breakpoints stops the flow inside the\n                EDA tool. If the step is a command line tool, then the flow\n                drops into a Python interpreter.","example":["cli: -breakpoint true","api: option.set('breakpoint', True)"],"defvalue":false},"option,builddir":{"type":"dir","scope":"global","pernode":"never","switch":["-builddir <dir>"],"shorthelp":"Option: build directory","help":"\n                The default build directory is in the local './build' where SC was\n                executed. This can be used to set an alternate\n                compilation directory path.","hashalgo":"sha256","example":["cli: -builddir ./build_the_future","api: option.set('builddir', './build_the_future')"],"defvalue":"build"},"option,cachedir":{"type":"dir","scope":"global","pernode":"never","switch":["-cachedir <dir>"],"shorthelp":"Option: user cache directory","help":"\n                Filepath to the cache SiliconCompiler keeps between runs. It holds\n                one subdirectory per kind of cached data: \"dataroot\" for downloaded\n                package data sources, and \"tools\" for the caches tools keep for\n                themselves, such as the compiler cache a Verilator build writes to.\n                Cached data goes in those subdirectories, not in the directory\n                itself. If the cache parameter is empty, the \".sc/cache\" directory\n                in the user's home directory will be used.","hashalgo":"sha256","example":["cli: -cachedir /home/user/.sc/cache","api: option.set('cachedir', '/home/user/.sc/cache')"],"defvalue":null},"option,clean":{"type":"bool","scope":"global","pernode":"never","switch":["-clean <bool>"],"shorthelp":"Option: cleanup previous job","help":"\n                Run a job from the start and do not use any of the previous job.\n                If :keypath:`option, jobincr` is True, the old job is preserved and\n                a new job number is assigned.\n                ","example":["cli: -clean","api: option.set('clean', True)"],"defvalue":false},"option,continue":{"type":"bool","scope":"global","pernode":"optional","switch":["-continue <bool>"],"shorthelp":"Option: continue-on-error","help":"\n                Attempt to continue even when errors are encountered in the SC\n                implementation. The default behavior is to quit executing the flow\n                if a task ends and the errors metric is greater than 0.\n\n                Set this on the node that may fail, not on the node that consumes\n                it: the option excuses a failure for the benefit of everything\n                downstream. Nodes that take input from an excused node are still\n                launched and run on whatever inputs did arrive -- a failed branch\n                is dropped, not substituted, so a merge assembles the branches\n                that survived. A node whose every input was excused still fails,\n                having nothing left to run on, and the excuse does not propagate:\n                a node that fails as a consequence of an excused failure upstream\n                needs an excuse of its own.\n\n                Note that the failing task itself always stops if the tool returns\n                a nonzero status code; what this option relaxes is whether the rest\n                of the flow proceeds without it. A run that finishes over a failed\n                branch still reports that branch as an error.\n                ","example":["cli: -continue","api: option.set('continue', True)"],"defvalue":false},"option,credentials":{"type":"file","scope":"global","pernode":"never","switch":["-credentials <file>"],"shorthelp":"Option: user credentials file","help":"\n                Filepath to credentials used for remote processing. If the\n                credentials parameter is empty, the remote processing client program\n                tries to access the \".sc/credentials\" file in the user's home\n                directory. The file supports the following fields:\n\n                address=<server address>\n                port=<server port> (optional)\n                username=<user id> (optional)\n                password=<password / key used for authentication> (optional)","hashalgo":"sha256","example":["cli: -credentials /home/user/.sc/credentials","api: option.set('credentials', '/home/user/.sc/credentials')"],"defvalue":null},"option,design":{"type":"str","scope":"global","pernode":"never","switch":["-design <str>"],"shorthelp":"Option: Design library name","help":"Name of the top level library","example":["cli: -design hello_world","api: option.set('design', 'hello_world')"],"defvalue":null},"option,env,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Option: environment variables","help":"Certain tools and reference flows require global environment\nvariables to be set. These variables can be managed externally or\nspecified through the env variable.","example":["api: option.set('env', 'PDK_HOME', '/disk/mypdk')"],"defvalue":null},"option,fileset":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Option: Selected design filesets","help":"List of filesets to use from the selected design library","example":["api: option.set('fileset', 'rtl')"],"defvalue":[]},"option,flow":{"type":"str","scope":"global","pernode":"never","switch":["-flow <str>"],"shorthelp":"Option: flow target","help":"\n                Sets the flow for the current run. The flow name\n                must match up with a 'flow' in the flowgraph","example":["cli: -flow asicflow","api: option.set('flow', 'asicflow')"],"defvalue":null},"option,from":{"type":"[str]","scope":"job","pernode":"never","switch":["-from <str>"],"shorthelp":"Option: starting step","help":"\n                Inclusive list of steps to start execution from. The default is to start\n                at all entry steps in the flow graph.\n\n                Steps ahead of the starting steps are not rerun: the run uses their\n                outputs from the existing build directory, even when they are out of\n                date. If a step that feeds a starting step has no usable outputs, the\n                run fails. Any other step left out of the run whose outputs are missing\n                or failed is added back and rerun, such as a parallel branch that merges\n                with the run further downstream.","example":["cli: -from 'import'","api: option.set('from', 'import')"],"defvalue":[]},"option,hash":{"type":"bool","scope":"global","pernode":"never","switch":["-hash <bool>"],"shorthelp":"Option: file hashing","help":"\n                Enables hashing of all inputs and outputs during\n                compilation. The hash values are stored in the hashvalue\n                field of the individual parameters.","example":["cli: -hash","api: option.set('hash', True)"],"defvalue":false},"option,jobincr":{"type":"bool","scope":"global","pernode":"never","switch":["-jobincr <bool>"],"shorthelp":"Option: autoincrement jobname","help":"\n                Forces an auto-update of the jobname parameter if a directory\n                matching the jobname is found in the build directory. If the\n                jobname does not include a trailing digit, then the number\n                '1' is added to the jobname before updating the jobname\n                parameter.","example":["cli: -jobincr","api: option.set('jobincr', True)"],"defvalue":false},"option,jobname":{"type":"str","scope":"global","pernode":"never","switch":["-jobname <str>"],"shorthelp":"Option: job name","help":"\n                Jobname during invocation of :meth:`.Project.run()`. The jobname combined with a\n                defined director structure (<dir>/<design>/<jobname>/<step>/<index>)\n                enables multiple levels of transparent job, step, and index\n                introspection.","example":["cli: -jobname may1","api: option.set('jobname', 'may1')"],"defvalue":"job0"},"option,nice":{"type":"int<-20..19>","scope":"global","pernode":"optional","switch":["-nice <int>"],"shorthelp":"Option: tool scheduling priority","help":"\n                Sets the type of execution priority of each individual flowgraph steps.\n                If the parameter is undefined, nice will not be used. For more information see\n                `Unix 'nice' <https://en.wikipedia.org/wiki/Nice_(Unix)>`_.","example":["cli: -nice 5","api: option.set('nice', 5)"],"defvalue":null},"option,nodashboard":{"type":"bool","scope":"global","pernode":"never","switch":["-nodashboard <bool>"],"shorthelp":"Option: Disables the dashboard","help":"Disables the dashboard during execution","example":["api: option.set('nodashboard', True)"],"defvalue":false},"option,nodisplay":{"type":"bool","scope":"global","pernode":"never","switch":["-nodisplay <bool>"],"shorthelp":"Option: headless execution","help":"\n                This flag prevents SiliconCompiler from opening GUI windows.","example":["cli: -nodisplay","api: option.set('nodisplay', True)"],"defvalue":false},"option,novercheck":{"type":"bool","scope":"global","pernode":"optional","switch":["-novercheck <bool>"],"shorthelp":"Option: disable version checking","help":"\n                Disables strict version checking on all invoked tools if True.\n                The list of supported version numbers is defined in the\n                :keypath:`tool,<tool>,task,<task>,version`.","example":["cli: -novercheck","api: option.set('novercheck', True)"],"defvalue":false},"option,optmode":{"type":"int<0..>","scope":"global","pernode":"optional","switch":["-O<str>","-optmode <str>"],"shorthelp":"Option: optimization mode","help":"\n                The compiler has modes to prioritize run time and ppa. Modes\n                include.\n\n                (O0) = Exploration mode for debugging setup\n                (O1) = Higher effort and better PPA than O0\n                (O2) = Higher effort and better PPA than O1\n                (O3) = Signoff quality. Better PPA and higher run times than O2\n                (O4-O98) = Reserved (compiler/target dependent)\n                (O99) = Experimental highest possible effort, may be unstable\n                ","example":["cli: -O3","cli: -optmode 3","api: option.set('optmode', 'O3')"],"defvalue":0},"option,prune":{"type":"[(str,str)]","scope":"job","pernode":"never","switch":["-prune 'node <(str,str)>'"],"shorthelp":"Option: flowgraph pruning","help":"\n                List of starting nodes for branches to be pruned.\n                The default is to not prune any nodes/branches.","example":["cli: -prune (syn,0)","api: option.set('prune', ('syn', '0'))"],"defvalue":[]},"option,quiet":{"type":"bool","scope":"global","pernode":"optional","switch":["-quiet <bool>"],"shorthelp":"Option: quiet execution","help":"\n                The -quiet option forces all steps to print to a log file.\n                This can be useful with Modern EDA tools which print\n                significant content to the screen.","example":["cli: -quiet","api: option.set('quiet', True)"],"defvalue":false},"option,remote":{"type":"bool","scope":"global","pernode":"never","switch":["-remote <bool>"],"shorthelp":"Option: enable remote processing","help":"\n                Sends job for remote processing if set to true. The remote\n                option requires a credentials file to be placed in the home\n                directory. Fore more information, see the credentials\n                parameter.","example":["cli: -remote","api: option.set('remote', True)"],"defvalue":false},"option,scheduler,cores":{"type":"int<1..>","scope":"global","pernode":"optional","switch":["-cores <int>"],"shorthelp":"Option: Scheduler core constraint","help":"\n                Specifies the number CPU cores required to run the job.\n                For the slurm scheduler, this translates to the '-c'\n                switch. For more information, see the job scheduler\n                documentation","example":["cli: -cores 48","api: option.set('cores', 48)"],"defvalue":null},"option,scheduler,defer":{"type":"str","scope":"global","pernode":"optional","switch":["-defer <str>"],"shorthelp":"Option: scheduler start time","help":"\n                Defer initiation of job until the specified time. The parameter\n                is pass through string for remote job scheduler such as slurm.\n                For more information about the exact format specification, see\n                the job scheduler documentation. Examples of valid slurm specific\n                values include: now+1hour, 16:00, 010-01-20T12:34:00. For more\n                information, see the job scheduler documentation.","example":["cli: -defer 16:00","api: option.set('defer', '16:00')"],"defvalue":null},"option,scheduler,maxnodes":{"type":"int<1..>","scope":"global","pernode":"never","switch":["-maxnodes <int>"],"shorthelp":"Option: maximum concurrent nodes","help":"\n                Maximum number of concurrent nodes to run in a job. If not set this will default\n                to the number of cpu cores available.","example":["cli: -maxnodes 4","api: option.set('maxnodes', 4)"],"defvalue":null},"option,scheduler,maxthreads":{"type":"int<1..>","scope":"global","pernode":"never","shorthelp":"Option: maximum number of threads to assign a task","help":"\n                Maximum number of threads for each task in a job. If not set this will default\n                to the number of cpu cores available.","example":["api: option.set('maxthreads', 4)"],"defvalue":null},"option,scheduler,memory":{"type":"int","scope":"global","pernode":"optional","switch":["-memory <int>"],"shorthelp":"Option: scheduler memory constraint","help":"\n                Specifies the amount of memory required to run the job,\n                specified in MB. For the slurm scheduler, this translates to\n                the '--mem' switch. For more information, see the job\n                scheduler documentation","unit":"MB","example":["cli: -memory 8000","api: option.set('memory', 8000)"],"defvalue":null},"option,scheduler,msgcontact":{"type":"{str}","scope":"global","pernode":"optional","switch":["-msgcontact <str>"],"shorthelp":"Option: message contact","help":"\n                List of email addresses to message on a :keypath:`option,scheduler,msgevent`.\n                Support for email messages relies on job scheduler daemon support.\n                For more information, see the job scheduler documentation. ","example":["cli: -msgcontact 'wile.e.coyote@acme.com'","api: option.set('msgcontact', 'wiley@acme.com')"],"defvalue":[]},"option,scheduler,msgevent":{"type":"{<all,begin,end,fail,summary,timeout>}","scope":"global","pernode":"optional","switch":["-msgevent <str>"],"shorthelp":"Option: message event trigger","help":"\n                Directs job scheduler to send a message to the user in\n                :keypath:`option,scheduler,msgcontact` when certain events occur\n                during a task.\n\n                * fail: send an email on failures\n                * timeout: send an email on timeouts\n                * begin: send an email at the start of a node task\n                * end: send an email at the end of a node task\n                * summary: send a summary email at the end of the run\n                * all: send an email on any event\n                ","example":["cli: -msgevent all","api: option.set('msgevent', 'all')"],"defvalue":[]},"option,scheduler,name":{"type":"<docker,lsf,sge,slurm>","scope":"global","pernode":"optional","switch":["-scheduler <str>"],"shorthelp":"Option: scheduler platform","help":"\n                Sets the type of job scheduler to be used for each individual\n                flowgraph steps. If the parameter is undefined, the steps are executed\n                on the same machine that the SC was launched on. If 'slurm' is used,\n                the host running the 'sc' command must be running a 'slurmctld' daemon\n                managing a Slurm cluster. Additionally, the build directory\n                (:keypath:`option,builddir`) must be located in shared storage which\n                can be accessed by all hosts in the cluster.","example":["cli: -scheduler slurm","api: option.set('name', 'slurm')"],"defvalue":null},"option,scheduler,options":{"type":"[str]","scope":"global","pernode":"optional","switch":["-scheduler_options <str>"],"shorthelp":"Option: scheduler arguments","help":"\n                Advanced/export options passed through unchanged to the job\n                scheduler as-is. (The user specified options must be compatible\n                with the rest of the scheduler parameters entered.(memory etc).\n                For more information, see the job scheduler documentation.","example":["cli: -scheduler_options \"--pty\"","api: option.set('options', \"--pty\")"],"defvalue":[]},"option,scheduler,queue":{"type":"str","scope":"global","pernode":"optional","switch":["-queue <str>"],"shorthelp":"Option: scheduler queue","help":"\n                Send the job to the specified queue. With slurm, this\n                translates to 'partition'. The queue name must match\n                the name of an existing job scheduler queue. For more information,\n                see the job scheduler documentation","example":["cli: -queue nightrun","api: option.set('queue', 'nightrun')"],"defvalue":null},"option,timeout":{"type":"float<0.0..>","scope":"global","pernode":"optional","switch":["-timeout <float>"],"shorthelp":"Option: timeout value","help":"\n                Timeout value in seconds. The timeout value is compared\n                against the wall time tracked by the SC runtime to determine\n                if an operation should continue.","unit":"s","example":["cli: -timeout 3600","api: option.set('timeout', 3600)"],"defvalue":null},"option,to":{"type":"[str]","scope":"job","pernode":"never","switch":["-to <str>"],"shorthelp":"Option: ending step","help":"\n                Inclusive list of steps to end execution with. The default is to go\n                to all exit steps in the flow graph.","example":["cli: -to 'syn'","api: option.set('to', 'syn')"],"defvalue":[]},"option,track":{"type":"bool","scope":"global","pernode":"optional","switch":["-track <bool>"],"shorthelp":"Option: enable provenance tracking","help":"\n                Turns on tracking of all 'record' parameters during each\n                task, otherwise only tool and runtime information will be recorded.\n                Tracking will result in potentially sensitive data\n                being recorded in the manifest so only turn on this feature\n                if you have control of the final manifest.","example":["cli: -track","api: option.set('track', True)"],"defvalue":false},"record,arch":{"type":"str","scope":"job","pernode":"required","switch":["-record_arch 'step index <str>'"],"shorthelp":"Record: hardware architecture","help":"Record tracking the hardware architecture per step and index basis. (x86_64, rv64imafdc)","example":["cli: -record_arch 'dfm 0 x86_64'","api: schema.set('record', 'arch', 'x86_64', step='dfm', index=0)"]},"record,distro":{"type":"str","scope":"job","pernode":"required","switch":["-record_distro 'step index <str>'"],"shorthelp":"Record: distro name","help":"Record tracking the distro name per step and index basis. (ubuntu, redhat, centos)","example":["cli: -record_distro 'dfm 0 ubuntu'","api: schema.set('record', 'distro', 'ubuntu', step='dfm', index=0)"]},"record,endtime":{"type":"str","scope":"job","pernode":"required","switch":["-record_endtime 'step index <str>'"],"shorthelp":"Record: end time","help":"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","example":["cli: -record_endtime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'endtime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,inputnode":{"type":"[(str,str)]","scope":"job","pernode":"required","switch":["-record_inputnode 'step index <(str,str)>'"],"shorthelp":"Record: node inputs","help":"List of selected inputs for the current step/index specified as\n(in_step, in_index) tuple.","example":["cli: -record_inputnode 'cts 0 (place,42)'","api: schema.set('record', 'inputnode', ('place', '42'), step='syn', index='0')"]},"record,ipaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_ipaddr 'step index <str>'"],"shorthelp":"Record: IP address","help":"Record tracking the IP address per step and index basis.","example":["cli: -record_ipaddr 'dfm 0 <addr>'","api: schema.set('record', 'ipaddr', '<addr>', step='dfm', index=0)"]},"record,kernelversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_kernelversion 'step index <str>'"],"shorthelp":"Record: O/S kernel version","help":"Record tracking the O/S kernel version per step and index basis. Used for platforms that support a distinction\nbetween os kernels and os distributions.","example":["cli: -record_kernelversion 'dfm 0 5.11.0-34-generic'","api: schema.set('record', 'kernelversion', '5.11.0-34-generic', step='dfm', index=0)"]},"record,macaddr":{"type":"str","scope":"job","pernode":"required","switch":["-record_macaddr 'step index <str>'"],"shorthelp":"Record: MAC address","help":"Record tracking the MAC address per step and index basis.","example":["cli: -record_macaddr 'dfm 0 <addr>'","api: schema.set('record', 'macaddr', '<addr>', step='dfm', index=0)"]},"record,machine":{"type":"str","scope":"job","pernode":"required","switch":["-record_machine 'step index <str>'"],"shorthelp":"Record: machine name","help":"Record tracking the machine name per step and index basis. (myhost, localhost, ...","example":["cli: -record_machine 'dfm 0 carbon'","api: schema.set('record', 'machine', 'carbon', step='dfm', index=0)"]},"record,osversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_osversion 'step index <str>'"],"shorthelp":"Record: O/S version","help":"Record tracking the O/S version per step and index basis. Since there is not standard version system for operating\nsystems, extracting information from is platform dependent.\nFor Linux based operating systems, the 'osversion' is the\nversion of the distro.","example":["cli: -record_osversion 'dfm 0 20.04.1-Ubuntu'","api: schema.set('record', 'osversion', '20.04.1-Ubuntu', step='dfm', index=0)"]},"record,platform":{"type":"str","scope":"job","pernode":"required","switch":["-record_platform 'step index <str>'"],"shorthelp":"Record: platform name","help":"Record tracking the platform name per step and index basis. (linux, windows, freebsd)","example":["cli: -record_platform 'dfm 0 linux'","api: schema.set('record', 'platform', 'linux', step='dfm', index=0)"]},"record,publickey":{"type":"str","scope":"job","pernode":"required","switch":["-record_publickey 'step index <str>'"],"shorthelp":"Record: public key","help":"Record tracking the public key per step and index basis.","example":["cli: -record_publickey 'dfm 0 <key>'","api: schema.set('record', 'publickey', '<key>', step='dfm', index=0)"]},"record,pythonpackage":{"type":"[str]","scope":"job","pernode":"never","switch":["-record_pythonpackage '<str>'"],"shorthelp":"Record: python packages","help":"Record tracking for the python packages installed.","example":["cli: -record_pythonpackage 'siliconcompiler==0.28.0'","api: schema.set('record', 'pythonpackage', 'siliconcompiler==0.28.0')"],"defvalue":[]},"record,pythonversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_pythonversion 'step index <str>'"],"shorthelp":"Record: Python version","help":"Record tracking the Python version per step and index basis. Version of python used to run this task.","example":["cli: -record_pythonversion 'dfm 0 3.12.3'","api: schema.set('record', 'pythonversion', '3.12.3', step='dfm', index=0)"]},"record,region":{"type":"str","scope":"job","pernode":"required","switch":["-record_region 'step index <str>'"],"shorthelp":"Record: cloud region","help":"Record tracking the cloud region per step and index basis. Recommended naming methodology:\n\n* local: node is the local machine\n* onprem: node in on-premises IT infrastructure\n* public: generic public cloud\n* govcloud: generic US government cloud\n* <region>: cloud and entity specific region string name","example":["cli: -record_region 'dfm 0 \"US Gov Boston\"'","api: schema.set('record', 'region', '\"US Gov Boston\"', step='dfm', index=0)"]},"record,remoteid":{"type":"str","scope":"job","pernode":"never","switch":["-record_remoteid '<str>'"],"shorthelp":"Record: remote job ID","help":"Record tracking the job ID for a remote run.","example":["cli: -record_remoteid '0123456789abcdeffedcba9876543210'","api: schema.set('record', 'remoteid', '0123456789abcdeffedcba9876543210')"],"defvalue":null},"record,scversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_scversion 'step index <str>'"],"shorthelp":"Record: software version","help":"Record tracking the software version per step and index basis. Version number for the SiliconCompiler software.","example":["cli: -record_scversion 'dfm 0 1.0'","api: schema.set('record', 'scversion', '1.0', step='dfm', index=0)"]},"record,starttime":{"type":"str","scope":"job","pernode":"required","switch":["-record_starttime 'step index <str>'"],"shorthelp":"Record: start time","help":"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","example":["cli: -record_starttime 'dfm 0 \"2021-09-06 12:20:20.000000\"'","api: schema.set('record', 'starttime', '\"2021-09-06 12:20:20.000000\"', step='dfm', index=0)"]},"record,status":{"type":"<error,pending,queued,running,skipped,success,timeout>","scope":"job","pernode":"required","switch":["-record_status 'step index <str>'"],"shorthelp":"Record: node execution status","help":"Record tracking for the status of a node.","example":["cli: -record_status 'syn 0 success'","api: schema.set('record', 'status', 'success', step='syn', index='0')"]},"record,toolargs":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolargs 'step index <str>'"],"shorthelp":"Record: tool CLI arguments","help":"Record tracking the tool CLI arguments per step and index basis. Arguments passed to tool via CLI.","example":["cli: -record_toolargs 'dfm 0 \"-I include/ foo.v\"'","api: schema.set('record', 'toolargs', '\"-I include/ foo.v\"', step='dfm', index=0)"]},"record,toolexitcode":{"type":"int","scope":"job","pernode":"required","switch":["-record_toolexitcode 'step index <int>'"],"shorthelp":"Record: tool exit code","help":"Record tracking the tool exit code per step and index basis.","example":["cli: -record_toolexitcode 'dfm 0 0'","api: schema.set('record', 'toolexitcode', 0, step='dfm', index=0)"]},"record,toolpath":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolpath 'step index <str>'"],"shorthelp":"Record: tool path","help":"Record tracking the tool path per step and index basis. Full path to tool executable used to run this\ntask.","example":["cli: -record_toolpath 'dfm 0 /usr/bin/openroad'","api: schema.set('record', 'toolpath', '/usr/bin/openroad', step='dfm', index=0)"]},"record,toolversion":{"type":"str","scope":"job","pernode":"required","switch":["-record_toolversion 'step index <str>'"],"shorthelp":"Record: tool version","help":"Record tracking the tool version per step and index basis. The tool version captured corresponds to the 'tool'\nparameter within the 'tool' dictionary.","example":["cli: -record_toolversion 'dfm 0 1.0'","api: schema.set('record', 'toolversion', '1.0', step='dfm', index=0)"]},"record,userid":{"type":"str","scope":"job","pernode":"required","switch":["-record_userid 'step index <str>'"],"shorthelp":"Record: userid","help":"Record tracking the userid per step and index basis.","example":["cli: -record_userid 'dfm 0 wiley'","api: schema.set('record', 'userid', 'wiley', step='dfm', index=0)"]},"schemaversion":{"type":"str","scope":"global","require":true,"pernode":"never","shorthelp":"Schema version number","lock":true,"example":["api: project.get('schemaversion')"],"defvalue":"0.57.2"},"tool,default,task,default,dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"tool,default,task,default,dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"tool,default,task,default,env,default":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_env 'tool task env <str>'"],"shorthelp":"Task: environment variables","help":"Environment variables to set for individual tasks. Keys and values\nshould be set in accordance with the task's documentation. Most\ntasks do not require extra environment variables to function.","example":["cli: -tool_task_env 'openroad cts MYVAR 42'","api: task.set('tool', 'openroad', 'task', 'cts', 'env', 'MYVAR', '42')"],"defvalue":null},"tool,default,task,default,exe":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_exe 'tool <str>'"],"shorthelp":"Tool: executable name","help":"Tool executable name.","example":["cli: -tool_exe 'openroad openroad'","api: task.set('tool', 'openroad', 'exe', 'openroad')"],"defvalue":null},"tool,default,task,default,format":{"type":"<csv,json,tcl,yaml>","scope":"job","pernode":"optional","switch":["-tool_format 'tool <str>'"],"shorthelp":"Tool: file format","help":"File format for tool manifest handoff.","example":["cli: -tool_format 'yosys tcl'","api: task.set('tool', 'yosys', 'format', 'tcl')"],"defvalue":null},"tool,default,task,default,input":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_input 'tool task <file>'"],"shorthelp":"Task: input files","help":"List of data files to be copied from previous flowgraph steps 'output'\ndirectory. The list of steps to copy files from is defined by the\nlist defined by the dictionary key :keypath:`flowgraph,<flow>,<step>,<index>,input`.\nAll files must be available for flow to continue. If a file\nis missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_input 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'input', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,licenseserver,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_licenseserver 'name key <str>'"],"shorthelp":"Tool: license servers","help":"Defines a set of tool-specific environment variables used by the executable\nthat depend on license key servers to control access. For multiple servers,\nseparate servers with a colon. The named license variables are read at\nruntime (:meth:`.Task.run()`) and the environment variables are set.","example":["cli: -tool_licenseserver 'atask ACME_LICENSE 1700@server'","api: task.set('tool', 'acme', 'licenseserver', 'ACME_LICENSE', '1700@server')"],"defvalue":[]},"tool,default,task,default,option":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_option 'tool task <str>'"],"shorthelp":"Task: executable options","help":"List of command line options for the task executable, specified on\na per task and per step basis. Options must not include spaces.\nFor multiple argument options, each option is a separate list element.","example":["cli: -tool_task_option 'openroad cts -no_init'","api: task.set('tool', 'openroad', 'task', 'cts', 'option', '-no_init')"],"defvalue":[]},"tool,default,task,default,output":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_output 'tool task <file>'"],"shorthelp":"Task: output files","help":"List of data files written to the 'output' directory of the\ntool/task/step/index used in the keypath. All files must be available\nfor flow to continue. If a file is missing, the program exists on an error.","hashalgo":"sha256","example":["cli: -tool_task_output 'openroad place \"place 0 oh_add.def\"'","api: task.set('tool', 'openroad', 'task', 'place', 'output', 'oh_add.def', step='place', index='0')"]},"tool,default,task,default,path":{"type":"dir","scope":"job","pernode":"optional","switch":["-tool_path 'tool <dir>'"],"shorthelp":"Tool: executable path","help":"File system path to tool executable. The path is prepended to the\nsystem PATH environment variable for batch and interactive runs. The\npath parameter can be left blank if the :keypath:`tool,<tool>,task,<task>,exe` is\nalready in the environment search path.","hashalgo":"sha256","example":["cli: -tool_path 'openroad /usr/local/bin'","api: task.set('tool', 'openroad', 'path', '/usr/local/bin')"],"defvalue":null},"tool,default,task,default,postscript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_postscript 'tool task <file>'"],"shorthelp":"Task: post-step script","help":"Path to a user supplied script to execute after the main execution\nstage of the step but before the design is saved.\nExact entry point depends on the step and main script being\nexecuted. An example of a postscript entry point would be immediately\nafter global placement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_postscript 'yosys syn syn_post.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'postscript', 'syn_post.tcl')"],"defvalue":[]},"tool,default,task,default,prescript":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_prescript 'tool task <file>'"],"shorthelp":"Task: pre-step script","help":"Path to a user supplied script to execute after reading in the design\nbut before the main execution stage of the step. Exact entry point\ndepends on the step and main script being executed. An example\nof a prescript entry point would be immediately before global\nplacement.","copy":true,"hashalgo":"sha256","example":["cli: -tool_task_prescript 'yosys syn syn_pre.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'prescript', 'syn_pre.tcl')"],"defvalue":[]},"tool,default,task,default,refdir":{"type":"[dir]","scope":"job","pernode":"optional","switch":["-tool_task_refdir 'tool task <dir>'"],"shorthelp":"Task: script directory","help":"Path to directories containing reference flow scripts, specified\non a per step and index basis.","hashalgo":"sha256","example":["cli: -tool_task_refdir 'yosys syn ./myref'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'refdir', './myref')"],"defvalue":[]},"tool,default,task,default,regex,default":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_regex 'tool task suffix <str>'"],"shorthelp":"Task: regex filter","help":"A list of piped together grep commands. Each entry represents a set\nof command line arguments for grep including the regex pattern to\nmatch. Starting with the first list entry, each grep output is piped\ninto the following grep command in the list. Supported grep options\ninclude ``-v`` and ``-e``. Patterns starting with \"-\" should be\ndirectly preceded by the ``-e`` option. The following example\nillustrates the concept.\n\nUNIX grep:\n\n.. code-block:: bash\n\n    $ grep WARNING place.log | grep -v \"bbox\" > place.warnings\n\nSiliconCompiler::\n\n    task.set('task', 'openroad', 'regex', 'place', '0', 'warnings',\n             [\"WARNING\", \"-v bbox\"])\n\nThe \"errors\" and \"warnings\" suffixes are special cases. When set,\nthe number of matches found for these regexes will be added to the\nerrors and warnings metrics for the task, respectively. This will\nalso cause the logfile to be added to the :keypath:`tool, <tool>,\ntask, <task>, report` parameter for those metrics, if not already present.","example":["cli: -tool_task_regex 'openroad place errors \"'-v ERROR'\"'","api: task.set('tool', 'openroad', 'task', 'place', 'regex', 'errors', '-v ERROR')"],"defvalue":[]},"tool,default,task,default,report,default":{"type":"[file]","scope":"job","pernode":"required","switch":["-tool_task_report 'tool task metric <file>'"],"shorthelp":"Task: metric report files","help":"List of report files associated with a specific 'metric'. The file path\nspecified is relative to the run directory of the current task.","hashalgo":"sha256","example":["cli: -tool_task_report 'openroad place holdtns \"place 0 place.log\"'","api: task.set('tool', 'openroad', 'task', 'place', 'report', 'holdtns', 'place.log', step='place', index='0')"]},"tool,default,task,default,require":{"type":"{str}","scope":"job","pernode":"optional","switch":["-tool_task_require 'tool task <str>'"],"shorthelp":"Task: parameter requirements","help":"List of keypaths to required task parameters. The list is used\nby :meth:`.Project.check_manifest()` to verify that all parameters have been set up\nbefore step execution begins.","example":["cli: -tool_task_require 'openroad cts design'","api: task.set('tool', 'openroad', 'task', 'cts', 'require', 'design')"],"defvalue":[]},"tool,default,task,default,sbom,default":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_sbom 'tool version <file>'"],"shorthelp":"Tool: software BOM","help":"Paths to software bill of material (SBOM) document file of the tool\nspecified on a per version basis. The SBOM includes critical\npackage information about the tool including the list of included\ncomponents, licenses, and copyright. The SBOM file is generally\nprovided as in a a standardized open data format such as SPDX.","hashalgo":"sha256","example":["cli: -tool_sbom 'yosys 1.0.1 ys_sbom.json'","api: task.set('tool', 'yosys', 'sbom', '1.0', 'ys_sbom.json')"],"defvalue":[]},"tool,default,task,default,script":{"type":"[file]","scope":"job","pernode":"optional","switch":["-tool_task_script 'tool task <file>'"],"shorthelp":"Task: entry script","help":"Path to the entry script called by the executable specified\non a per task and per step basis.","hashalgo":"sha256","example":["cli: -tool_task_script 'yosys syn syn.tcl'","api: task.set('tool', 'yosys', 'task', 'syn_asic', 'script', 'syn.tcl')"],"defvalue":[]},"tool,default,task,default,stderr,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stderr_destination 'tool task <str>'"],"shorthelp":"Task: destination for stderr","help":"Defines where to direct the output generated over stderr.\nSupported options are:\nnone: the stream generated to STDERR is ignored\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>","example":["cli: -tool_task_stderr_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stderr,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stderr_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stderr","help":"Specifies the file extension for the content redirected from stderr.","example":["cli: -tool_task_stderr_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,destination":{"type":"<log,none,output>","scope":"job","pernode":"optional","switch":["-tool_task_stdout_destination 'tool task <str>'"],"shorthelp":"Task: destination for stdout","help":"Defines where to direct the output generated over stdout.\nSupported options are:\nnone: the stream generated to STDOUT is ignored.\nlog: the generated stream is stored in <step>.<suffix>; if not in quiet mode,\nit is additionally dumped to the display.\noutput: the generated stream is stored in outputs/<design>.<suffix>.","example":["cli: -tool_task_stdout_destination 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', 'log')"],"defvalue":"log"},"tool,default,task,default,stdout,suffix":{"type":"str","scope":"job","pernode":"optional","switch":["-tool_task_stdout_suffix 'tool task <str>'"],"shorthelp":"Task: file suffix for redirected stdout","help":"Specifies the file extension for the content redirected from stdout.","example":["cli: -tool_task_stdout_suffix 'ghdl import log'","api: task.set('tool', 'ghdl', 'task', 'import', 'stdout', 'suffix', 'log')"],"defvalue":"log"},"tool,default,task,default,threads":{"type":"int<1..>","scope":"job","pernode":"optional","switch":["-tool_task_threads 'tool task <int>'"],"shorthelp":"Task: thread parallelism","help":"Thread parallelism to use for execution specified on a per task and per\nstep basis. If not specified, SC queries the operating system and sets\nthe threads based on the maximum thread count supported by the\nhardware.","example":["cli: -tool_task_threads 'magic drc 64'","api: task.set('tool', 'magic', 'task', 'drc', 'threads', '64')"],"defvalue":null},"tool,default,task,default,vendor":{"type":"str","scope":"job","pernode":"never","switch":["-tool_vendor 'tool <str>'"],"shorthelp":"Tool: vendor","help":"Name of the tool vendor. Parameter can be used to set vendor\nspecific technology variables in the PDK and libraries. For\nopen source projects, the project name should be used in\nplace of vendor.","example":["cli: -tool_vendor 'yosys yosys'","api: task.set('tool', 'yosys', 'vendor', 'yosys')"],"defvalue":null},"tool,default,task,default,version":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_version 'tool <str>'"],"shorthelp":"Tool: version","help":"List of acceptable versions of the tool executable to be used. Each\nentry in this list must be a version specifier as described by Python\n`PEP-440 <https://peps.python.org/pep-0440/#version-specifiers>`_.\nDuring task execution, the tool is called with the 'vswitch' to\ncheck the runtime executable version. If the version of the system\nexecutable is not allowed by any of the specifiers in 'version',\nthen the job is halted pre-execution. For backwards compatibility,\nentries that do not conform to the standard will be interpreted as a\nversion with an '==' specifier. This check can be disabled by\nsetting :keypath:`option,novercheck` to True.","example":["cli: -tool_version 'openroad >=v2.0'","api: task.set('tool', 'openroad', 'version', '>=v2.0')"],"defvalue":[]},"tool,default,task,default,vswitch":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_vswitch 'tool <str>'"],"shorthelp":"Tool: executable version switch","help":"Command line switch to use with executable used to print out\nthe version number. Common switches include ``-v``, ``-version``,\n``--version``. Some tools may require extra flags to run in batch mode.","example":["cli: -tool_vswitch 'openroad -version'","api: task.set('tool', 'openroad', 'vswitch', '-version')"],"defvalue":[]},"tool,default,task,default,warningoff":{"type":"[str]","scope":"job","pernode":"optional","switch":["-tool_task_warningoff 'tool task <str>'"],"shorthelp":"Task: warning filter","help":"A list of tool warnings for which printing should be suppressed.\nGenerally this is done on a per design basis after review has\ndetermined that warning can be safely ignored The code for turning\noff warnings can be found in the specific task reference manual.","example":["cli: -tool_task_warningoff 'verilator lint COMBDLY'","api: task.set('tool', 'verilator', 'task', 'lint', 'warningoff', 'COMBDLY')"],"defvalue":[]}}},"Design":{"module":"siliconcompiler.design","class":"siliconcompiler.design.Design","description":"Schema for a 'design'.","parameters":{"dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"deps":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"List of object dependencies","help":"List of named object dependencies included via add_dep().","lock":true,"defvalue":[]},"fileset,default,define":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro definitions","help":"Defines macros at compile time for design languages that support\npreprocessing, such as Verilog, C, and C++. The macro format is\nis `MACRONAME[=value]`, where [=value] is optional.","example":["api: design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')"],"defvalue":[]},"fileset,default,depfileset":{"type":"[(str,str)]","scope":"global","pernode":"never","shorthelp":"Design dependency fileset","help":"Sets the mapping for dependency filesets.","example":["api: design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))"],"defvalue":[]},"fileset,default,file,default":{"type":"[file]","scope":"global","pernode":"never","shorthelp":"Fileset files","help":"List of files grouped as a named set ('fileset'). The exact names of\nfiletypes and filesets must match the names used in tasks\ncalled during flowgraph execution. The files are processed in\nthe order specified by the ordered file list.","copy":true,"hashalgo":"sha256","example":["api: schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')","api: schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')"],"defvalue":[]},"fileset,default,idir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Include file search paths","help":"Include paths specify directories to scan for header files during\ncompilation. If multiple paths are provided, they are searched\nin the order given.","copy":true,"hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'idir', './rtl')","api: design.set('fileset', 'testbench', 'idir', '/testbench')"],"defvalue":[]},"fileset,default,lib":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Design libraries to include","help":"Specifies libraries to use during compilation. The compiler searches for\nlibrary in the compiler standard library paths and in the\npaths specified by :keypath:`Design,fileset,<fileset>,libdir` parameter.","example":["api: design.set('fileset', 'rtl', 'lib', 'mylib')"],"defvalue":[]},"fileset,default,libdir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Library search paths","help":"Specifies directories to scan for libraries provided with the\n:keypath:`Design,fileset,<fileset>,lib` parameter. If multiple paths are provided,\nthey are searched based on the order of the libdir list.","copy":true,"hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'libdir', '/usr/lib')"],"defvalue":[]},"fileset,default,param,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Design parameters","help":"Sets a named parameter to a string value. The value is limited to basic\ndata literals. The types of parameters and values supported is tightly\ncoupled to tools being used. For example, in Verilog only integer\nliterals (64'h4, 2'b0, 4) and strings are supported.","example":["api: design.set('fileset', 'rtl', 'param', 'N', '64')"],"defvalue":null},"fileset,default,topmodule":{"type":"str","scope":"global","pernode":"never","shorthelp":"Top module name","help":"Name of top module specified on a per fileset basis.","example":["api: design.set('fileset', 'rtl', 'topmodule', 'mytop')","api: design.set('fileset', 'testbench', 'topmodule', 'tb')"],"defvalue":null},"fileset,default,undefine":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro undefine","help":"Undefines a macro that may have been previously defined via the\ncompiler, options, or header files.","example":["api: design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')"],"defvalue":[]},"package,author,default,email":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_email 'userid <str>'"],"shorthelp":"Package: author email","help":"Package author email provided with full name as key and\nemail as value.","example":["cli: -package_author_email 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'email', 'wiley@acme.com')"],"defvalue":null},"package,author,default,name":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_name 'userid <str>'"],"shorthelp":"Package: author name","help":"Package author name provided with full name as key and\nname as value.","example":["cli: -package_author_name 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'name', 'wiley@acme.com')"],"defvalue":null},"package,author,default,organization":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_organization 'userid <str>'"],"shorthelp":"Package: author organization","help":"Package author organization provided with full name as key and\norganization as value.","example":["cli: -package_author_organization 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'organization', 'wiley@acme.com')"],"defvalue":null},"package,description":{"type":"str","scope":"global","pernode":"never","switch":["-package_description <str>"],"shorthelp":"Package: description","help":"Package short one line description for package\nmanagers and summary reports.","example":["cli: -package_description 'Yet another cpu'","api: schema.set('description', 'Yet another cpu')"],"defvalue":null},"package,doc,datasheet":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_datasheet <file>"],"shorthelp":"Package: datasheet document","help":"Package list of datasheet documents.","hashalgo":"sha256","example":["cli: -package_doc_datasheet datasheet.pdf","api: schema.set('doc', 'datasheet', 'datasheet.pdf')"],"defvalue":[]},"package,doc,quickstart":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_quickstart <file>"],"shorthelp":"Package: quickstart document","help":"Package list of quickstart documents.","hashalgo":"sha256","example":["cli: -package_doc_quickstart quickstart.pdf","api: schema.set('doc', 'quickstart', 'quickstart.pdf')"],"defvalue":[]},"package,doc,reference":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_reference <file>"],"shorthelp":"Package: reference document","help":"Package list of reference documents.","hashalgo":"sha256","example":["cli: -package_doc_reference reference.pdf","api: schema.set('doc', 'reference', 'reference.pdf')"],"defvalue":[]},"package,doc,releasenotes":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_releasenotes <file>"],"shorthelp":"Package: releasenotes document","help":"Package list of releasenotes documents.","hashalgo":"sha256","example":["cli: -package_doc_releasenotes releasenotes.pdf","api: schema.set('doc', 'releasenotes', 'releasenotes.pdf')"],"defvalue":[]},"package,doc,signoff":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_signoff <file>"],"shorthelp":"Package: signoff document","help":"Package list of signoff documents.","hashalgo":"sha256","example":["cli: -package_doc_signoff signoff.pdf","api: schema.set('doc', 'signoff', 'signoff.pdf')"],"defvalue":[]},"package,doc,testplan":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_testplan <file>"],"shorthelp":"Package: testplan document","help":"Package list of testplan documents.","hashalgo":"sha256","example":["cli: -package_doc_testplan testplan.pdf","api: schema.set('doc', 'testplan', 'testplan.pdf')"],"defvalue":[]},"package,doc,tutorial":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_tutorial <file>"],"shorthelp":"Package: tutorial document","help":"Package list of tutorial documents.","hashalgo":"sha256","example":["cli: -package_doc_tutorial tutorial.pdf","api: schema.set('doc', 'tutorial', 'tutorial.pdf')"],"defvalue":[]},"package,doc,userguide":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_userguide <file>"],"shorthelp":"Package: userguide document","help":"Package list of userguide documents.","hashalgo":"sha256","example":["cli: -package_doc_userguide userguide.pdf","api: schema.set('doc', 'userguide', 'userguide.pdf')"],"defvalue":[]},"package,license":{"type":"[str]","scope":"global","pernode":"never","switch":["-package_license <str>"],"shorthelp":"Package: license identifiers","help":"Package list of SPDX license identifiers.","example":["cli: -package_license 'Apache-2.0'","api: schema.set('license', 'Apache-2.0')"],"defvalue":[]},"package,licensefile":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_licensefile <file>"],"shorthelp":"Package: license files","help":"Package list of license files for to be\napplied in cases when a SPDX identifier is not available.\n(eg. proprietary licenses).","hashalgo":"sha256","example":["cli: -package_licensefile './LICENSE'","api: schema.set('licensefile', './LICENSE')"],"defvalue":[]},"package,vendor":{"type":"str","scope":"global","pernode":"never","switch":["-package_vendor <str>"],"shorthelp":"Package: vendor","help":"Package vendor.","example":["cli: -package_vendor acme","api: schema.set('vendor', 'acme')"],"defvalue":null},"package,version":{"type":"str","scope":"global","pernode":"never","switch":["-package_version <str>"],"shorthelp":"Package: version","help":"Package version. Can be a branch, tag, commit hash,\nor a semver compatible version.","example":["cli: -package_version 1.0","api: schema.set('version', '1.0')"],"defvalue":null}}},"StdCellLibrary":{"module":"siliconcompiler.library","class":"siliconcompiler.library.StdCellLibrary","description":"A class for managing standard cell library schemas.","parameters":{"asic,aprfileset":{"type":"{str}","scope":"global","pernode":"never","shorthelp":"ASIC: map of filesets to APR files","help":"Map between filesets and automated place and route tool files.","example":["api: schema.set('asic', 'aprfileset', 'model.lef')"],"defvalue":[]},"asic,cells,antenna":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: antenna cell list","help":"Antenna diode cells, attached to nets to protect gate oxide from process induced charge damage.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'antenna', '*eco*')"],"defvalue":[]},"asic,cells,clkbuf":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: clkbuf cell list","help":"Clock buffers and inverters used to build the clock tree.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'clkbuf', '*eco*')"],"defvalue":[]},"asic,cells,clkgate":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: clkgate cell list","help":"Integrated clock gating cells, used to stop the clock to a bank of registers and save dynamic power.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'clkgate', '*eco*')"],"defvalue":[]},"asic,cells,clklogic":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: clklogic cell list","help":"The remaining clock network cells, such as clock muxes and dividers. Grouped with clkbuf and clkgate as cells reserved for the clock tree.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'clklogic', '*eco*')"],"defvalue":[]},"asic,cells,decap":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: decap cell list","help":"Decoupling capacitor cells, placed into otherwise unused placement sites to add on-chip supply capacitance and limit dynamic IR drop.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'decap', '*eco*')"],"defvalue":[]},"asic,cells,dontuse":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: dontuse cell list","help":"Cells that must never be picked by synthesis or place and route, for example cells that are poorly characterized or reserved by the foundry.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'dontuse', '*eco*')"],"defvalue":[]},"asic,cells,endcap":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: endcap cell list","help":"Boundary cells placed at the ends of the placement rows to terminate them legally.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'endcap', '*eco*')"],"defvalue":[]},"asic,cells,filler":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: filler cell list","help":"Cells with no logical function, placed into unused placement sites to keep the rows continuous and satisfy implant and well continuity rules.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'filler', '*eco*')"],"defvalue":[]},"asic,cells,hold":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: hold cell list","help":"Delay cells used to repair hold time violations. Held out of optimization except in the steps that fix hold.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'hold', '*eco*')"],"defvalue":[]},"asic,cells,physicalonly":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: physicalonly cell list","help":"Cells that exist only in the physical design and carry no logical function. They are stripped from the netlists handed to LEC and LVS; filler, decap, tap and endcap cells are normally listed here as well.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'physicalonly', '*eco*')"],"defvalue":[]},"asic,cells,tap":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: tap cell list","help":"Well tap cells, tying the well and substrate to the supply rails at the maximum spacing the process allows in order to prevent latch-up.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'tap', '*eco*')"],"defvalue":[]},"asic,cells,tie":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: tie cell list","help":"Tie-high and tie-low cells, used to drive a constant one or zero into inputs that cannot be wired directly to the power or ground rails.\n\nCells can be named explicitly or matched with wildcard patterns, as\nin the example below which selects every cell with 'eco' in its\nname.","example":["api: schema.set('asic', 'cells', 'tie', '*eco*')"],"defvalue":[]},"asic,libcornerfileset,default,default":{"type":"{str}","scope":"global","pernode":"never","shorthelp":"ASIC: map of filesets to timing corners","help":"Map between filesets and timing corners.","example":["api: schema.set('asic', 'libcornerfileset', 'slow', 'nldm', 'timing.slow')"],"defvalue":[]},"asic,pdk":{"type":"str","scope":"global","pernode":"never","shorthelp":"ASIC: ","help":"","example":["api: schema.set('asic', 'libcornerfileset', 'slow', 'nldm', 'timing.slow')"],"defvalue":null},"asic,pexcornerfileset,default":{"type":"{str}","scope":"global","pernode":"never","shorthelp":"ASIC: map of filesets to pex corners","help":"Map between filesets and pex corners.","example":["api: schema.set('asic', 'pexcornerfileset', 'slow', 'timing.slow')"],"defvalue":[]},"asic,site":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"ASIC: library sites","help":"Site names for a given library architecture.","example":["api: schema.set('asic', 'site', 'Site_12T')"],"defvalue":[]},"asic,stackup":{"type":"{str}","scope":"global","pernode":"never","shorthelp":"ASIC: ","help":"Set of supported stackups","example":["api: schema.set('asic', 'libcornerfileset', 'slow', 'nldm', 'timing.slow')"],"defvalue":[]},"dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"deps":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"List of object dependencies","help":"List of named object dependencies included via add_dep().","lock":true,"defvalue":[]},"fileset,default,define":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro definitions","help":"Defines macros at compile time for design languages that support\npreprocessing, such as Verilog, C, and C++. The macro format is\nis `MACRONAME[=value]`, where [=value] is optional.","example":["api: design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')"],"defvalue":[]},"fileset,default,depfileset":{"type":"[(str,str)]","scope":"global","pernode":"never","shorthelp":"Design dependency fileset","help":"Sets the mapping for dependency filesets.","example":["api: design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))"],"defvalue":[]},"fileset,default,file,default":{"type":"[file]","scope":"global","pernode":"never","shorthelp":"Fileset files","help":"List of files grouped as a named set ('fileset'). The exact names of\nfiletypes and filesets must match the names used in tasks\ncalled during flowgraph execution. The files are processed in\nthe order specified by the ordered file list.","hashalgo":"sha256","example":["api: schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')","api: schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')"],"defvalue":[]},"fileset,default,idir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Include file search paths","help":"Include paths specify directories to scan for header files during\ncompilation. If multiple paths are provided, they are searched\nin the order given.","hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'idir', './rtl')","api: design.set('fileset', 'testbench', 'idir', '/testbench')"],"defvalue":[]},"fileset,default,lib":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Design libraries to include","help":"Specifies libraries to use during compilation. The compiler searches for\nlibrary in the compiler standard library paths and in the\npaths specified by :keypath:`Design,fileset,<fileset>,libdir` parameter.","example":["api: design.set('fileset', 'rtl', 'lib', 'mylib')"],"defvalue":[]},"fileset,default,libdir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Library search paths","help":"Specifies directories to scan for libraries provided with the\n:keypath:`Design,fileset,<fileset>,lib` parameter. If multiple paths are provided,\nthey are searched based on the order of the libdir list.","hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'libdir', '/usr/lib')"],"defvalue":[]},"fileset,default,param,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Design parameters","help":"Sets a named parameter to a string value. The value is limited to basic\ndata literals. The types of parameters and values supported is tightly\ncoupled to tools being used. For example, in Verilog only integer\nliterals (64'h4, 2'b0, 4) and strings are supported.","example":["api: design.set('fileset', 'rtl', 'param', 'N', '64')"],"defvalue":null},"fileset,default,topmodule":{"type":"str","scope":"global","pernode":"never","shorthelp":"Top module name","help":"Name of top module specified on a per fileset basis.","example":["api: design.set('fileset', 'rtl', 'topmodule', 'mytop')","api: design.set('fileset', 'testbench', 'topmodule', 'tb')"],"defvalue":null},"fileset,default,undefine":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro undefine","help":"Undefines a macro that may have been previously defined via the\ncompiler, options, or header files.","example":["api: design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')"],"defvalue":[]},"package,author,default,email":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_email 'userid <str>'"],"shorthelp":"Package: author email","help":"Package author email provided with full name as key and\nemail as value.","example":["cli: -package_author_email 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'email', 'wiley@acme.com')"],"defvalue":null},"package,author,default,name":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_name 'userid <str>'"],"shorthelp":"Package: author name","help":"Package author name provided with full name as key and\nname as value.","example":["cli: -package_author_name 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'name', 'wiley@acme.com')"],"defvalue":null},"package,author,default,organization":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_organization 'userid <str>'"],"shorthelp":"Package: author organization","help":"Package author organization provided with full name as key and\norganization as value.","example":["cli: -package_author_organization 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'organization', 'wiley@acme.com')"],"defvalue":null},"package,description":{"type":"str","scope":"global","pernode":"never","switch":["-package_description <str>"],"shorthelp":"Package: description","help":"Package short one line description for package\nmanagers and summary reports.","example":["cli: -package_description 'Yet another cpu'","api: schema.set('description', 'Yet another cpu')"],"defvalue":null},"package,doc,datasheet":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_datasheet <file>"],"shorthelp":"Package: datasheet document","help":"Package list of datasheet documents.","hashalgo":"sha256","example":["cli: -package_doc_datasheet datasheet.pdf","api: schema.set('doc', 'datasheet', 'datasheet.pdf')"],"defvalue":[]},"package,doc,quickstart":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_quickstart <file>"],"shorthelp":"Package: quickstart document","help":"Package list of quickstart documents.","hashalgo":"sha256","example":["cli: -package_doc_quickstart quickstart.pdf","api: schema.set('doc', 'quickstart', 'quickstart.pdf')"],"defvalue":[]},"package,doc,reference":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_reference <file>"],"shorthelp":"Package: reference document","help":"Package list of reference documents.","hashalgo":"sha256","example":["cli: -package_doc_reference reference.pdf","api: schema.set('doc', 'reference', 'reference.pdf')"],"defvalue":[]},"package,doc,releasenotes":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_releasenotes <file>"],"shorthelp":"Package: releasenotes document","help":"Package list of releasenotes documents.","hashalgo":"sha256","example":["cli: -package_doc_releasenotes releasenotes.pdf","api: schema.set('doc', 'releasenotes', 'releasenotes.pdf')"],"defvalue":[]},"package,doc,signoff":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_signoff <file>"],"shorthelp":"Package: signoff document","help":"Package list of signoff documents.","hashalgo":"sha256","example":["cli: -package_doc_signoff signoff.pdf","api: schema.set('doc', 'signoff', 'signoff.pdf')"],"defvalue":[]},"package,doc,testplan":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_testplan <file>"],"shorthelp":"Package: testplan document","help":"Package list of testplan documents.","hashalgo":"sha256","example":["cli: -package_doc_testplan testplan.pdf","api: schema.set('doc', 'testplan', 'testplan.pdf')"],"defvalue":[]},"package,doc,tutorial":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_tutorial <file>"],"shorthelp":"Package: tutorial document","help":"Package list of tutorial documents.","hashalgo":"sha256","example":["cli: -package_doc_tutorial tutorial.pdf","api: schema.set('doc', 'tutorial', 'tutorial.pdf')"],"defvalue":[]},"package,doc,userguide":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_userguide <file>"],"shorthelp":"Package: userguide document","help":"Package list of userguide documents.","hashalgo":"sha256","example":["cli: -package_doc_userguide userguide.pdf","api: schema.set('doc', 'userguide', 'userguide.pdf')"],"defvalue":[]},"package,license":{"type":"[str]","scope":"global","pernode":"never","switch":["-package_license <str>"],"shorthelp":"Package: license identifiers","help":"Package list of SPDX license identifiers.","example":["cli: -package_license 'Apache-2.0'","api: schema.set('license', 'Apache-2.0')"],"defvalue":[]},"package,licensefile":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_licensefile <file>"],"shorthelp":"Package: license files","help":"Package list of license files for to be\napplied in cases when a SPDX identifier is not available.\n(eg. proprietary licenses).","hashalgo":"sha256","example":["cli: -package_licensefile './LICENSE'","api: schema.set('licensefile', './LICENSE')"],"defvalue":[]},"package,vendor":{"type":"str","scope":"global","pernode":"never","switch":["-package_vendor <str>"],"shorthelp":"Package: vendor","help":"Package vendor.","example":["cli: -package_vendor acme","api: schema.set('vendor', 'acme')"],"defvalue":null},"package,version":{"type":"str","scope":"global","pernode":"never","switch":["-package_version <str>"],"shorthelp":"Package: version","help":"Package version. Can be a branch, tag, commit hash,\nor a semver compatible version.","example":["cli: -package_version 1.0","api: schema.set('version', '1.0')"],"defvalue":null}}},"PDK":{"module":"siliconcompiler.pdk","class":"siliconcompiler.pdk.PDK","description":"A schema for managing and validating Process Design Kit (PDK) configurations.","parameters":{"dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"deps":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"List of object dependencies","help":"List of named object dependencies included via add_dep().","lock":true,"defvalue":[]},"fileset,default,define":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro definitions","help":"Defines macros at compile time for design languages that support\npreprocessing, such as Verilog, C, and C++. The macro format is\nis `MACRONAME[=value]`, where [=value] is optional.","example":["api: design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')"],"defvalue":[]},"fileset,default,depfileset":{"type":"[(str,str)]","scope":"global","pernode":"never","shorthelp":"Design dependency fileset","help":"Sets the mapping for dependency filesets.","example":["api: design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))"],"defvalue":[]},"fileset,default,file,default":{"type":"[file]","scope":"global","pernode":"never","shorthelp":"Fileset files","help":"List of files grouped as a named set ('fileset'). The exact names of\nfiletypes and filesets must match the names used in tasks\ncalled during flowgraph execution. The files are processed in\nthe order specified by the ordered file list.","hashalgo":"sha256","example":["api: schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')","api: schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')"],"defvalue":[]},"fileset,default,idir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Include file search paths","help":"Include paths specify directories to scan for header files during\ncompilation. If multiple paths are provided, they are searched\nin the order given.","hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'idir', './rtl')","api: design.set('fileset', 'testbench', 'idir', '/testbench')"],"defvalue":[]},"fileset,default,lib":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Design libraries to include","help":"Specifies libraries to use during compilation. The compiler searches for\nlibrary in the compiler standard library paths and in the\npaths specified by :keypath:`Design,fileset,<fileset>,libdir` parameter.","example":["api: design.set('fileset', 'rtl', 'lib', 'mylib')"],"defvalue":[]},"fileset,default,libdir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Library search paths","help":"Specifies directories to scan for libraries provided with the\n:keypath:`Design,fileset,<fileset>,lib` parameter. If multiple paths are provided,\nthey are searched based on the order of the libdir list.","hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'libdir', '/usr/lib')"],"defvalue":[]},"fileset,default,param,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Design parameters","help":"Sets a named parameter to a string value. The value is limited to basic\ndata literals. The types of parameters and values supported is tightly\ncoupled to tools being used. For example, in Verilog only integer\nliterals (64'h4, 2'b0, 4) and strings are supported.","example":["api: design.set('fileset', 'rtl', 'param', 'N', '64')"],"defvalue":null},"fileset,default,topmodule":{"type":"str","scope":"global","pernode":"never","shorthelp":"Top module name","help":"Name of top module specified on a per fileset basis.","example":["api: design.set('fileset', 'rtl', 'topmodule', 'mytop')","api: design.set('fileset', 'testbench', 'topmodule', 'tb')"],"defvalue":null},"fileset,default,undefine":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro undefine","help":"Undefines a macro that may have been previously defined via the\ncompiler, options, or header files.","example":["api: design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')"],"defvalue":[]},"package,author,default,email":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_email 'userid <str>'"],"shorthelp":"Package: author email","help":"Package author email provided with full name as key and\nemail as value.","example":["cli: -package_author_email 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'email', 'wiley@acme.com')"],"defvalue":null},"package,author,default,name":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_name 'userid <str>'"],"shorthelp":"Package: author name","help":"Package author name provided with full name as key and\nname as value.","example":["cli: -package_author_name 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'name', 'wiley@acme.com')"],"defvalue":null},"package,author,default,organization":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_organization 'userid <str>'"],"shorthelp":"Package: author organization","help":"Package author organization provided with full name as key and\norganization as value.","example":["cli: -package_author_organization 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'organization', 'wiley@acme.com')"],"defvalue":null},"package,description":{"type":"str","scope":"global","pernode":"never","switch":["-package_description <str>"],"shorthelp":"Package: description","help":"Package short one line description for package\nmanagers and summary reports.","example":["cli: -package_description 'Yet another cpu'","api: schema.set('description', 'Yet another cpu')"],"defvalue":null},"package,doc,datasheet":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_datasheet <file>"],"shorthelp":"Package: datasheet document","help":"Package list of datasheet documents.","hashalgo":"sha256","example":["cli: -package_doc_datasheet datasheet.pdf","api: schema.set('doc', 'datasheet', 'datasheet.pdf')"],"defvalue":[]},"package,doc,quickstart":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_quickstart <file>"],"shorthelp":"Package: quickstart document","help":"Package list of quickstart documents.","hashalgo":"sha256","example":["cli: -package_doc_quickstart quickstart.pdf","api: schema.set('doc', 'quickstart', 'quickstart.pdf')"],"defvalue":[]},"package,doc,reference":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_reference <file>"],"shorthelp":"Package: reference document","help":"Package list of reference documents.","hashalgo":"sha256","example":["cli: -package_doc_reference reference.pdf","api: schema.set('doc', 'reference', 'reference.pdf')"],"defvalue":[]},"package,doc,releasenotes":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_releasenotes <file>"],"shorthelp":"Package: releasenotes document","help":"Package list of releasenotes documents.","hashalgo":"sha256","example":["cli: -package_doc_releasenotes releasenotes.pdf","api: schema.set('doc', 'releasenotes', 'releasenotes.pdf')"],"defvalue":[]},"package,doc,signoff":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_signoff <file>"],"shorthelp":"Package: signoff document","help":"Package list of signoff documents.","hashalgo":"sha256","example":["cli: -package_doc_signoff signoff.pdf","api: schema.set('doc', 'signoff', 'signoff.pdf')"],"defvalue":[]},"package,doc,testplan":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_testplan <file>"],"shorthelp":"Package: testplan document","help":"Package list of testplan documents.","hashalgo":"sha256","example":["cli: -package_doc_testplan testplan.pdf","api: schema.set('doc', 'testplan', 'testplan.pdf')"],"defvalue":[]},"package,doc,tutorial":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_tutorial <file>"],"shorthelp":"Package: tutorial document","help":"Package list of tutorial documents.","hashalgo":"sha256","example":["cli: -package_doc_tutorial tutorial.pdf","api: schema.set('doc', 'tutorial', 'tutorial.pdf')"],"defvalue":[]},"package,doc,userguide":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_userguide <file>"],"shorthelp":"Package: userguide document","help":"Package list of userguide documents.","hashalgo":"sha256","example":["cli: -package_doc_userguide userguide.pdf","api: schema.set('doc', 'userguide', 'userguide.pdf')"],"defvalue":[]},"package,license":{"type":"[str]","scope":"global","pernode":"never","switch":["-package_license <str>"],"shorthelp":"Package: license identifiers","help":"Package list of SPDX license identifiers.","example":["cli: -package_license 'Apache-2.0'","api: schema.set('license', 'Apache-2.0')"],"defvalue":[]},"package,licensefile":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_licensefile <file>"],"shorthelp":"Package: license files","help":"Package list of license files for to be\napplied in cases when a SPDX identifier is not available.\n(eg. proprietary licenses).","hashalgo":"sha256","example":["cli: -package_licensefile './LICENSE'","api: schema.set('licensefile', './LICENSE')"],"defvalue":[]},"package,vendor":{"type":"str","scope":"global","pernode":"never","switch":["-package_vendor <str>"],"shorthelp":"Package: vendor","help":"Package vendor.","example":["cli: -package_vendor acme","api: schema.set('vendor', 'acme')"],"defvalue":null},"package,version":{"type":"str","scope":"global","pernode":"never","switch":["-package_version <str>"],"shorthelp":"Package: version","help":"Package version. Can be a branch, tag, commit hash,\nor a semver compatible version.","example":["cli: -package_version 1.0","api: schema.set('version', '1.0')"],"defvalue":null},"pdk,aprtechfileset,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_aprtech 'pdkname tool stackup libarch filetype <file>'"],"shorthelp":"PDK: APR technology files","help":"Filesets holding the technology files an APR tool needs to run DRC clean on\nthis process. The files live in the named filesets, so which filetypes are\naccepted is set by what a tool reads rather than by a fixed list. The place\nand route design rules for a process node are carried by a 'lef' format\ntechnology file, and a PDK is free to add the further files a given tool\nasks for, such as antenna, tracks, tapcell, viarules and em rules. Not every\nfileset in the list has to carry a technology LEF; splitting the tech LEF\nfrom the supporting files is common.","example":["cli: -pdk_aprtech 'asap7 openroad M10 12t lef tech.lef'","api: pdk.set('pdk', 'asap7', 'aprtech', 'openroad', 'M10', '12t', 'lef', 'tech.lef')"],"defvalue":[]},"pdk,d0":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-pdk_d0 'pdkname <float>'"],"shorthelp":"PDK: process defect density","help":"Process defect density (d0) expressed as random defects per cm^2. The\nvalue is used to calculate yield losses as a function of area, which in\nturn affects the chip full factory costs. Two yield models are\nsupported: Poisson (default), and Murphy. The Poisson based yield is\ncalculated as dy = exp(-area * d0/100). The Murphy based yield is\ncalculated as dy = ((1-exp(-area * d0/100))/(area * d0/100))^2.","example":["cli: -pdk_d0 'asap7 0.1'","api: pdk.set('pdk', 'asap7', 'd0', 0.1)"],"defvalue":null},"pdk,devmodelfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_devmodel 'pdkname tool simtype stackup <file>'"],"shorthelp":"PDK: device models","help":"List of filepaths to PDK device models for different simulation\npurposes and for different tools. Examples of device model types\ninclude spice, aging, electromigration, radiation. An example of a\n'spice' tool is xyce. Device models are specified on a per metal stack\nbasis. Process nodes with a single device model across all stacks will\nhave a unique parameter record per metal stack pointing to the same\ndevice model file. Device types and tools are dynamic entries\nthat depend on the tool setup and device technology. Pseudo-standardized\ndevice types include spice, em (electromigration), and aging.","example":["cli: -pdk_devmodel 'asap7 xyce spice M10 asap7.sp'","api: pdk.set('pdk', 'asap7', 'devmodelfileset', 'xyce', 'spice', 'M10', 'asap7.sp')"],"defvalue":[]},"pdk,displayfileset,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_display 'pdkname tool stackup <file>'"],"shorthelp":"PDK: display file","help":"Display configuration files describing colors and pattern schemes for\nall layers in the PDK. The display configuration file is entered on a\nstackup and tool basis.","example":["cli: -pdk_display 'asap7 klayout M10 display.lyt'","api: pdk.set('pdk', 'asap7', 'display', 'klayout', 'M10', 'display.cfg')"],"defvalue":[]},"pdk,drc,runsetfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_drc_runset 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: DRC runset files","help":"Runset files for DRC task.","example":["cli: -pdk_drc_runset 'asap7 magic M10 basic $PDK/drc.rs'","api: pdk.set('drc', 'runset', 'magic', 'M10', 'basic', '$PDK/drc.rs')"],"defvalue":[]},"pdk,drc,waiverfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_drc_waiver 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: DRC waiver files","help":"Waiver files for DRC task.","example":["cli: -pdk_drc_waiver 'asap7 magic M10 basic $PDK/drc.txt'","api: pdk.set('drc', 'waiver', 'magic', 'M10', 'basic', '$PDK/drc.txt')"],"defvalue":[]},"pdk,edgemargin":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-pdk_edgemargin 'pdkname <float>'"],"shorthelp":"PDK: wafer edge keep-out margin","help":"Keep-out distance/margin from the edge inwards. The edge\nis prone to chipping and need special treatment that preclude\nplacement of designs in this area. The edge value is used to\ncalculate effective units per wafer/panel and full factory cost.","unit":"mm","example":["cli: -pdk_edgemargin 'asap7 1'","api: pdk.set('pdk', 'asap7', 'edgemargin', 1)"],"defvalue":null},"pdk,erc,runsetfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_erc_runset 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: ERC runset files","help":"Runset files for ERC task.","example":["cli: -pdk_erc_runset 'asap7 magic M10 basic $PDK/erc.rs'","api: pdk.set('erc', 'runset', 'magic', 'M10', 'basic', '$PDK/erc.rs')"],"defvalue":[]},"pdk,erc,waiverfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_erc_waiver 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: ERC waiver files","help":"Waiver files for ERC task.","example":["cli: -pdk_erc_waiver 'asap7 magic M10 basic $PDK/erc.txt'","api: pdk.set('erc', 'waiver', 'magic', 'M10', 'basic', '$PDK/erc.txt')"],"defvalue":[]},"pdk,fill,runsetfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_fill_runset 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: FILL runset files","help":"Runset files for FILL task.","example":["cli: -pdk_fill_runset 'asap7 magic M10 basic $PDK/fill.rs'","api: pdk.set('fill', 'runset', 'magic', 'M10', 'basic', '$PDK/fill.rs')"],"defvalue":[]},"pdk,fill,waiverfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_fill_waiver 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: FILL waiver files","help":"Waiver files for FILL task.","example":["cli: -pdk_fill_waiver 'asap7 magic M10 basic $PDK/fill.txt'","api: pdk.set('fill', 'waiver', 'magic', 'M10', 'basic', '$PDK/fill.txt')"],"defvalue":[]},"pdk,foundry":{"type":"str","scope":"global","pernode":"never","switch":["-pdk_foundry 'pdkname <str>'"],"shorthelp":"PDK: foundry name","help":"Name of foundry corporation. Examples include intel, gf, tsmc,\nsamsung, skywater, virtual. The 'virtual' keyword is reserved for\nsimulated non-manufacturable processes.","example":["cli: -pdk_foundry 'asap7 virtual'","api: pdk.set('pdk', 'asap7', 'foundry', 'virtual')"],"defvalue":null},"pdk,layermapfileset,default,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_layermap 'pdkname tool src dst stackup <file>'"],"shorthelp":"PDK: layer map file","help":"Files describing input/output mapping for streaming layout data from\none format to another. A foundry PDK will include an official layer\nlist for all user entered and generated layers supported in the GDS\naccepted by the foundry for processing, but there is no standardized\nlayer definition format that can be read and written by all EDA tools.\nTo ensure mask layer matching, key/value type mapping files are needed\nto convert EDA databases to/from GDS and to convert between different\ntypes of EDA databases. Layer maps are specified on a per metal\nstackup basis. The 'src' and 'dst' can be names of SC supported tools\nor file formats (like 'gds').","example":["cli: -pdk_layermap 'asap7 klayout db gds M10 asap7.map'","api: pdk.set('pdk', 'asap7', 'layermap', 'klayout', 'db', 'gds', 'M10', 'asap7.map')"],"defvalue":[]},"pdk,lvs,runsetfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_lvs_runset 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: LVS runset files","help":"Runset files for LVS task.","example":["cli: -pdk_lvs_runset 'asap7 magic M10 basic $PDK/lvs.rs'","api: pdk.set('lvs', 'runset', 'magic', 'M10', 'basic', '$PDK/lvs.rs')"],"defvalue":[]},"pdk,lvs,waiverfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_lvs_waiver 'pdkname tool stackup name <file>'"],"shorthelp":"PDK: LVS waiver files","help":"Waiver files for LVS task.","example":["cli: -pdk_lvs_waiver 'asap7 magic M10 basic $PDK/lvs.txt'","api: pdk.set('lvs', 'waiver', 'magic', 'M10', 'basic', '$PDK/lvs.txt')"],"defvalue":[]},"pdk,maxlayer":{"type":"str","scope":"global","pernode":"never","switch":["-pdk_maxlayer 'pdk stackup <str>'"],"shorthelp":"PDK: maximum routing layer","help":"Maximum metal layer to be used for automated place and route\nspecified on a per stackup basis.","example":["cli: -pdk_maxlayer 'asap7 2MA4MB2MC M8'","api: pdk.set('pdk', 'asap7', 'maxlayer', 'MA4MB2MC', 'M8')"],"defvalue":null},"pdk,minlayer":{"type":"str","scope":"global","pernode":"never","switch":["-pdk_minlayer 'pdk stackup <str>'"],"shorthelp":"PDK: minimum routing layer","help":"Minimum metal layer to be used for automated place and route\nspecified on a per stackup basis.","example":["cli: -pdk_minlayer 'asap7 2MA4MB2MC M2'","api: pdk.set('pdk', 'asap7', 'minlayer', '2MA4MB2MC', 'M2')"],"defvalue":null},"pdk,node":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-pdk_node 'pdkname <float>'"],"shorthelp":"PDK: process node","help":"Approximate relative minimum dimension of the process target specified\nin nanometers. The parameter is required for flows and tools that\nleverage the value to drive technology dependent synthesis and APR\noptimization. Node examples include 180, 130, 90, 65, 45, 32, 22 14,\n10, 7, 5, 3.","unit":"nm","example":["cli: -pdk_node 'asap7 130'","api: pdk.set('pdk', 'asap7', 'node', 130)"],"defvalue":null},"pdk,pexmodelfileset,default,default":{"type":"[str]","scope":"global","pernode":"never","switch":["-pdk_pexmodel 'pdkname tool stackup corner <file>'"],"shorthelp":"PDK: parasitic TCAD models","help":"List of filepaths to PDK wire TCAD models used during automated\nsynthesis, APR, and signoff verification. Pexmodels are specified on\na per metal stack basis. Corner values depend on the process being\nused, but typically include nomenclature such as min, max, nominal.\nFor exact names, refer to the DRM. Pexmodels are generally not\nstandardized and specified on a per tool basis. An example of pexmodel\ntype is 'fastcap'.","example":["cli: -pdk_pexmodel 'asap7 fastcap M10 max wire.mod'","api: pdk.set('pdk', 'asap7', 'pexmodel', 'fastcap', 'M10', 'max', 'wire.mod')"],"defvalue":[]},"pdk,scribe":{"type":"(float,float)","scope":"global","pernode":"never","switch":["-pdk_scribe 'pdkname <(float,float)>'"],"shorthelp":"PDK: horizontal scribe line width","help":"Width of the horizontal and vertical scribe line used during die separation.\nThe process is generally completed using a mechanical saw, but can be\ndone through combinations of mechanical saws, lasers, wafer thinning,\nand chemical etching in more advanced technologies. The value is used\nto calculate effective dies per wafer and full factory cost.","unit":"mm","example":["cli: -pdk_scribe 'asap7 (0.1,0.1)'","api: pdk.set('pdk', 'asap7', 'scribe', (0.1, 0.1))"],"defvalue":null},"pdk,stackup":{"type":"str","scope":"global","pernode":"never","switch":["-pdk_stackup 'pdkname <str>'"],"shorthelp":"PDK: metal stackups","help":"List of all metal stackups offered in the process node. Older process\nnodes may only offer a single metal stackup, while advanced nodes\noffer a large but finite list of metal stacks with varying combinations\nof metal line pitches and thicknesses. Stackup naming is unique to a\nfoundry, but is generally a long string or code. For example, a 10\nmetal stackup with two 1x wide, four 2x wide, and 4x wide metals,\nmight be identified as 2MA4MB2MC, where MA, MB, and MC denote wiring\nlayers with different properties (thickness, width, space). Each\nstackup will come with its own set of routing technology files and\nparasitic models specified in the pdk_pexmodel and pdk_aprtech\nparameters.","example":["cli: -pdk_stackup 'asap7 2MA4MB2MC'","api: pdk.add('pdk', 'asap7', 'stackup', '2MA4MB2MC')"],"defvalue":null},"pdk,unitcost":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-pdk_unitcost 'pdkname <float>'"],"shorthelp":"PDK: unit cost","help":"Raw cost per unit shipped by the factory, not accounting for yield\nloss.","unit":"USD","example":["cli: -pdk_unitcost 'asap7 10000'","api: pdk.set('pdk', 'asap7', 'unitcost', 10000)"],"defvalue":null},"pdk,wafersize":{"type":"float<0.0..>","scope":"global","pernode":"never","switch":["-pdk_wafersize 'pdkname <float>'"],"shorthelp":"PDK: wafer size","help":"Wafer diameter used in wafer based manufacturing process.\nThe standard diameter for leading edge manufacturing is 300mm. For\nolder process technologies and specialty fabs, smaller diameters\nsuch as 200, 150, 125, and 100 are common. The value is used to\ncalculate dies per wafer and full factory chip costs.","unit":"mm","example":["cli: -pdk_wafersize 'asap7 300'","api: pdk.set('pdk', 'asap7', 'wafersize', 300)"],"defvalue":null}}},"FPGADevice":{"module":"siliconcompiler.fpga","class":"siliconcompiler.fpga.FPGADevice","description":"A schema for configuring FPGA-related parameters.","parameters":{"dataroot,default,path":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory path","help":"Data directory path, this points the location where the data can be\nretrieved or accessed.\nAllowed roots:\n\n* ``/path/on/network/drive``\n* ``file:///path/on/network/drive``\n* ``git+https://github.com/xyz/xyz``\n* ``git://github.com/xyz/xyz``\n* ``git+ssh://github.com/xyz/xyz``\n* ``ssh://github.com/xyz/xyz``\n* ``https://github.com/xyz/xyz/archive``\n* ``https://zeroasic.com/xyz.tar.gz``\n* ``github://siliconcompiler/lambdapdk/v1.0/asap7.tar.gz``\n* ``gitlab://gitlab.com/xyz/xyz/v1.0/asset.tar.gz``\n* ``s3://bucket/xyz/asset.tar.gz``\n* ``python://siliconcompiler``\n* ``python://siliconcompiler/tools/openroad``","example":["api: project.set('dataroot', 'freepdk45_data', 'path', 'ssh://git@github.com/siliconcompiler/freepdk45/')"],"defvalue":null},"dataroot,default,tag":{"type":"str","scope":"global","pernode":"never","shorthelp":"Data directory reference tag/version","help":"Data directory reference tag. The meaning of the this tag depends on the\ncontext of the path.\nFor git, this can be a tag, branch, or commit id. For https this is the version\nof the file that will be downloaded.","example":["api: project.set('dataroot', 'freepdk45_data', 'tag', '07ec4aa')"],"defvalue":null},"deps":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"List of object dependencies","help":"List of named object dependencies included via add_dep().","lock":true,"defvalue":[]},"fileset,default,define":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro definitions","help":"Defines macros at compile time for design languages that support\npreprocessing, such as Verilog, C, and C++. The macro format is\nis `MACRONAME[=value]`, where [=value] is optional.","example":["api: design.set('fileset', 'rtl', 'define', 'CFG_TARGET=FPGA')"],"defvalue":[]},"fileset,default,depfileset":{"type":"[(str,str)]","scope":"global","pernode":"never","shorthelp":"Design dependency fileset","help":"Sets the mapping for dependency filesets.","example":["api: design.set('fileset', 'rtl', 'depfileset', ('lambdalib', 'rtl'))"],"defvalue":[]},"fileset,default,file,default":{"type":"[file]","scope":"global","pernode":"never","shorthelp":"Fileset files","help":"List of files grouped as a named set ('fileset'). The exact names of\nfiletypes and filesets must match the names used in tasks\ncalled during flowgraph execution. The files are processed in\nthe order specified by the ordered file list.","hashalgo":"sha256","example":["api: schema.set('fileset', 'rtl', 'file', 'verilog', 'mytop.v')","api: schema.set('fileset', 'testbench', 'file', 'verilog', 'tb.v')"],"defvalue":[]},"fileset,default,idir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Include file search paths","help":"Include paths specify directories to scan for header files during\ncompilation. If multiple paths are provided, they are searched\nin the order given.","hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'idir', './rtl')","api: design.set('fileset', 'testbench', 'idir', '/testbench')"],"defvalue":[]},"fileset,default,lib":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Design libraries to include","help":"Specifies libraries to use during compilation. The compiler searches for\nlibrary in the compiler standard library paths and in the\npaths specified by :keypath:`Design,fileset,<fileset>,libdir` parameter.","example":["api: design.set('fileset', 'rtl', 'lib', 'mylib')"],"defvalue":[]},"fileset,default,libdir":{"type":"[dir]","scope":"global","pernode":"never","shorthelp":"Library search paths","help":"Specifies directories to scan for libraries provided with the\n:keypath:`Design,fileset,<fileset>,lib` parameter. If multiple paths are provided,\nthey are searched based on the order of the libdir list.","hashalgo":"sha256","example":["api: design.set('fileset', 'rtl', 'libdir', '/usr/lib')"],"defvalue":[]},"fileset,default,param,default":{"type":"str","scope":"global","pernode":"never","shorthelp":"Design parameters","help":"Sets a named parameter to a string value. The value is limited to basic\ndata literals. The types of parameters and values supported is tightly\ncoupled to tools being used. For example, in Verilog only integer\nliterals (64'h4, 2'b0, 4) and strings are supported.","example":["api: design.set('fileset', 'rtl', 'param', 'N', '64')"],"defvalue":null},"fileset,default,topmodule":{"type":"str","scope":"global","pernode":"never","shorthelp":"Top module name","help":"Name of top module specified on a per fileset basis.","example":["api: design.set('fileset', 'rtl', 'topmodule', 'mytop')","api: design.set('fileset', 'testbench', 'topmodule', 'tb')"],"defvalue":null},"fileset,default,undefine":{"type":"[str]","scope":"global","pernode":"never","shorthelp":"Preprocessor macro undefine","help":"Undefines a macro that may have been previously defined via the\ncompiler, options, or header files.","example":["api: design.set('fileset', 'rtl', 'undefine', 'CFG_TARGET')"],"defvalue":[]},"fpga,lutsize":{"type":"int<1..>","scope":"global","pernode":"never","switch":["-fpga_lutsize 'partname <int>'"],"shorthelp":"FPGA: lutsize","help":"Specify the number of inputs in each lookup table (LUT) for the\nFPGA partname.  For architectures with fracturable LUTs, this is\nthe number of inputs of the unfractured LUT.","example":["cli: -fpga_lutsize 'fpga64k 4'","api: fpga.set('fpga', 'fpga64k', 'lutsize', '4')"],"defvalue":null},"fpga,partname":{"type":"str","scope":"global","pernode":"never","switch":["-fpga_partname <str>"],"shorthelp":"FPGA: part name","help":"Complete part name used as a device target by the FPGA compilation\ntool. The part name must be an exact string match to the partname\nhard coded within the FPGA EDA tool.","example":["cli: -fpga_partname fpga64k","api: fpga.set('fpga', 'partname', 'fpga64k')"],"defvalue":null},"package,author,default,email":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_email 'userid <str>'"],"shorthelp":"Package: author email","help":"Package author email provided with full name as key and\nemail as value.","example":["cli: -package_author_email 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'email', 'wiley@acme.com')"],"defvalue":null},"package,author,default,name":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_name 'userid <str>'"],"shorthelp":"Package: author name","help":"Package author name provided with full name as key and\nname as value.","example":["cli: -package_author_name 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'name', 'wiley@acme.com')"],"defvalue":null},"package,author,default,organization":{"type":"str","scope":"global","pernode":"never","switch":["-package_author_organization 'userid <str>'"],"shorthelp":"Package: author organization","help":"Package author organization provided with full name as key and\norganization as value.","example":["cli: -package_author_organization 'wiley wiley@acme.com'","api: schema.set('author', 'wiley', 'organization', 'wiley@acme.com')"],"defvalue":null},"package,description":{"type":"str","scope":"global","pernode":"never","switch":["-package_description <str>"],"shorthelp":"Package: description","help":"Package short one line description for package\nmanagers and summary reports.","example":["cli: -package_description 'Yet another cpu'","api: schema.set('description', 'Yet another cpu')"],"defvalue":null},"package,doc,datasheet":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_datasheet <file>"],"shorthelp":"Package: datasheet document","help":"Package list of datasheet documents.","hashalgo":"sha256","example":["cli: -package_doc_datasheet datasheet.pdf","api: schema.set('doc', 'datasheet', 'datasheet.pdf')"],"defvalue":[]},"package,doc,quickstart":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_quickstart <file>"],"shorthelp":"Package: quickstart document","help":"Package list of quickstart documents.","hashalgo":"sha256","example":["cli: -package_doc_quickstart quickstart.pdf","api: schema.set('doc', 'quickstart', 'quickstart.pdf')"],"defvalue":[]},"package,doc,reference":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_reference <file>"],"shorthelp":"Package: reference document","help":"Package list of reference documents.","hashalgo":"sha256","example":["cli: -package_doc_reference reference.pdf","api: schema.set('doc', 'reference', 'reference.pdf')"],"defvalue":[]},"package,doc,releasenotes":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_releasenotes <file>"],"shorthelp":"Package: releasenotes document","help":"Package list of releasenotes documents.","hashalgo":"sha256","example":["cli: -package_doc_releasenotes releasenotes.pdf","api: schema.set('doc', 'releasenotes', 'releasenotes.pdf')"],"defvalue":[]},"package,doc,signoff":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_signoff <file>"],"shorthelp":"Package: signoff document","help":"Package list of signoff documents.","hashalgo":"sha256","example":["cli: -package_doc_signoff signoff.pdf","api: schema.set('doc', 'signoff', 'signoff.pdf')"],"defvalue":[]},"package,doc,testplan":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_testplan <file>"],"shorthelp":"Package: testplan document","help":"Package list of testplan documents.","hashalgo":"sha256","example":["cli: -package_doc_testplan testplan.pdf","api: schema.set('doc', 'testplan', 'testplan.pdf')"],"defvalue":[]},"package,doc,tutorial":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_tutorial <file>"],"shorthelp":"Package: tutorial document","help":"Package list of tutorial documents.","hashalgo":"sha256","example":["cli: -package_doc_tutorial tutorial.pdf","api: schema.set('doc', 'tutorial', 'tutorial.pdf')"],"defvalue":[]},"package,doc,userguide":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_doc_userguide <file>"],"shorthelp":"Package: userguide document","help":"Package list of userguide documents.","hashalgo":"sha256","example":["cli: -package_doc_userguide userguide.pdf","api: schema.set('doc', 'userguide', 'userguide.pdf')"],"defvalue":[]},"package,license":{"type":"[str]","scope":"global","pernode":"never","switch":["-package_license <str>"],"shorthelp":"Package: license identifiers","help":"Package list of SPDX license identifiers.","example":["cli: -package_license 'Apache-2.0'","api: schema.set('license', 'Apache-2.0')"],"defvalue":[]},"package,licensefile":{"type":"[file]","scope":"global","pernode":"never","switch":["-package_licensefile <file>"],"shorthelp":"Package: license files","help":"Package list of license files for to be\napplied in cases when a SPDX identifier is not available.\n(eg. proprietary licenses).","hashalgo":"sha256","example":["cli: -package_licensefile './LICENSE'","api: schema.set('licensefile', './LICENSE')"],"defvalue":[]},"package,vendor":{"type":"str","scope":"global","pernode":"never","switch":["-package_vendor <str>"],"shorthelp":"Package: vendor","help":"Package vendor.","example":["cli: -package_vendor acme","api: schema.set('vendor', 'acme')"],"defvalue":null},"package,version":{"type":"str","scope":"global","pernode":"never","switch":["-package_version <str>"],"shorthelp":"Package: version","help":"Package version. Can be a branch, tag, commit hash,\nor a semver compatible version.","example":["cli: -package_version 1.0","api: schema.set('version', '1.0')"],"defvalue":null}}}}}