siliconcompiler 0.27.1__py3-none-any.whl → 0.28.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/core.py +4 -1
- siliconcompiler/data/RobotoMono/__init__.py +0 -0
- siliconcompiler/data/__init__.py +0 -0
- siliconcompiler/flows/dvflow.py +51 -14
- siliconcompiler/flows/generate_openroad_rcx.py +1 -1
- siliconcompiler/libs/sg13g2_stdcell.py +8 -0
- siliconcompiler/pdks/ihp130.py +8 -0
- siliconcompiler/remote/server_schema/__init__.py +0 -0
- siliconcompiler/remote/server_schema/requests/__init__.py +0 -0
- siliconcompiler/remote/server_schema/responses/__init__.py +0 -0
- siliconcompiler/scheduler/__init__.py +6 -4
- siliconcompiler/scheduler/validation/__init__.py +0 -0
- siliconcompiler/schema/schema_cfg.py +351 -281
- siliconcompiler/schema/schema_obj.py +5 -3
- siliconcompiler/sphinx_ext/dynamicgen.py +35 -15
- siliconcompiler/sphinx_ext/schemagen.py +4 -1
- siliconcompiler/targets/ihp130_demo.py +68 -0
- siliconcompiler/templates/__init__.py +0 -0
- siliconcompiler/templates/email/__init__.py +0 -0
- siliconcompiler/templates/issue/__init__.py +0 -0
- siliconcompiler/templates/report/__init__.py +0 -0
- siliconcompiler/templates/slurm/__init__.py +0 -0
- siliconcompiler/templates/tcl/__init__.py +0 -0
- siliconcompiler/tools/_common/sdc/__init__.py +0 -0
- siliconcompiler/tools/_common/tcl/__init__.py +0 -0
- siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +1 -2
- siliconcompiler/tools/bambu/__init__.py +0 -0
- siliconcompiler/tools/bluespec/__init__.py +0 -0
- siliconcompiler/tools/builtin/__init__.py +0 -0
- siliconcompiler/tools/builtin/concatenate.py +16 -0
- siliconcompiler/tools/chisel/__init__.py +0 -0
- siliconcompiler/tools/execute/__init__.py +0 -0
- siliconcompiler/tools/genfasm/__init__.py +0 -0
- siliconcompiler/tools/ghdl/__init__.py +0 -0
- siliconcompiler/tools/icarus/__init__.py +0 -0
- siliconcompiler/tools/icepack/__init__.py +0 -0
- siliconcompiler/tools/klayout/__init__.py +0 -0
- siliconcompiler/tools/klayout/klayout.py +1 -0
- siliconcompiler/tools/magic/__init__.py +0 -0
- siliconcompiler/tools/magic/sc_drc.tcl +5 -5
- siliconcompiler/tools/magic/sc_extspice.tcl +3 -3
- siliconcompiler/tools/magic/sc_magic.tcl +2 -2
- siliconcompiler/tools/montage/__init__.py +0 -0
- siliconcompiler/tools/netgen/__init__.py +0 -0
- siliconcompiler/tools/netgen/sc_lvs.tcl +3 -3
- siliconcompiler/tools/nextpnr/__init__.py +0 -0
- siliconcompiler/tools/openroad/scripts/__init__.py +0 -0
- siliconcompiler/tools/openroad/scripts/sc_apr.tcl +36 -34
- siliconcompiler/tools/openroad/scripts/sc_cts.tcl +0 -1
- siliconcompiler/tools/openroad/scripts/sc_dfm.tcl +4 -2
- siliconcompiler/tools/openroad/scripts/sc_export.tcl +4 -2
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +27 -35
- siliconcompiler/tools/openroad/scripts/sc_metrics.tcl +4 -2
- siliconcompiler/tools/openroad/scripts/sc_physyn.tcl +0 -1
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +38 -6
- siliconcompiler/tools/openroad/scripts/sc_rcx.tcl +9 -9
- siliconcompiler/tools/openroad/scripts/sc_route.tcl +8 -4
- siliconcompiler/tools/openroad/scripts/sc_screenshot.tcl +5 -3
- siliconcompiler/tools/openroad/scripts/sc_write_images.tcl +27 -25
- siliconcompiler/tools/openroad/templates/__init__.py +0 -0
- siliconcompiler/tools/opensta/scripts/__init__.py +0 -0
- siliconcompiler/tools/opensta/scripts/sc_procs.tcl +0 -1
- siliconcompiler/tools/surelog/templates/__init__.py +0 -0
- siliconcompiler/tools/sv2v/__init__.py +0 -0
- siliconcompiler/tools/template/__init__.py +0 -0
- siliconcompiler/tools/verilator/__init__.py +0 -0
- siliconcompiler/tools/verilator/compile.py +1 -4
- siliconcompiler/tools/verilator/verilator.py +1 -2
- siliconcompiler/tools/vivado/scripts/__init__.py +0 -0
- siliconcompiler/tools/vivado/scripts/sc_run.tcl +7 -8
- siliconcompiler/tools/vivado/vivado.py +1 -1
- siliconcompiler/tools/vpr/__init__.py +0 -0
- siliconcompiler/tools/vpr/place.py +20 -6
- siliconcompiler/tools/vpr/vpr.py +1 -1
- siliconcompiler/tools/xdm/__init__.py +28 -0
- siliconcompiler/tools/xdm/convert.py +71 -0
- siliconcompiler/tools/xyce/{xyce.py → __init__.py} +13 -9
- siliconcompiler/tools/xyce/simulate.py +70 -0
- siliconcompiler/tools/yosys/__init__.py +0 -0
- siliconcompiler/tools/yosys/sc_lec.tcl +7 -7
- siliconcompiler/tools/yosys/sc_syn.tcl +9 -9
- siliconcompiler/tools/yosys/syn_asic.tcl +21 -13
- siliconcompiler/tools/yosys/syn_fpga.tcl +20 -17
- siliconcompiler/tools/yosys/techmaps/__init__.py +0 -0
- siliconcompiler/tools/yosys/templates/__init__.py +0 -0
- siliconcompiler/use.py +2 -1
- {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/METADATA +9 -8
- {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/RECORD +93 -48
- {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/WHEEL +1 -1
- siliconcompiler/tools/openfpgaloader/openfpgaloader.py +0 -39
- {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.27.1.dist-info → siliconcompiler-0.28.1.dist-info}/top_level.txt +0 -0
|
@@ -10,7 +10,7 @@ try:
|
|
|
10
10
|
except ImportError:
|
|
11
11
|
from siliconcompiler.schema.utils import trim
|
|
12
12
|
|
|
13
|
-
SCHEMA_VERSION = '0.
|
|
13
|
+
SCHEMA_VERSION = '0.48.2'
|
|
14
14
|
|
|
15
15
|
#############################################################################
|
|
16
16
|
# PARAM DEFINITION
|
|
@@ -175,7 +175,7 @@ def schema_cfg():
|
|
|
175
175
|
sctype='[file]',
|
|
176
176
|
pernode='optional',
|
|
177
177
|
copy=val[1],
|
|
178
|
-
shorthelp=f"{val[0]}
|
|
178
|
+
shorthelp=f"{val[0]} files",
|
|
179
179
|
switch=f"-{item} 'fileset filetype <file>'",
|
|
180
180
|
example=[
|
|
181
181
|
f"cli: -{item} 'rtl verilog hello_world.v'",
|
|
@@ -215,6 +215,71 @@ def schema_cfg():
|
|
|
215
215
|
# Packaging
|
|
216
216
|
cfg = schema_package(cfg)
|
|
217
217
|
|
|
218
|
+
# Packaging
|
|
219
|
+
cfg = schema_schematic(cfg)
|
|
220
|
+
|
|
221
|
+
return cfg
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
###############################################################################
|
|
225
|
+
# SCHEMATIC
|
|
226
|
+
###############################################################################
|
|
227
|
+
def schema_schematic(cfg, name='default'):
|
|
228
|
+
''' Schematic
|
|
229
|
+
'''
|
|
230
|
+
|
|
231
|
+
scparam(cfg, ['schematic', 'component', name, 'model'],
|
|
232
|
+
sctype='str',
|
|
233
|
+
shorthelp="Schematic: component model",
|
|
234
|
+
switch="-schematic_component_model 'name <str>'",
|
|
235
|
+
example=["cli: -schematic_component_model 'B0 NAND2X1'",
|
|
236
|
+
"api: chip.set('schematic', 'component', 'B0, 'model', 'NAND2X1')"],
|
|
237
|
+
schelp="""Model of a component, specified on a per instance basis.""")
|
|
238
|
+
|
|
239
|
+
scparam(cfg, ['schematic', 'pin', name, 'dir'],
|
|
240
|
+
sctype='enum',
|
|
241
|
+
enum=['input', 'output', 'inout'],
|
|
242
|
+
shorthelp="Schematic: pin direction",
|
|
243
|
+
switch="-schematic_pin_dir 'name <str>'",
|
|
244
|
+
example=["cli: -schematic_pin_dir 'A input'",
|
|
245
|
+
"api: chip.set('schematic', 'pin', 'A', 'dir', 'input')"],
|
|
246
|
+
schelp="""Direction of pin specified on a per pin basis.""")
|
|
247
|
+
|
|
248
|
+
scparam(cfg, ['schematic', 'net', name, 'connect'],
|
|
249
|
+
sctype='[str]',
|
|
250
|
+
shorthelp="Schematic: net connection",
|
|
251
|
+
switch="-schematic_net_connect 'name <str>'",
|
|
252
|
+
example=["cli: -schematic_net_connect 'net0 I42.Z'",
|
|
253
|
+
"api: chip.set('schematic', 'net', 'net0', 'connect', 'I42.Z')"],
|
|
254
|
+
schelp="""Component and pin connectivity specified as a list
|
|
255
|
+
of connection points on a per net basis. The connection point
|
|
256
|
+
point format is "INSTANCE.PIN", where "." is the hierarchy
|
|
257
|
+
character. Connections without ".PIN" implies the connection is
|
|
258
|
+
a primary design I/O pin. Specifying "INSTANCE.*" implies that
|
|
259
|
+
all pins of INSTANCE get connected to the net.""")
|
|
260
|
+
|
|
261
|
+
scparam(cfg, ['schematic', 'hierchar'],
|
|
262
|
+
sctype='str',
|
|
263
|
+
defvalue='.',
|
|
264
|
+
shorthelp="Schematic: hierarchy character",
|
|
265
|
+
switch="-schematic_hierchar <str>",
|
|
266
|
+
example=["cli: -schematic_hierchar '/'",
|
|
267
|
+
"api: chip.set('schematic', 'hierchar', '/')"],
|
|
268
|
+
schelp="""Specifies the character used to express hierarchy. If
|
|
269
|
+
the hierarchy character is used as part of a name, it must be
|
|
270
|
+
escaped with a backslash('\').""")
|
|
271
|
+
|
|
272
|
+
scparam(cfg, ['schematic', 'buschar'],
|
|
273
|
+
sctype='str',
|
|
274
|
+
defvalue='[]',
|
|
275
|
+
shorthelp="Schematic: bus character",
|
|
276
|
+
switch="-schematic_buschar <str>",
|
|
277
|
+
example=["cli: -schematic_buschar '[]'",
|
|
278
|
+
"api: chip.set('schematic', 'buschar', '[]')"],
|
|
279
|
+
schelp="""Specifies the character used to express bus bits. If the
|
|
280
|
+
bus character is used as part of a name, it must be
|
|
281
|
+
escaped with a backslash('\').""")
|
|
282
|
+
|
|
218
283
|
return cfg
|
|
219
284
|
|
|
220
285
|
|
|
@@ -307,6 +372,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
307
372
|
scparam(cfg, ['pdk', pdkname, 'node'],
|
|
308
373
|
sctype='float',
|
|
309
374
|
scope='global',
|
|
375
|
+
unit='nm',
|
|
310
376
|
shorthelp="PDK: process node",
|
|
311
377
|
switch="-pdk_node 'pdkname <float>'",
|
|
312
378
|
example=["cli: -pdk_node 'asap7 130'",
|
|
@@ -387,7 +453,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
387
453
|
Wafer diameter used in wafer based manufacturing process.
|
|
388
454
|
The standard diameter for leading edge manufacturing is 300mm. For
|
|
389
455
|
older process technologies and specialty fabs, smaller diameters
|
|
390
|
-
such as 200,
|
|
456
|
+
such as 200, 150, 125, and 100 are common. The value is used to
|
|
391
457
|
calculate dies per wafer and full factory chip costs.""")
|
|
392
458
|
|
|
393
459
|
scparam(cfg, ['pdk', pdkname, 'panelsize'],
|
|
@@ -555,7 +621,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
555
621
|
'filetype' used in the aprtech is used by the tool specific APR TCL scripts
|
|
556
622
|
to set up the technology parameters. Some tools may require additional
|
|
557
623
|
files beyond the tech.lef file. Examples of extra file types include
|
|
558
|
-
antenna, tracks, tapcell, viarules, em.""")
|
|
624
|
+
antenna, tracks, tapcell, viarules, and em.""")
|
|
559
625
|
|
|
560
626
|
checks = ['lvs', 'drc', 'erc', 'fill']
|
|
561
627
|
name = 'default'
|
|
@@ -590,7 +656,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
590
656
|
scparam(cfg, ['pdk', pdkname, 'file', tool, key, stackup],
|
|
591
657
|
sctype='[file]',
|
|
592
658
|
scope='global',
|
|
593
|
-
shorthelp="PDK:
|
|
659
|
+
shorthelp="PDK: custom file",
|
|
594
660
|
switch="-pdk_file 'pdkname tool key stackup <file>'",
|
|
595
661
|
example=[
|
|
596
662
|
"cli: -pdk_file 'asap7 xyce spice M10 asap7.sp'",
|
|
@@ -603,7 +669,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
603
669
|
scparam(cfg, ['pdk', pdkname, 'dir', tool, key, stackup],
|
|
604
670
|
sctype='[dir]',
|
|
605
671
|
scope='global',
|
|
606
|
-
shorthelp="PDK:
|
|
672
|
+
shorthelp="PDK: custom directory",
|
|
607
673
|
switch="-pdk_dir 'pdkname tool key stackup <dir>'",
|
|
608
674
|
example=[
|
|
609
675
|
"cli: -pdk_dir 'asap7 xyce rfmodel M10 rftechdir'",
|
|
@@ -617,7 +683,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
617
683
|
scparam(cfg, ['pdk', pdkname, 'var', tool, key, stackup],
|
|
618
684
|
sctype='[str]',
|
|
619
685
|
scope='global',
|
|
620
|
-
shorthelp="PDK:
|
|
686
|
+
shorthelp="PDK: custom, variable",
|
|
621
687
|
switch="-pdk_var 'pdkname tool stackup key <str>'",
|
|
622
688
|
example=[
|
|
623
689
|
"cli: -pdk_var 'asap7 xyce modeltype M10 bsim4'",
|
|
@@ -639,8 +705,7 @@ def schema_pdk(cfg, stackup='default'):
|
|
|
639
705
|
switch="-pdk_doc 'pdkname doctype <file>'",
|
|
640
706
|
example=["cli: -pdk_doc 'asap7 reference reference.pdf'",
|
|
641
707
|
"api: chip.set('pdk', 'asap7', 'doc', 'reference', 'reference.pdf')"],
|
|
642
|
-
schelp="""
|
|
643
|
-
Filepath to pdk documentation.""")
|
|
708
|
+
schelp="""Filepath to pdk documentation.""")
|
|
644
709
|
|
|
645
710
|
return cfg
|
|
646
711
|
|
|
@@ -660,44 +725,44 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
660
725
|
'sram', 'dram', 'flash', 'rom',
|
|
661
726
|
'interface', 'clock', 'amplifier',
|
|
662
727
|
'filter', 'mixer', 'modulator', 'lna'],
|
|
663
|
-
shorthelp="Datasheet:
|
|
728
|
+
shorthelp="Datasheet: type",
|
|
664
729
|
switch="-datasheet_type '<str>'",
|
|
665
730
|
example=[
|
|
666
731
|
"cli: -datasheet_type 'digital'",
|
|
667
732
|
"api: chip.set('datasheet', 'type', 'digital')"],
|
|
668
|
-
schelp="""
|
|
733
|
+
schelp="""Device type.""")
|
|
669
734
|
|
|
670
735
|
# Documentation
|
|
671
736
|
scparam(cfg, ['datasheet', 'doc'],
|
|
672
737
|
sctype='[file]',
|
|
673
|
-
shorthelp="Datasheet:
|
|
738
|
+
shorthelp="Datasheet: documentation",
|
|
674
739
|
switch="-datasheet_doc '<file>'",
|
|
675
740
|
example=[
|
|
676
741
|
"cli: -datasheet_doc 'za001.pdf'",
|
|
677
742
|
"api: chip.set('datasheet', 'doc', 'za001.pdf)"],
|
|
678
|
-
schelp="""
|
|
743
|
+
schelp="""Datasheet document.""")
|
|
679
744
|
|
|
680
745
|
# Series
|
|
681
746
|
scparam(cfg, ['datasheet', 'series'],
|
|
682
747
|
sctype='str',
|
|
683
|
-
shorthelp="Datasheet:
|
|
748
|
+
shorthelp="Datasheet: series",
|
|
684
749
|
switch="-datasheet_series '<str>'",
|
|
685
750
|
example=[
|
|
686
751
|
"cli: -datasheet_series 'ZA0'",
|
|
687
752
|
"api: chip.set('datasheet', 'series', 'ZA0)"],
|
|
688
753
|
schelp="""Device series describing a family of devices or
|
|
689
754
|
a singular device with multiple packages and/or qualification
|
|
690
|
-
SKUs.""")
|
|
755
|
+
`SKUs <https://en.wikipedia.org/wiki/Stock_keeping_unit>`_.""")
|
|
691
756
|
|
|
692
757
|
# Manufacturer
|
|
693
758
|
scparam(cfg, ['datasheet', 'manufacturer'],
|
|
694
759
|
sctype='str',
|
|
695
|
-
shorthelp="Datasheet:
|
|
760
|
+
shorthelp="Datasheet: manufacturer",
|
|
696
761
|
switch="-datasheet_manufacturer '<str>'",
|
|
697
762
|
example=[
|
|
698
763
|
"cli: -datasheet_manufacturer 'Acme'",
|
|
699
764
|
"api: chip.set('datasheet', 'manufacturer', 'Acme')"],
|
|
700
|
-
schelp="""Device manufacturer
|
|
765
|
+
schelp="""Device manufacturer.""")
|
|
701
766
|
|
|
702
767
|
# Device description
|
|
703
768
|
scparam(cfg, ['datasheet', 'description'],
|
|
@@ -707,17 +772,17 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
707
772
|
example=[
|
|
708
773
|
"cli: -datasheet_description 'Yet another CPU'",
|
|
709
774
|
"api: chip.set('datasheet', 'description', 'Yet another CPU')"],
|
|
710
|
-
schelp="""
|
|
775
|
+
schelp="""Device description entered as free text.""")
|
|
711
776
|
|
|
712
777
|
# Features
|
|
713
778
|
scparam(cfg, ['datasheet', 'features'],
|
|
714
779
|
sctype='[str]',
|
|
715
|
-
shorthelp="Datasheet:
|
|
780
|
+
shorthelp="Datasheet: features",
|
|
716
781
|
switch="-datasheet_features '<str>'",
|
|
717
782
|
example=[
|
|
718
783
|
"cli: -datasheet_features 'usb3.0'",
|
|
719
784
|
"api: chip.set('datasheet', 'features', 'usb3.0')"],
|
|
720
|
-
schelp="""
|
|
785
|
+
schelp="""Device features.""")
|
|
721
786
|
|
|
722
787
|
# Grade
|
|
723
788
|
scparam(cfg, ['datasheet', 'grade'],
|
|
@@ -725,7 +790,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
725
790
|
enum=['consumer', 'industrial',
|
|
726
791
|
'medical', 'automotive',
|
|
727
792
|
'military', 'space'],
|
|
728
|
-
shorthelp="Datasheet:
|
|
793
|
+
shorthelp="Datasheet: manufacturing grade",
|
|
729
794
|
switch="-datasheet_grade '<str>'",
|
|
730
795
|
example=[
|
|
731
796
|
"cli: -datasheet_grade 'automotive'",
|
|
@@ -735,7 +800,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
735
800
|
# Qualification
|
|
736
801
|
scparam(cfg, ['datasheet', 'qual'],
|
|
737
802
|
sctype='[str]',
|
|
738
|
-
shorthelp="Datasheet: qualification",
|
|
803
|
+
shorthelp="Datasheet: qualification level",
|
|
739
804
|
switch="-datasheet_qual '<str>'",
|
|
740
805
|
example=[
|
|
741
806
|
"cli: -datasheet_qual 'AEC-Q100'",
|
|
@@ -770,7 +835,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
770
835
|
scparam(cfg, ['datasheet', 'fmax'],
|
|
771
836
|
sctype='float',
|
|
772
837
|
unit='MHz',
|
|
773
|
-
shorthelp="Datasheet:
|
|
838
|
+
shorthelp="Datasheet: maximum frequency",
|
|
774
839
|
switch="-datasheet_fmax '<float>'",
|
|
775
840
|
example=[
|
|
776
841
|
"cli: -datasheet_fmax 100'",
|
|
@@ -859,7 +924,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
859
924
|
"cli: -datasheet_io_arch 'pio spi'",
|
|
860
925
|
"api: chip.set('datasheet', 'io', 'pio', 'arch', 'spi')"],
|
|
861
926
|
schelp="""Datasheet: List of IO standard architectures supported
|
|
862
|
-
by the named port.""")
|
|
927
|
+
by the named IO port.""")
|
|
863
928
|
|
|
864
929
|
metrics = {'fmax': ['maximum frequency', 100, 'float', 'MHz'],
|
|
865
930
|
'width': ['width', 4, 'int', None],
|
|
@@ -875,7 +940,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
875
940
|
example=[
|
|
876
941
|
f"cli: -datasheet_io_{i} 'name {v[1]}'",
|
|
877
942
|
f"api: chip.set('datasheet', 'io', name, '{i}', {v[1]})"],
|
|
878
|
-
schelp=f"""Datasheet: IO {v[1]} metrics specified on a
|
|
943
|
+
schelp=f"""Datasheet: IO {v[1]} metrics specified on a per IO port basis.
|
|
879
944
|
""")
|
|
880
945
|
|
|
881
946
|
######################
|
|
@@ -889,7 +954,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
889
954
|
example=[
|
|
890
955
|
"cli: -datasheet_proc_arch '0 RV64GC'",
|
|
891
956
|
"api: chip.set('datasheet', 'proc', name, 'arch', 'openfpga')"],
|
|
892
|
-
schelp="""Processor architecture.""")
|
|
957
|
+
schelp="""Processor architecture specified on a per core basis.""")
|
|
893
958
|
|
|
894
959
|
scparam(cfg, ['datasheet', 'proc', name, 'features'],
|
|
895
960
|
sctype='[str]',
|
|
@@ -898,7 +963,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
898
963
|
example=[
|
|
899
964
|
"cli: -datasheet_proc_features '0 SIMD'",
|
|
900
965
|
"api: chip.set('datasheet','proc','cpu','features', 'SIMD')"],
|
|
901
|
-
schelp="""List of maker specified processor features.""")
|
|
966
|
+
schelp="""List of maker specified processor features specified on a per core basis.""")
|
|
902
967
|
|
|
903
968
|
scparam(cfg, ['datasheet', 'proc', name, 'datatypes'],
|
|
904
969
|
sctype='[enum]',
|
|
@@ -910,13 +975,14 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
910
975
|
example=[
|
|
911
976
|
"cli: -datasheet_proc_datatypes '0 int8'",
|
|
912
977
|
"api: chip.set('datasheet', 'proc', 'cpu', 'datatypes', 'int8')"],
|
|
913
|
-
schelp="""List of datatypes supported by the processor
|
|
978
|
+
schelp="""List of datatypes supported by the processor specified
|
|
979
|
+
on a per core basis.""")
|
|
914
980
|
|
|
915
981
|
metrics = {'archsize': ['architecture size', 64, None],
|
|
916
982
|
'cores': ['number of cores', 4, None],
|
|
917
983
|
'fmax': ['maximum frequency', 100, 'MHz'],
|
|
918
|
-
'ops': ['operations per cycle
|
|
919
|
-
'mults': ['hard multiplier units
|
|
984
|
+
'ops': ['operations per cycle', 4, None],
|
|
985
|
+
'mults': ['hard multiplier units', 100, None],
|
|
920
986
|
'icache': ['l1 icache size', 32, 'KB'],
|
|
921
987
|
'dcache': ['l1 dcache size', 32, 'KB'],
|
|
922
988
|
'l2cache': ['l2 cache size', 1024, 'KB'],
|
|
@@ -933,7 +999,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
933
999
|
example=[
|
|
934
1000
|
f"cli: -datasheet_proc_{i} 'cpu {v[1]}'",
|
|
935
1001
|
f"api: chip.set('datasheet', 'proc', 'cpu', '{i}', {v[1]})"],
|
|
936
|
-
schelp=f"""Processor metric: {v[0]}.""")
|
|
1002
|
+
schelp=f"""Processor metric: {v[0]} specified on a per core basis.""")
|
|
937
1003
|
|
|
938
1004
|
######################
|
|
939
1005
|
# Memory
|
|
@@ -946,7 +1012,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
946
1012
|
example=[
|
|
947
1013
|
"cli: -datasheet_memory_bits 'm0 1024'",
|
|
948
1014
|
"api: chip.set('datasheet', 'memory', 'm0', 'bits', 1024)"],
|
|
949
|
-
schelp="""Memory total number of bits.""")
|
|
1015
|
+
schelp="""Memory total number of bits specified on a per memory basis.""")
|
|
950
1016
|
|
|
951
1017
|
scparam(cfg, ['datasheet', 'memory', name, 'width'],
|
|
952
1018
|
sctype='int',
|
|
@@ -955,7 +1021,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
955
1021
|
example=[
|
|
956
1022
|
"cli: -datasheet_memory_width 'm0 16'",
|
|
957
1023
|
"api: chip.set('datasheet', 'memory', 'm0', 'width', 16)"],
|
|
958
|
-
schelp="""Memory width.""")
|
|
1024
|
+
schelp="""Memory width specified on a per memory basis.""")
|
|
959
1025
|
|
|
960
1026
|
scparam(cfg, ['datasheet', 'memory', name, 'depth'],
|
|
961
1027
|
sctype='int',
|
|
@@ -964,7 +1030,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
964
1030
|
example=[
|
|
965
1031
|
"cli: -datasheet_memory_depth 'm0 128'",
|
|
966
1032
|
"api: chip.set('datasheet', 'memory', 'm0', 'depth', 128)"],
|
|
967
|
-
schelp="""Memory depth.""")
|
|
1033
|
+
schelp="""Memory depth specified on a per memory basis.""")
|
|
968
1034
|
|
|
969
1035
|
scparam(cfg, ['datasheet', 'memory', name, 'banks'],
|
|
970
1036
|
sctype='int',
|
|
@@ -973,7 +1039,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
973
1039
|
example=[
|
|
974
1040
|
"cli: -datasheet_memory_banks 'm0 4'",
|
|
975
1041
|
"api: chip.set('datasheet', 'memory', 'm0', 'banks', 4)"],
|
|
976
|
-
schelp="""Memory banks.""")
|
|
1042
|
+
schelp="""Memory banks specified on a per memory basis.""")
|
|
977
1043
|
|
|
978
1044
|
# Timing
|
|
979
1045
|
metrics = {'fmax': ['max frequency', (1e9, 1e9, 1e9), 'Hz'],
|
|
@@ -998,7 +1064,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
998
1064
|
example=[
|
|
999
1065
|
f"cli: -datasheet_memory_{i} 'name {v[1]}'",
|
|
1000
1066
|
f"api: chip.set('datasheet', 'memory', name, '{i}', {v[1]})"],
|
|
1001
|
-
schelp=f"""Memory {v[1]}.""")
|
|
1067
|
+
schelp=f"""Memory {v[1]} specified on a per memory basis.""")
|
|
1002
1068
|
|
|
1003
1069
|
# Latency (cycles)
|
|
1004
1070
|
metrics = {'tcl': ['column address latency', (100, 100, 100), 'cycles'],
|
|
@@ -1016,7 +1082,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1016
1082
|
example=[
|
|
1017
1083
|
f"cli: -datasheet_memory_{i} 'name {v[1]}'",
|
|
1018
1084
|
f"api: chip.set('datasheet', 'memory', name, '{i}', {v[1]})"],
|
|
1019
|
-
schelp=f"""Memory {v[1]}.""")
|
|
1085
|
+
schelp=f"""Memory {v[1]} specified on a per memory basis.""")
|
|
1020
1086
|
|
|
1021
1087
|
######################
|
|
1022
1088
|
# FPGA
|
|
@@ -1032,7 +1098,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1032
1098
|
schelp="""FPGA architecture.
|
|
1033
1099
|
""")
|
|
1034
1100
|
|
|
1035
|
-
metrics = {'luts': ['LUTs
|
|
1101
|
+
metrics = {'luts': ['LUTs', 32000, None],
|
|
1036
1102
|
'registers': ['registers', 100, None],
|
|
1037
1103
|
'plls': ['pll blocks', 1, None],
|
|
1038
1104
|
'mults': ['multiplier/dsp elements', 100, None],
|
|
@@ -1079,7 +1145,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1079
1145
|
for i, v in metrics.items():
|
|
1080
1146
|
scparam(cfg, ['datasheet', 'analog', name, i],
|
|
1081
1147
|
sctype='int',
|
|
1082
|
-
shorthelp=f"Datasheet:
|
|
1148
|
+
shorthelp=f"Datasheet: analog {v[0]}",
|
|
1083
1149
|
switch=f"-datasheet_analog_{i} 'name <int>'",
|
|
1084
1150
|
example=[
|
|
1085
1151
|
f"cli: -datasheet_analog_{i} 'i0 {v[1]}'",
|
|
@@ -1122,7 +1188,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1122
1188
|
scparam(cfg, ['datasheet', 'analog', name, i],
|
|
1123
1189
|
unit=v[2],
|
|
1124
1190
|
sctype='(float,float,float)',
|
|
1125
|
-
shorthelp=f"Datasheet:
|
|
1191
|
+
shorthelp=f"Datasheet: analog {v[0]}",
|
|
1126
1192
|
switch=f"-datasheet_analog_{i} 'name <(float,float,float)>'",
|
|
1127
1193
|
example=[
|
|
1128
1194
|
f"cli: -datasheet_analog_{i} 'i0 {v[1]}'",
|
|
@@ -1186,6 +1252,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1186
1252
|
# Package Description
|
|
1187
1253
|
#########################
|
|
1188
1254
|
|
|
1255
|
+
# high level description
|
|
1189
1256
|
scparam(cfg, ['datasheet', 'package', name, 'type'],
|
|
1190
1257
|
sctype='enum',
|
|
1191
1258
|
enum=['bga', 'lga', 'csp', 'qfn', 'qfp', 'sop', 'die', 'wafer'],
|
|
@@ -1194,7 +1261,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1194
1261
|
example=[
|
|
1195
1262
|
"cli: -datasheet_package_type 'abcd bga'",
|
|
1196
1263
|
"api: chip.set('datasheet', 'package', 'abcd', 'type', 'bga')"],
|
|
1197
|
-
schelp="""
|
|
1264
|
+
schelp="""Package type specified on a named package basis.""")
|
|
1198
1265
|
|
|
1199
1266
|
scparam(cfg, ['datasheet', 'package', name, 'drawing'],
|
|
1200
1267
|
sctype='[file]',
|
|
@@ -1203,21 +1270,38 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1203
1270
|
example=[
|
|
1204
1271
|
"cli: -datasheet_package_drawing 'abcd p484.pdf'",
|
|
1205
1272
|
"api: chip.set('datasheet', 'package', 'abcd', 'drawing', 'p484.pdf')"],
|
|
1206
|
-
schelp="""
|
|
1273
|
+
schelp="""Mechanical package outline for documentation purposes.
|
|
1274
|
+
Common file formats include PDF, DOC, SVG, and PNG.""")
|
|
1207
1275
|
|
|
1208
1276
|
scparam(cfg, ['datasheet', 'package', name, 'pincount'],
|
|
1209
1277
|
sctype='int',
|
|
1210
|
-
shorthelp="Datasheet: package pincount",
|
|
1278
|
+
shorthelp="Datasheet: package total pincount",
|
|
1211
1279
|
switch="-datasheet_package_pincount 'name <int>'",
|
|
1212
1280
|
example=[
|
|
1213
1281
|
"cli: -datasheet_package_pincount 'abcd 484'",
|
|
1214
1282
|
"api: chip.set('datasheet', 'package', 'abcd', 'pincount', '484')"],
|
|
1215
|
-
schelp="""
|
|
1283
|
+
schelp="""Total number package pins of the named package.""")
|
|
1216
1284
|
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1285
|
+
scparam(cfg, ['datasheet', 'package', name, 'anchor'],
|
|
1286
|
+
sctype='(float,float)',
|
|
1287
|
+
defvalue=(0.0, 0.0),
|
|
1288
|
+
unit='um',
|
|
1289
|
+
shorthelp="Datasheeet: package anchor",
|
|
1290
|
+
switch="-datasheet_package_anchor 'name <(float,float)>'",
|
|
1291
|
+
example=[
|
|
1292
|
+
"cli: -datasheet_package_anchor 'i0 (3.0,3.0)'",
|
|
1293
|
+
"api: chip.set('datasheet', 'package', 'i0', 'anchor', (3.0, 3.0))"],
|
|
1294
|
+
schelp="""
|
|
1295
|
+
Package anchor point with respect to the lower left corner of the package.
|
|
1296
|
+
When placing a component on a substrate, the placement location specifies
|
|
1297
|
+
the distance from the substrate origin to the anchor point of the placed
|
|
1298
|
+
object.""")
|
|
1299
|
+
|
|
1300
|
+
# critical dimensions
|
|
1301
|
+
metrics = {'length': ['length', (4000, 4000, 4000), 'um'],
|
|
1302
|
+
'width': ['width', (4000, 4000, 4000), 'um'],
|
|
1303
|
+
'thickness': ['thickness', (900, 1000, 1100), 'um'],
|
|
1304
|
+
'pitch': ['pitch', (800, 850, 900), 'um']
|
|
1221
1305
|
}
|
|
1222
1306
|
|
|
1223
1307
|
for i, v in metrics.items():
|
|
@@ -1232,62 +1316,60 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1232
1316
|
schelp=f"""Datasheet: package {v[0]}. Values are tuples of
|
|
1233
1317
|
(min, nominal, max).""")
|
|
1234
1318
|
|
|
1235
|
-
|
|
1319
|
+
# pinout diagram
|
|
1320
|
+
pinnumber = 'default'
|
|
1321
|
+
scparam(cfg, ['datasheet', 'package', name, 'pin', pinnumber, 'shape'],
|
|
1236
1322
|
sctype='enum',
|
|
1237
|
-
enum=['circle', 'rectangle'],
|
|
1323
|
+
enum=['circle', 'rectangle', 'square', 'octagon'],
|
|
1238
1324
|
shorthelp="Datasheet: package pin shape",
|
|
1239
|
-
switch="-
|
|
1325
|
+
switch="-datasheet_package_pin_shape 'name pinnumber <str>'",
|
|
1240
1326
|
example=[
|
|
1241
|
-
"cli: -
|
|
1242
|
-
"api: chip.set('datasheet', 'package', 'abcd', '
|
|
1243
|
-
schelp="""Datasheet: pin shape
|
|
1244
|
-
and per pin basis.""")
|
|
1327
|
+
"cli: -datasheet_package_pin_shape 'abcd B1 circle'",
|
|
1328
|
+
"api: chip.set('datasheet', 'package', 'abcd', 'pin', 'B1', 'shape', 'circle')"],
|
|
1329
|
+
schelp="""Datasheet: package pin shape specified on a per package
|
|
1330
|
+
and per pin number basis.""")
|
|
1245
1331
|
|
|
1246
|
-
metrics = {'
|
|
1247
|
-
'
|
|
1332
|
+
metrics = {'width': ['width', (200, 250, 300), 'um'],
|
|
1333
|
+
'length': ['length', (200, 250, 300), 'um']
|
|
1248
1334
|
}
|
|
1249
1335
|
|
|
1250
1336
|
for i, v in metrics.items():
|
|
1251
|
-
scparam(cfg, ['datasheet', 'package', name,
|
|
1337
|
+
scparam(cfg, ['datasheet', 'package', name, 'pin', pinnumber, i],
|
|
1252
1338
|
unit=v[2],
|
|
1253
1339
|
sctype='(float,float,float)',
|
|
1254
1340
|
shorthelp=f"Datasheet: package pin {v[0]}",
|
|
1255
|
-
switch=f"-
|
|
1341
|
+
switch=f"-datasheet_package_pin_{i} 'name pinnumber <(float,float,float)>'",
|
|
1256
1342
|
example=[
|
|
1257
|
-
f"cli: -
|
|
1258
|
-
f"api: chip.set('datasheet', 'package', 'abcd', '
|
|
1259
|
-
schelp=f"""Datsheet: {v[0]} specified on a per package and per pin
|
|
1260
|
-
Values are tuples of (min, nominal, max).""")
|
|
1343
|
+
f"cli: -datasheet_package_pin_{i} 'abcd B1 {v[1]}'",
|
|
1344
|
+
f"api: chip.set('datasheet', 'package', 'abcd', 'pin', 'B1', '{i}', {v[1]}"],
|
|
1345
|
+
schelp=f"""Datsheet: {v[0]} specified on a per package and per pin number
|
|
1346
|
+
basis. Values are tuples of (min, nominal, max).""")
|
|
1261
1347
|
|
|
1262
|
-
scparam(cfg, ['datasheet', 'package', name, '
|
|
1348
|
+
scparam(cfg, ['datasheet', 'package', name, 'pin', pinnumber, 'loc'],
|
|
1263
1349
|
sctype='(float,float)',
|
|
1264
|
-
unit='
|
|
1350
|
+
unit='um',
|
|
1265
1351
|
shorthelp="Datasheet: package pin location",
|
|
1266
|
-
switch="-
|
|
1352
|
+
switch="-datasheet_package_pin_loc 'name pinnumber <(float,float)>'",
|
|
1267
1353
|
example=[
|
|
1268
|
-
"cli: -
|
|
1269
|
-
"api: chip.set('datasheet', 'package', 'abcd', '
|
|
1270
|
-
schelp="""Datsheet:
|
|
1271
|
-
|
|
1272
|
-
""")
|
|
1354
|
+
"cli: -datasheet_package_pin_loc 'abcd B1 (500,500)'",
|
|
1355
|
+
"api: chip.set('datasheet', 'package', 'abcd', 'pin', 'B1', 'loc', (500,500)"],
|
|
1356
|
+
schelp="""Datsheet: Package pin location specified as an (x,y) tuple on a per
|
|
1357
|
+
package and per pin number basis. Locations specify the center of the pin with
|
|
1358
|
+
respect to the center of the package.""")
|
|
1273
1359
|
|
|
1274
|
-
scparam(cfg, ['datasheet', 'package', name, '
|
|
1360
|
+
scparam(cfg, ['datasheet', 'package', name, 'pin', pinnumber, 'name'],
|
|
1275
1361
|
sctype='str',
|
|
1276
|
-
shorthelp="Datasheet: package pin
|
|
1277
|
-
switch="-
|
|
1278
|
-
example=[
|
|
1279
|
-
"cli: -
|
|
1280
|
-
"api: chip.set('datasheet', 'package', 'abcd', '
|
|
1281
|
-
schelp="""Datsheet:
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
example=[
|
|
1288
|
-
"cli: -datasheet_package_portname 'abcd B1 VDD'",
|
|
1289
|
-
"api: chip.set('datasheet', 'package', 'abcd', 'portname', 'B1', 'VDD')"],
|
|
1290
|
-
schelp="""Datsheet: Device port connected to the pin.""")
|
|
1362
|
+
shorthelp="Datasheet: package pin name",
|
|
1363
|
+
switch="-datasheet_package_pin_name 'name pinnumber <str>'",
|
|
1364
|
+
example=[
|
|
1365
|
+
"cli: -datasheet_package_pin_name 'abcd B1 clk'",
|
|
1366
|
+
"api: chip.set('datasheet', 'package', 'abcd', 'pin', 'B1', 'name', 'clk')"],
|
|
1367
|
+
schelp="""Datsheet: Package pin name specified on a per package and per pin
|
|
1368
|
+
number basis. The pin number is generally an integer starting at '1' in the case of
|
|
1369
|
+
packages like qfn, qfp and an array index ('A1', 'A2') in the case of array packages
|
|
1370
|
+
like bgas. The pin name refers to the logical function assigned to the physical
|
|
1371
|
+
pin number (e.g clk, vss, in). Details regarding the logical pin is stored in
|
|
1372
|
+
the :keypath:`datasheet,pin`.""")
|
|
1291
1373
|
|
|
1292
1374
|
######################
|
|
1293
1375
|
# Pin Specifications
|
|
@@ -1313,8 +1395,7 @@ def schema_datasheet(cfg, name='default', mode='default'):
|
|
|
1313
1395
|
example=[
|
|
1314
1396
|
"cli: -datasheet_pin_dir 'clk global input'",
|
|
1315
1397
|
"api: chip.set('datasheet', 'pin', 'clk', 'dir', 'global', 'input')"],
|
|
1316
|
-
schelp="""Pin direction specified on a per mode basis.
|
|
1317
|
-
directions include: input, output, inout.""")
|
|
1398
|
+
schelp="""Pin direction specified on a per mode basis.""")
|
|
1318
1399
|
|
|
1319
1400
|
# Pin complement (for differential pair)
|
|
1320
1401
|
scparam(cfg, ['datasheet', 'pin', name, 'complement', mode],
|
|
@@ -1490,8 +1571,7 @@ def schema_flowgraph(cfg, flow='default', step='default', index='default'):
|
|
|
1490
1571
|
example=[
|
|
1491
1572
|
"cli: -flowgraph_tool 'asicflow place 0 openroad'",
|
|
1492
1573
|
"api: chip.set('flowgraph', 'asicflow', 'place', '0', 'tool', 'openroad')"],
|
|
1493
|
-
schelp="""Name of the tool name used for task execution.
|
|
1494
|
-
is ignored for builtin tasks.""")
|
|
1574
|
+
schelp="""Name of the tool name used for task execution.""")
|
|
1495
1575
|
|
|
1496
1576
|
# task (belonging to tool)
|
|
1497
1577
|
scparam(cfg, ['flowgraph', flow, step, index, 'task'],
|
|
@@ -1501,8 +1581,7 @@ def schema_flowgraph(cfg, flow='default', step='default', index='default'):
|
|
|
1501
1581
|
example=[
|
|
1502
1582
|
"cli: -flowgraph_task 'asicflow myplace 0 place'",
|
|
1503
1583
|
"api: chip.set('flowgraph', 'asicflow', 'myplace', '0', 'task', 'place')"],
|
|
1504
|
-
schelp="""Name of the tool associated task used for step execution.
|
|
1505
|
-
task names include: minimum, maximum, join, verify, mux. """)
|
|
1584
|
+
schelp="""Name of the tool associated task used for step execution.""")
|
|
1506
1585
|
|
|
1507
1586
|
scparam(cfg, ['flowgraph', flow, step, index, 'taskmodule'],
|
|
1508
1587
|
sctype='str',
|
|
@@ -1573,7 +1652,7 @@ def schema_tool(cfg, tool='default'):
|
|
|
1573
1652
|
schelp="""
|
|
1574
1653
|
File system path to tool executable. The path is prepended to the
|
|
1575
1654
|
system PATH environment variable for batch and interactive runs. The
|
|
1576
|
-
path parameter can be left blank if the
|
|
1655
|
+
path parameter can be left blank if the :keypath:`tool,<tool>,exe` is already in the
|
|
1577
1656
|
environment search path.""")
|
|
1578
1657
|
|
|
1579
1658
|
scparam(cfg, ['tool', tool, 'vswitch'],
|
|
@@ -1584,8 +1663,8 @@ def schema_tool(cfg, tool='default'):
|
|
|
1584
1663
|
"api: chip.set('tool', 'openroad', 'vswitch', '-version')"],
|
|
1585
1664
|
schelp="""
|
|
1586
1665
|
Command line switch to use with executable used to print out
|
|
1587
|
-
the version number. Common switches include
|
|
1588
|
-
|
|
1666
|
+
the version number. Common switches include ``-v``, ``-version``,
|
|
1667
|
+
``--version``. Some tools may require extra flags to run in batch mode.""")
|
|
1589
1668
|
|
|
1590
1669
|
scparam(cfg, ['tool', tool, 'vendor'],
|
|
1591
1670
|
sctype='str',
|
|
@@ -1616,7 +1695,7 @@ def schema_tool(cfg, tool='default'):
|
|
|
1616
1695
|
then the job is halted pre-execution. For backwards compatibility,
|
|
1617
1696
|
entries that do not conform to the standard will be interpreted as a
|
|
1618
1697
|
version with an '==' specifier. This check can be disabled by
|
|
1619
|
-
setting
|
|
1698
|
+
setting :keypath:`option,novercheck` to True.""")
|
|
1620
1699
|
|
|
1621
1700
|
scparam(cfg, ['tool', tool, 'format'],
|
|
1622
1701
|
sctype='enum',
|
|
@@ -1641,7 +1720,7 @@ def schema_tool(cfg, tool='default'):
|
|
|
1641
1720
|
Defines a set of tool specific environment variables used by the executable
|
|
1642
1721
|
that depend on license key servers to control access. For multiple servers,
|
|
1643
1722
|
separate each server by a 'colon'. The named license variable are read at
|
|
1644
|
-
runtime (run()) and the environment variables are set.
|
|
1723
|
+
runtime (:meth:`.run()`) and the environment variables are set.
|
|
1645
1724
|
""")
|
|
1646
1725
|
|
|
1647
1726
|
return cfg
|
|
@@ -1747,7 +1826,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1747
1826
|
sctype='[file]',
|
|
1748
1827
|
pernode='optional',
|
|
1749
1828
|
copy=True,
|
|
1750
|
-
shorthelp="Task: setup files",
|
|
1829
|
+
shorthelp="Task: custom setup files",
|
|
1751
1830
|
switch="-tool_task_file 'tool task key <file>'",
|
|
1752
1831
|
example=[
|
|
1753
1832
|
"cli: -tool_task_file 'openroad floorplan macroplace macroplace.tcl'",
|
|
@@ -1763,7 +1842,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1763
1842
|
sctype='[dir]',
|
|
1764
1843
|
pernode='optional',
|
|
1765
1844
|
copy=True,
|
|
1766
|
-
shorthelp="Task: setup directories",
|
|
1845
|
+
shorthelp="Task: custom setup directories",
|
|
1767
1846
|
switch="-tool_task_dir 'tool task key <dir>'",
|
|
1768
1847
|
example=[
|
|
1769
1848
|
"cli: -tool_task_dir 'verilator compile cincludes include'",
|
|
@@ -1779,7 +1858,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1779
1858
|
scparam(cfg, ['tool', tool, 'task', task, 'input'],
|
|
1780
1859
|
sctype='[file]',
|
|
1781
1860
|
pernode='required',
|
|
1782
|
-
shorthelp="Task:
|
|
1861
|
+
shorthelp="Task: input files",
|
|
1783
1862
|
switch="-tool_task_input 'tool task <file>'",
|
|
1784
1863
|
example=[
|
|
1785
1864
|
"cli: -tool_task_input 'openroad place place 0 oh_add.def'",
|
|
@@ -1788,14 +1867,14 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1788
1867
|
schelp="""
|
|
1789
1868
|
List of data files to be copied from previous flowgraph steps 'output'
|
|
1790
1869
|
directory. The list of steps to copy files from is defined by the
|
|
1791
|
-
list defined by the dictionary key
|
|
1870
|
+
list defined by the dictionary key :keypath:`flowgraph,<step>,<index>',input`.
|
|
1792
1871
|
All files must be available for flow to continue. If a file
|
|
1793
1872
|
is missing, the program exists on an error.""")
|
|
1794
1873
|
|
|
1795
1874
|
scparam(cfg, ['tool', tool, 'task', task, 'output'],
|
|
1796
1875
|
sctype='[file]',
|
|
1797
1876
|
pernode='required',
|
|
1798
|
-
shorthelp="Task:
|
|
1877
|
+
shorthelp="Task: output files",
|
|
1799
1878
|
switch="-tool_task_output 'tool task <file>'",
|
|
1800
1879
|
example=[
|
|
1801
1880
|
"cli: -tool_task_output 'openroad place place 0 oh_add.def'",
|
|
@@ -1813,7 +1892,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1813
1892
|
defvalue='log',
|
|
1814
1893
|
scope='job',
|
|
1815
1894
|
pernode='optional',
|
|
1816
|
-
shorthelp="Task:
|
|
1895
|
+
shorthelp="Task: destination for stdout",
|
|
1817
1896
|
switch="-tool_task_stdout_destination 'tool task <str>'",
|
|
1818
1897
|
example=["cli: -tool_task_stdout_destination 'ghdl import log'",
|
|
1819
1898
|
"api: chip.set('tool', 'ghdl', 'task', 'import', 'stdout', 'destination', "
|
|
@@ -1831,7 +1910,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1831
1910
|
defvalue='log',
|
|
1832
1911
|
scope='job',
|
|
1833
1912
|
pernode='optional',
|
|
1834
|
-
shorthelp="Task:
|
|
1913
|
+
shorthelp="Task: file suffix for redirected stdout",
|
|
1835
1914
|
switch="-tool_task_stdout_suffix 'tool task <str>'",
|
|
1836
1915
|
example=["cli: -tool_task_stdout_suffix 'ghdl import log'",
|
|
1837
1916
|
"api: chip.set('tool', ghdl', 'task', 'import', 'stdout', 'suffix', 'log')"],
|
|
@@ -1844,7 +1923,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1844
1923
|
defvalue='log',
|
|
1845
1924
|
scope='job',
|
|
1846
1925
|
pernode='optional',
|
|
1847
|
-
shorthelp="Task:
|
|
1926
|
+
shorthelp="Task: destination for stderr",
|
|
1848
1927
|
switch="-tool_task_stderr_destination 'tool task <str>'",
|
|
1849
1928
|
example=["cli: -tool_task_stderr_destination 'ghdl import log'",
|
|
1850
1929
|
"api: chip.set('tool', ghdl', 'task', 'import', 'stderr', 'destination', "
|
|
@@ -1862,7 +1941,7 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1862
1941
|
defvalue='log',
|
|
1863
1942
|
scope='job',
|
|
1864
1943
|
pernode='optional',
|
|
1865
|
-
shorthelp="Task:
|
|
1944
|
+
shorthelp="Task: file suffix for redirected stderr",
|
|
1866
1945
|
switch="-tool_task_stderr_suffix 'tool task <str>'",
|
|
1867
1946
|
example=["cli: -tool_task_stderr_suffix 'ghdl import log'",
|
|
1868
1947
|
"api: chip.set('tool', 'ghdl', 'task', 'import', 'stderr', 'suffix', 'log')"],
|
|
@@ -1879,14 +1958,14 @@ def schema_task(cfg, tool='default', task='default', step='default', index='defa
|
|
|
1879
1958
|
"api: chip.set('tool', 'openroad', 'task', 'cts', 'require', 'design')"],
|
|
1880
1959
|
schelp="""
|
|
1881
1960
|
List of keypaths to required task parameters. The list is used
|
|
1882
|
-
by check_manifest() to verify that all parameters have been set up before
|
|
1961
|
+
by :meth:`.check_manifest()` to verify that all parameters have been set up before
|
|
1883
1962
|
step execution begins.""")
|
|
1884
1963
|
|
|
1885
1964
|
metric = 'default'
|
|
1886
1965
|
scparam(cfg, ['tool', tool, 'task', task, 'report', metric],
|
|
1887
1966
|
sctype='[file]',
|
|
1888
1967
|
pernode='required',
|
|
1889
|
-
shorthelp="Task:
|
|
1968
|
+
shorthelp="Task: metric report files",
|
|
1890
1969
|
switch="-tool_task_report 'tool task metric <file>'",
|
|
1891
1970
|
example=[
|
|
1892
1971
|
"cli: -tool_task_report 'openroad place holdtns place 0 place.log'",
|
|
@@ -1976,7 +2055,7 @@ def schema_arg(cfg):
|
|
|
1976
2055
|
scparam(cfg, ['arg', 'step'],
|
|
1977
2056
|
sctype='str',
|
|
1978
2057
|
scope='scratch',
|
|
1979
|
-
shorthelp="ARG:
|
|
2058
|
+
shorthelp="ARG: step argument",
|
|
1980
2059
|
switch="-arg_step <str>",
|
|
1981
2060
|
example=["cli: -arg_step 'route'",
|
|
1982
2061
|
"api: chip.set('arg', 'step', 'route')"],
|
|
@@ -1984,13 +2063,13 @@ def schema_arg(cfg):
|
|
|
1984
2063
|
Dynamic parameter passed in by the SC runtime as an argument to
|
|
1985
2064
|
a runtime task. The parameter enables configuration code
|
|
1986
2065
|
(usually TCL) to use control flow that depend on the current
|
|
1987
|
-
'step'. The parameter is used the run() function and
|
|
2066
|
+
'step'. The parameter is used the :meth:`.run()` function and
|
|
1988
2067
|
is not intended for external use.""")
|
|
1989
2068
|
|
|
1990
2069
|
scparam(cfg, ['arg', 'index'],
|
|
1991
2070
|
sctype='str',
|
|
1992
2071
|
scope='scratch',
|
|
1993
|
-
shorthelp="ARG:
|
|
2072
|
+
shorthelp="ARG: index argument",
|
|
1994
2073
|
switch="-arg_index <str>",
|
|
1995
2074
|
example=["cli: -arg_index 0",
|
|
1996
2075
|
"api: chip.set('arg', 'index', '0')"],
|
|
@@ -1998,7 +2077,7 @@ def schema_arg(cfg):
|
|
|
1998
2077
|
Dynamic parameter passed in by the SC runtime as an argument to
|
|
1999
2078
|
a runtime task. The parameter enables configuration code
|
|
2000
2079
|
(usually TCL) to use control flow that depend on the current
|
|
2001
|
-
'index'. The parameter is used the run() function and
|
|
2080
|
+
'index'. The parameter is used the :meth:`.run()` function and
|
|
2002
2081
|
is not intended for external use.""")
|
|
2003
2082
|
|
|
2004
2083
|
return cfg
|
|
@@ -2292,7 +2371,7 @@ def schema_metric(cfg, step='default', index='default'):
|
|
|
2292
2371
|
f"api: chip.set('metric', '{item}', 10.0, step='dfm', index=0)"],
|
|
2293
2372
|
pernode='required',
|
|
2294
2373
|
schelp="""
|
|
2295
|
-
Metric tracking time spent by the EDA executable
|
|
2374
|
+
Metric tracking time spent by the EDA executable :keypath:`tool,<tool>,exe` on a
|
|
2296
2375
|
per step and index basis. It does not include the SiliconCompiler
|
|
2297
2376
|
runtime overhead or time waiting for I/O operations and
|
|
2298
2377
|
inter-processor communication to complete.""")
|
|
@@ -2479,7 +2558,7 @@ def schema_option(cfg):
|
|
|
2479
2558
|
scparam(cfg, ['option', 'remote'],
|
|
2480
2559
|
sctype='bool',
|
|
2481
2560
|
scope='job',
|
|
2482
|
-
shorthelp="
|
|
2561
|
+
shorthelp="Option: enable remote processing",
|
|
2483
2562
|
switch="-remote <bool>",
|
|
2484
2563
|
example=[
|
|
2485
2564
|
"cli: -remote",
|
|
@@ -2493,7 +2572,7 @@ def schema_option(cfg):
|
|
|
2493
2572
|
scparam(cfg, ['option', 'credentials'],
|
|
2494
2573
|
sctype='file',
|
|
2495
2574
|
scope='job',
|
|
2496
|
-
shorthelp="
|
|
2575
|
+
shorthelp="Option: user credentials file",
|
|
2497
2576
|
switch="-credentials <file>",
|
|
2498
2577
|
example=[
|
|
2499
2578
|
"cli: -credentials /home/user/.sc/credentials",
|
|
@@ -2515,7 +2594,7 @@ def schema_option(cfg):
|
|
|
2515
2594
|
scparam(cfg, ['option', 'cachedir'],
|
|
2516
2595
|
sctype='file',
|
|
2517
2596
|
scope='job',
|
|
2518
|
-
shorthelp="
|
|
2597
|
+
shorthelp="Option: user cache directory",
|
|
2519
2598
|
switch="-cachedir <file>",
|
|
2520
2599
|
example=[
|
|
2521
2600
|
"cli: -cachedir /home/user/.sc/cache",
|
|
@@ -2529,7 +2608,7 @@ def schema_option(cfg):
|
|
|
2529
2608
|
sctype='int',
|
|
2530
2609
|
scope='job',
|
|
2531
2610
|
pernode='optional',
|
|
2532
|
-
shorthelp="
|
|
2611
|
+
shorthelp="Option: tool scheduling priority",
|
|
2533
2612
|
switch="-nice <int>",
|
|
2534
2613
|
example=[
|
|
2535
2614
|
"cli: -nice 5",
|
|
@@ -2543,7 +2622,7 @@ def schema_option(cfg):
|
|
|
2543
2622
|
scparam(cfg, ['option', 'pdk'],
|
|
2544
2623
|
sctype='str',
|
|
2545
2624
|
scope='job',
|
|
2546
|
-
shorthelp="PDK target",
|
|
2625
|
+
shorthelp="Option: PDK target",
|
|
2547
2626
|
switch="-pdk <str>",
|
|
2548
2627
|
example=["cli: -pdk freepdk45",
|
|
2549
2628
|
"api: chip.set('option', 'pdk', 'freepdk45')"],
|
|
@@ -2553,7 +2632,7 @@ def schema_option(cfg):
|
|
|
2553
2632
|
scparam(cfg, ['option', 'stackup'],
|
|
2554
2633
|
sctype='str',
|
|
2555
2634
|
scope='job',
|
|
2556
|
-
shorthelp="
|
|
2635
|
+
shorthelp="Option: stackup target",
|
|
2557
2636
|
switch="-stackup <str>",
|
|
2558
2637
|
example=["cli: -stackup 2MA4MB2MC",
|
|
2559
2638
|
"api: chip.set('option', 'stackup', '2MA4MB2MC')"],
|
|
@@ -2564,7 +2643,7 @@ def schema_option(cfg):
|
|
|
2564
2643
|
scparam(cfg, ['option', 'flow'],
|
|
2565
2644
|
sctype='str',
|
|
2566
2645
|
scope='job',
|
|
2567
|
-
shorthelp="
|
|
2646
|
+
shorthelp="Option: flow target",
|
|
2568
2647
|
switch="-flow <str>",
|
|
2569
2648
|
example=["cli: -flow asicflow",
|
|
2570
2649
|
"api: chip.set('option', 'flow', 'asicflow')"],
|
|
@@ -2577,7 +2656,7 @@ def schema_option(cfg):
|
|
|
2577
2656
|
pernode='optional',
|
|
2578
2657
|
scope='job',
|
|
2579
2658
|
defvalue='O0',
|
|
2580
|
-
shorthelp="
|
|
2659
|
+
shorthelp="Option: optimization mode",
|
|
2581
2660
|
switch=["-O<str>",
|
|
2582
2661
|
"-optmode <str>"],
|
|
2583
2662
|
example=["cli: -O3",
|
|
@@ -2598,7 +2677,7 @@ def schema_option(cfg):
|
|
|
2598
2677
|
scparam(cfg, ['option', 'cfg'],
|
|
2599
2678
|
sctype='[file]',
|
|
2600
2679
|
scope='job',
|
|
2601
|
-
shorthelp="
|
|
2680
|
+
shorthelp="Option: configuration manifest",
|
|
2602
2681
|
switch="-cfg <file>",
|
|
2603
2682
|
example=["cli: -cfg mypdk.json",
|
|
2604
2683
|
"api: chip.set('option', 'cfg', 'mypdk.json')"],
|
|
@@ -2607,13 +2686,13 @@ def schema_option(cfg):
|
|
|
2607
2686
|
manifests. The files are read in automatically when using the
|
|
2608
2687
|
'sc' command line application. In Python programs, JSON manifests
|
|
2609
2688
|
can be merged into the current working manifest using the
|
|
2610
|
-
read_manifest() method.""")
|
|
2689
|
+
:meth:`Chip.read_manifest()` method.""")
|
|
2611
2690
|
|
|
2612
2691
|
key = 'default'
|
|
2613
2692
|
scparam(cfg, ['option', 'env', key],
|
|
2614
2693
|
sctype='str',
|
|
2615
2694
|
scope='job',
|
|
2616
|
-
shorthelp="
|
|
2695
|
+
shorthelp="Option: environment variables",
|
|
2617
2696
|
switch="-env 'key <str>'",
|
|
2618
2697
|
example=[
|
|
2619
2698
|
"cli: -env 'PDK_HOME /disk/mypdk'",
|
|
@@ -2626,7 +2705,7 @@ def schema_option(cfg):
|
|
|
2626
2705
|
scparam(cfg, ['option', 'var', key],
|
|
2627
2706
|
sctype='[str]',
|
|
2628
2707
|
scope='job',
|
|
2629
|
-
shorthelp="
|
|
2708
|
+
shorthelp="Option: custom variables",
|
|
2630
2709
|
switch="-var 'key <str>'",
|
|
2631
2710
|
example=[
|
|
2632
2711
|
"cli: -var 'openroad_place_density 0.4'",
|
|
@@ -2641,7 +2720,7 @@ def schema_option(cfg):
|
|
|
2641
2720
|
sctype='[file]',
|
|
2642
2721
|
scope='job',
|
|
2643
2722
|
copy=True,
|
|
2644
|
-
shorthelp="
|
|
2723
|
+
shorthelp="Option: custom files",
|
|
2645
2724
|
switch="-file 'key <file>'",
|
|
2646
2725
|
example=[
|
|
2647
2726
|
"cli: -file 'openroad_tapcell ./tapcell.tcl'",
|
|
@@ -2656,7 +2735,7 @@ def schema_option(cfg):
|
|
|
2656
2735
|
sctype='[dir]',
|
|
2657
2736
|
scope='job',
|
|
2658
2737
|
copy=True,
|
|
2659
|
-
shorthelp="
|
|
2738
|
+
shorthelp="Option: custom directories",
|
|
2660
2739
|
switch="-dir 'key <dir>'",
|
|
2661
2740
|
example=[
|
|
2662
2741
|
"cli: -dir 'openroad_tapcell ./tapcell.tcl'",
|
|
@@ -2673,7 +2752,7 @@ def schema_option(cfg):
|
|
|
2673
2752
|
pernode='optional',
|
|
2674
2753
|
scope='job',
|
|
2675
2754
|
defvalue='info',
|
|
2676
|
-
shorthelp="
|
|
2755
|
+
shorthelp="Option: logging level",
|
|
2677
2756
|
switch="-loglevel <str>",
|
|
2678
2757
|
example=[
|
|
2679
2758
|
"cli: -loglevel info",
|
|
@@ -2685,27 +2764,27 @@ def schema_option(cfg):
|
|
|
2685
2764
|
sctype='dir',
|
|
2686
2765
|
scope='job',
|
|
2687
2766
|
defvalue='build',
|
|
2688
|
-
shorthelp="
|
|
2767
|
+
shorthelp="Option: build directory",
|
|
2689
2768
|
switch="-builddir <dir>",
|
|
2690
2769
|
example=[
|
|
2691
2770
|
"cli: -builddir ./build_the_future",
|
|
2692
2771
|
"api: chip.set('option', 'builddir', './build_the_future')"],
|
|
2693
2772
|
schelp="""
|
|
2694
2773
|
The default build directory is in the local './build' where SC was
|
|
2695
|
-
executed.
|
|
2774
|
+
executed. This can be used to set an alternate
|
|
2696
2775
|
compilation directory path.""")
|
|
2697
2776
|
|
|
2698
2777
|
scparam(cfg, ['option', 'jobname'],
|
|
2699
2778
|
sctype='str',
|
|
2700
2779
|
scope='job',
|
|
2701
2780
|
defvalue='job0',
|
|
2702
|
-
shorthelp="
|
|
2781
|
+
shorthelp="Option: job name",
|
|
2703
2782
|
switch="-jobname <str>",
|
|
2704
2783
|
example=[
|
|
2705
2784
|
"cli: -jobname may1",
|
|
2706
2785
|
"api: chip.set('option', 'jobname', 'may1')"],
|
|
2707
2786
|
schelp="""
|
|
2708
|
-
Jobname during invocation of run()
|
|
2787
|
+
Jobname during invocation of :meth:`.run()`. The jobname combined with a
|
|
2709
2788
|
defined director structure (<dir>/<design>/<jobname>/<step>/<index>)
|
|
2710
2789
|
enables multiple levels of transparent job, step, and index
|
|
2711
2790
|
introspection.""")
|
|
@@ -2713,7 +2792,7 @@ def schema_option(cfg):
|
|
|
2713
2792
|
scparam(cfg, ['option', 'from'],
|
|
2714
2793
|
sctype='[str]',
|
|
2715
2794
|
scope='job',
|
|
2716
|
-
shorthelp="
|
|
2795
|
+
shorthelp="Option: starting step",
|
|
2717
2796
|
switch="-from <str>",
|
|
2718
2797
|
example=[
|
|
2719
2798
|
"cli: -from 'import'",
|
|
@@ -2725,7 +2804,7 @@ def schema_option(cfg):
|
|
|
2725
2804
|
scparam(cfg, ['option', 'to'],
|
|
2726
2805
|
sctype='[str]',
|
|
2727
2806
|
scope='job',
|
|
2728
|
-
shorthelp="
|
|
2807
|
+
shorthelp="Option: ending step",
|
|
2729
2808
|
switch="-to <str>",
|
|
2730
2809
|
example=[
|
|
2731
2810
|
"cli: -to 'syn'",
|
|
@@ -2737,7 +2816,7 @@ def schema_option(cfg):
|
|
|
2737
2816
|
scparam(cfg, ['option', 'prune'],
|
|
2738
2817
|
sctype='[(str,str)]',
|
|
2739
2818
|
scope='job',
|
|
2740
|
-
shorthelp="
|
|
2819
|
+
shorthelp="Option: flowgraph pruning",
|
|
2741
2820
|
switch="-prune 'node <(str,str)>'",
|
|
2742
2821
|
example=[
|
|
2743
2822
|
"cli: -prune (syn,0)",
|
|
@@ -2750,7 +2829,7 @@ def schema_option(cfg):
|
|
|
2750
2829
|
sctype='bool',
|
|
2751
2830
|
scope='job',
|
|
2752
2831
|
pernode='optional',
|
|
2753
|
-
shorthelp="
|
|
2832
|
+
shorthelp="Option: breakpoint list",
|
|
2754
2833
|
switch="-breakpoint <bool>",
|
|
2755
2834
|
example=[
|
|
2756
2835
|
"cli: -breakpoint true",
|
|
@@ -2765,7 +2844,7 @@ def schema_option(cfg):
|
|
|
2765
2844
|
sctype='[str]',
|
|
2766
2845
|
scope='job',
|
|
2767
2846
|
pernode='optional',
|
|
2768
|
-
shorthelp="
|
|
2847
|
+
shorthelp="Option: library list",
|
|
2769
2848
|
switch="-library <str>",
|
|
2770
2849
|
example=["cli: -library lambdalib_asap7",
|
|
2771
2850
|
"api: chip.set('option', 'library', 'lambdalib_asap7')"],
|
|
@@ -2776,7 +2855,7 @@ def schema_option(cfg):
|
|
|
2776
2855
|
scparam(cfg, ['option', 'clean'],
|
|
2777
2856
|
sctype='bool',
|
|
2778
2857
|
scope='job',
|
|
2779
|
-
shorthelp="
|
|
2858
|
+
shorthelp="Option: cleanup previous job",
|
|
2780
2859
|
switch="-clean <bool>",
|
|
2781
2860
|
example=["cli: -clean",
|
|
2782
2861
|
"api: chip.set('option', 'clean', True)"],
|
|
@@ -2789,7 +2868,7 @@ def schema_option(cfg):
|
|
|
2789
2868
|
scparam(cfg, ['option', 'hash'],
|
|
2790
2869
|
sctype='bool',
|
|
2791
2870
|
scope='job',
|
|
2792
|
-
shorthelp="
|
|
2871
|
+
shorthelp="Option: file hashing",
|
|
2793
2872
|
switch="-hash <bool>",
|
|
2794
2873
|
example=["cli: -hash",
|
|
2795
2874
|
"api: chip.set('option', 'hash', True)"],
|
|
@@ -2801,19 +2880,19 @@ def schema_option(cfg):
|
|
|
2801
2880
|
scparam(cfg, ['option', 'nodisplay'],
|
|
2802
2881
|
sctype='bool',
|
|
2803
2882
|
scope='job',
|
|
2804
|
-
shorthelp="
|
|
2883
|
+
shorthelp="Option: headless execution",
|
|
2805
2884
|
switch="-nodisplay <bool>",
|
|
2806
2885
|
example=["cli: -nodisplay",
|
|
2807
2886
|
"api: chip.set('option', 'nodisplay', True)"],
|
|
2808
2887
|
schelp="""
|
|
2809
|
-
|
|
2810
|
-
|
|
2888
|
+
This flag prevents SiliconCompiler from opening GUI windows such as
|
|
2889
|
+
the final metrics report.""")
|
|
2811
2890
|
|
|
2812
2891
|
scparam(cfg, ['option', 'quiet'],
|
|
2813
2892
|
sctype='bool',
|
|
2814
2893
|
pernode='optional',
|
|
2815
2894
|
scope='job',
|
|
2816
|
-
shorthelp="
|
|
2895
|
+
shorthelp="Option: quiet execution",
|
|
2817
2896
|
switch="-quiet <bool>",
|
|
2818
2897
|
example=["cli: -quiet",
|
|
2819
2898
|
"api: chip.set('option', 'quiet', True)"],
|
|
@@ -2825,7 +2904,7 @@ def schema_option(cfg):
|
|
|
2825
2904
|
scparam(cfg, ['option', 'jobincr'],
|
|
2826
2905
|
sctype='bool',
|
|
2827
2906
|
scope='job',
|
|
2828
|
-
shorthelp="
|
|
2907
|
+
shorthelp="Option: autoincrement jobname",
|
|
2829
2908
|
switch="-jobincr <bool>",
|
|
2830
2909
|
example=["cli: -jobincr",
|
|
2831
2910
|
"api: chip.set('option', 'jobincr', True)"],
|
|
@@ -2841,20 +2920,20 @@ def schema_option(cfg):
|
|
|
2841
2920
|
pernode='optional',
|
|
2842
2921
|
defvalue=False,
|
|
2843
2922
|
scope='job',
|
|
2844
|
-
shorthelp="
|
|
2923
|
+
shorthelp="Option: disable version checking",
|
|
2845
2924
|
switch="-novercheck <bool>",
|
|
2846
2925
|
example=["cli: -novercheck",
|
|
2847
2926
|
"api: chip.set('option', 'novercheck', True)"],
|
|
2848
2927
|
schelp="""
|
|
2849
2928
|
Disables strict version checking on all invoked tools if True.
|
|
2850
2929
|
The list of supported version numbers is defined in the
|
|
2851
|
-
|
|
2930
|
+
:keypath:`tool,<tool>,version`.""")
|
|
2852
2931
|
|
|
2853
2932
|
scparam(cfg, ['option', 'track'],
|
|
2854
2933
|
sctype='bool',
|
|
2855
2934
|
pernode='optional',
|
|
2856
2935
|
scope='job',
|
|
2857
|
-
shorthelp="
|
|
2936
|
+
shorthelp="Option: enable provenance tracking",
|
|
2858
2937
|
switch="-track <bool>",
|
|
2859
2938
|
example=["cli: -track",
|
|
2860
2939
|
"api: chip.set('option', 'track', True)"],
|
|
@@ -2868,16 +2947,16 @@ def schema_option(cfg):
|
|
|
2868
2947
|
scparam(cfg, ['option', 'entrypoint'],
|
|
2869
2948
|
sctype='str',
|
|
2870
2949
|
pernode='optional',
|
|
2871
|
-
shorthelp="
|
|
2950
|
+
shorthelp="Option: program entry point",
|
|
2872
2951
|
switch="-entrypoint <str>",
|
|
2873
2952
|
example=["cli: -entrypoint top",
|
|
2874
2953
|
"api: chip.set('option', 'entrypoint', 'top')"],
|
|
2875
2954
|
schelp="""Alternative entrypoint for compilation and
|
|
2876
|
-
simulation. The default entry point is
|
|
2955
|
+
simulation. The default entry point is :keypath:`design`.""")
|
|
2877
2956
|
|
|
2878
2957
|
scparam(cfg, ['option', 'idir'],
|
|
2879
2958
|
sctype='[dir]',
|
|
2880
|
-
shorthelp="
|
|
2959
|
+
shorthelp="Option: design search paths",
|
|
2881
2960
|
copy=True,
|
|
2882
2961
|
switch=['+incdir+<dir>',
|
|
2883
2962
|
'-I <dir>',
|
|
@@ -2893,7 +2972,7 @@ def schema_option(cfg):
|
|
|
2893
2972
|
|
|
2894
2973
|
scparam(cfg, ['option', 'ydir'],
|
|
2895
2974
|
sctype='[dir]',
|
|
2896
|
-
shorthelp="
|
|
2975
|
+
shorthelp="Option: design module search paths",
|
|
2897
2976
|
copy=True,
|
|
2898
2977
|
switch=['-y <dir>',
|
|
2899
2978
|
'-ydir <dir>'],
|
|
@@ -2904,11 +2983,11 @@ def schema_option(cfg):
|
|
|
2904
2983
|
schelp="""
|
|
2905
2984
|
Search paths to look for verilog modules found in the the
|
|
2906
2985
|
source list. The import engine will look for modules inside
|
|
2907
|
-
files with the specified
|
|
2986
|
+
files with the specified :keypath:`option,libext` param suffix.""")
|
|
2908
2987
|
|
|
2909
2988
|
scparam(cfg, ['option', 'vlib'],
|
|
2910
2989
|
sctype='[file]',
|
|
2911
|
-
shorthelp="
|
|
2990
|
+
shorthelp="Option: design libraries",
|
|
2912
2991
|
copy=True,
|
|
2913
2992
|
switch=['-v <file>',
|
|
2914
2993
|
'-vlib <file>'],
|
|
@@ -2921,7 +3000,7 @@ def schema_option(cfg):
|
|
|
2921
3000
|
|
|
2922
3001
|
scparam(cfg, ['option', 'define'],
|
|
2923
3002
|
sctype='[str]',
|
|
2924
|
-
shorthelp="
|
|
3003
|
+
shorthelp="Option: design pre-processor symbol",
|
|
2925
3004
|
switch=["-D<str>",
|
|
2926
3005
|
"-define <str>"],
|
|
2927
3006
|
example=["cli: -DCFG_ASIC=1",
|
|
@@ -2931,7 +3010,7 @@ def schema_option(cfg):
|
|
|
2931
3010
|
|
|
2932
3011
|
scparam(cfg, ['option', 'libext'],
|
|
2933
3012
|
sctype='[str]',
|
|
2934
|
-
shorthelp="
|
|
3013
|
+
shorthelp="Option: design file extensions",
|
|
2935
3014
|
switch=["+libext+<str>",
|
|
2936
3015
|
"-libext <str>"],
|
|
2937
3016
|
example=[
|
|
@@ -2940,14 +3019,14 @@ def schema_option(cfg):
|
|
|
2940
3019
|
"api: chip.set('option', 'libext', 'sv')"],
|
|
2941
3020
|
schelp="""
|
|
2942
3021
|
List of file extensions that should be used for finding modules.
|
|
2943
|
-
For example, if
|
|
2944
|
-
libext then the files ./lib/\\*.v ", will be searched for
|
|
3022
|
+
For example, if :keypath:`option,ydir` is specified as ./lib", and '.v'
|
|
3023
|
+
is specified as libext then the files ./lib/\\*.v ", will be searched for
|
|
2945
3024
|
module matches.""")
|
|
2946
3025
|
|
|
2947
3026
|
name = 'default'
|
|
2948
3027
|
scparam(cfg, ['option', 'param', name],
|
|
2949
3028
|
sctype='str',
|
|
2950
|
-
shorthelp="
|
|
3029
|
+
shorthelp="Option: design parameter",
|
|
2951
3030
|
switch="-param 'name <str>'",
|
|
2952
3031
|
example=[
|
|
2953
3032
|
"cli: -param 'N 64'",
|
|
@@ -2962,7 +3041,7 @@ def schema_option(cfg):
|
|
|
2962
3041
|
scparam(cfg, ['option', 'continue'],
|
|
2963
3042
|
sctype='bool',
|
|
2964
3043
|
pernode='optional',
|
|
2965
|
-
shorthelp='continue-on-error',
|
|
3044
|
+
shorthelp='Option: continue-on-error',
|
|
2966
3045
|
switch='-continue <bool>',
|
|
2967
3046
|
example=["cli: -continue",
|
|
2968
3047
|
"api: chip.set('option', 'continue', True)"],
|
|
@@ -2979,19 +3058,18 @@ def schema_option(cfg):
|
|
|
2979
3058
|
pernode='optional',
|
|
2980
3059
|
scope='job',
|
|
2981
3060
|
unit='s',
|
|
2982
|
-
shorthelp="Option:
|
|
3061
|
+
shorthelp="Option: timeout value",
|
|
2983
3062
|
switch="-timeout <float>",
|
|
2984
3063
|
example=["cli: -timeout 3600",
|
|
2985
3064
|
"api: chip.set('option', 'timeout', 3600)"],
|
|
2986
3065
|
schelp="""
|
|
2987
3066
|
Timeout value in seconds. The timeout value is compared
|
|
2988
3067
|
against the wall time tracked by the SC runtime to determine
|
|
2989
|
-
if an operation should continue.
|
|
2990
|
-
used by the jobscheduler to automatically kill jobs.""")
|
|
3068
|
+
if an operation should continue.""")
|
|
2991
3069
|
|
|
2992
3070
|
scparam(cfg, ['option', 'strict'],
|
|
2993
3071
|
sctype='bool',
|
|
2994
|
-
shorthelp="Option:
|
|
3072
|
+
shorthelp="Option: strict checking",
|
|
2995
3073
|
switch="-strict <bool>",
|
|
2996
3074
|
example=["cli: -strict true",
|
|
2997
3075
|
"api: chip.set('option', 'strict', True)"],
|
|
@@ -3007,7 +3085,7 @@ def schema_option(cfg):
|
|
|
3007
3085
|
enum=["slurm", "lsf", "sge", "docker"],
|
|
3008
3086
|
scope='job',
|
|
3009
3087
|
pernode='optional',
|
|
3010
|
-
shorthelp="Option:
|
|
3088
|
+
shorthelp="Option: scheduler platform",
|
|
3011
3089
|
switch="-scheduler <str>",
|
|
3012
3090
|
example=[
|
|
3013
3091
|
"cli: -scheduler slurm",
|
|
@@ -3040,7 +3118,7 @@ def schema_option(cfg):
|
|
|
3040
3118
|
unit='MB',
|
|
3041
3119
|
scope='job',
|
|
3042
3120
|
pernode='optional',
|
|
3043
|
-
shorthelp="Option:
|
|
3121
|
+
shorthelp="Option: scheduler memory constraint",
|
|
3044
3122
|
switch="-memory <int>",
|
|
3045
3123
|
example=["cli: -memory 8000",
|
|
3046
3124
|
"api: chip.set('option', 'scheduler', 'memory', '8000')"],
|
|
@@ -3054,7 +3132,7 @@ def schema_option(cfg):
|
|
|
3054
3132
|
sctype='str',
|
|
3055
3133
|
scope='job',
|
|
3056
3134
|
pernode='optional',
|
|
3057
|
-
shorthelp="Option:
|
|
3135
|
+
shorthelp="Option: scheduler queue",
|
|
3058
3136
|
switch="-queue <str>",
|
|
3059
3137
|
example=["cli: -queue nightrun",
|
|
3060
3138
|
"api: chip.set('option', 'scheduler', 'queue', 'nightrun')"],
|
|
@@ -3068,7 +3146,7 @@ def schema_option(cfg):
|
|
|
3068
3146
|
sctype='str',
|
|
3069
3147
|
scope='job',
|
|
3070
3148
|
pernode='optional',
|
|
3071
|
-
shorthelp="Option:
|
|
3149
|
+
shorthelp="Option: scheduler start time",
|
|
3072
3150
|
switch="-defer <str>",
|
|
3073
3151
|
example=["cli: -defer 16:00",
|
|
3074
3152
|
"api: chip.set('option', 'scheduler', 'defer', '16:00')"],
|
|
@@ -3083,7 +3161,7 @@ def schema_option(cfg):
|
|
|
3083
3161
|
scparam(cfg, ['option', 'scheduler', 'options'],
|
|
3084
3162
|
sctype='[str]',
|
|
3085
3163
|
pernode='optional',
|
|
3086
|
-
shorthelp="Option:
|
|
3164
|
+
shorthelp="Option: scheduler arguments",
|
|
3087
3165
|
switch="-scheduler_options <str>",
|
|
3088
3166
|
example=[
|
|
3089
3167
|
"cli: -scheduler_options \"--pty\"",
|
|
@@ -3099,14 +3177,14 @@ def schema_option(cfg):
|
|
|
3099
3177
|
enum=['all', 'summary', 'begin', 'end', 'timeout', 'fail'],
|
|
3100
3178
|
scope='job',
|
|
3101
3179
|
pernode='optional',
|
|
3102
|
-
shorthelp="Option:
|
|
3180
|
+
shorthelp="Option: message event trigger",
|
|
3103
3181
|
switch="-msgevent <str>",
|
|
3104
3182
|
example=[
|
|
3105
3183
|
"cli: -msgevent all",
|
|
3106
3184
|
"api: chip.set('option', 'scheduler', 'msgevent', 'all')"],
|
|
3107
3185
|
schelp="""
|
|
3108
3186
|
Directs job scheduler to send a message to the user in
|
|
3109
|
-
|
|
3187
|
+
:keypath:`option,scheduler,msgcontact` when certain events occur
|
|
3110
3188
|
during a task.
|
|
3111
3189
|
|
|
3112
3190
|
* fail: send an email on failures
|
|
@@ -3121,19 +3199,19 @@ def schema_option(cfg):
|
|
|
3121
3199
|
sctype='[str]',
|
|
3122
3200
|
scope='job',
|
|
3123
3201
|
pernode='optional',
|
|
3124
|
-
shorthelp="Option:
|
|
3202
|
+
shorthelp="Option: message contact",
|
|
3125
3203
|
switch="-msgcontact <str>",
|
|
3126
3204
|
example=[
|
|
3127
3205
|
"cli: -msgcontact 'wile.e.coyote@acme.com'",
|
|
3128
3206
|
"api: chip.set('option', 'scheduler', 'msgcontact', 'wiley@acme.com')"],
|
|
3129
3207
|
schelp="""
|
|
3130
|
-
List of email addresses to message on a
|
|
3131
|
-
email messages relies on job scheduler daemon support.
|
|
3208
|
+
List of email addresses to message on a :keypath:`option,scheduler,msgevent`.
|
|
3209
|
+
Support for email messages relies on job scheduler daemon support.
|
|
3132
3210
|
For more information, see the job scheduler documentation. """)
|
|
3133
3211
|
|
|
3134
3212
|
scparam(cfg, ['option', 'scheduler', 'maxnodes'],
|
|
3135
3213
|
sctype='int',
|
|
3136
|
-
shorthelp="Option:
|
|
3214
|
+
shorthelp="Option: maximum concurrent nodes",
|
|
3137
3215
|
switch="-maxnodes <int>",
|
|
3138
3216
|
example=["cli: -maxnodes 4",
|
|
3139
3217
|
"api: chip.set('option', 'scheduler', 'maxnodes', 4)"],
|
|
@@ -3214,7 +3292,7 @@ def schema_package(cfg):
|
|
|
3214
3292
|
example=[
|
|
3215
3293
|
f"cli: -package_doc_{item} {item}.pdf",
|
|
3216
3294
|
f"api: chip.set('package', 'doc', '{item}', '{item}.pdf')"],
|
|
3217
|
-
schelp=f"""
|
|
3295
|
+
schelp=f"""Package list of {item} documents.""")
|
|
3218
3296
|
|
|
3219
3297
|
scparam(cfg, ['package', 'license'],
|
|
3220
3298
|
sctype='[str]',
|
|
@@ -3236,7 +3314,7 @@ def schema_package(cfg):
|
|
|
3236
3314
|
"api: chip.set('package', 'licensefile', './LICENSE')"],
|
|
3237
3315
|
schelp="""Package list of license files for to be
|
|
3238
3316
|
applied in cases when a SPDX identifier is not available.
|
|
3239
|
-
(eg. proprietary licenses).
|
|
3317
|
+
(eg. proprietary licenses).""")
|
|
3240
3318
|
|
|
3241
3319
|
scparam(cfg, ['package', 'organization'],
|
|
3242
3320
|
sctype='[str]',
|
|
@@ -3273,7 +3351,7 @@ def schema_package(cfg):
|
|
|
3273
3351
|
scparam(cfg, ['package', 'source', source, 'path'],
|
|
3274
3352
|
sctype='str',
|
|
3275
3353
|
scope='global',
|
|
3276
|
-
shorthelp="Package data source path",
|
|
3354
|
+
shorthelp="Package: data source path",
|
|
3277
3355
|
switch="-package_source_path 'source <str>'",
|
|
3278
3356
|
example=[
|
|
3279
3357
|
"cli: -package_source_path "
|
|
@@ -3297,14 +3375,12 @@ def schema_package(cfg):
|
|
|
3297
3375
|
scparam(cfg, ['package', 'source', source, 'ref'],
|
|
3298
3376
|
sctype='str',
|
|
3299
3377
|
scope='global',
|
|
3300
|
-
shorthelp="Package data source reference",
|
|
3378
|
+
shorthelp="Package: data source reference",
|
|
3301
3379
|
switch="-package_source_ref 'source <str>'",
|
|
3302
3380
|
example=[
|
|
3303
3381
|
"cli: -package_source_ref 'freepdk45_data 07ec4aa'",
|
|
3304
3382
|
"api: chip.set('package', 'source', 'freepdk45_data', 'ref', '07ec4aa')"],
|
|
3305
|
-
schelp="""
|
|
3306
|
-
Package data source reference
|
|
3307
|
-
""")
|
|
3383
|
+
schelp="""Package data source reference""")
|
|
3308
3384
|
|
|
3309
3385
|
return cfg
|
|
3310
3386
|
|
|
@@ -3473,7 +3549,7 @@ def schema_asic(cfg):
|
|
|
3473
3549
|
example=["cli: -asic_delaymodel ccs",
|
|
3474
3550
|
"api: chip.set('asic', 'delaymodel', 'ccs')"],
|
|
3475
3551
|
schelp="""
|
|
3476
|
-
Delay model to use for the target libs.
|
|
3552
|
+
Delay model to use for the target libs. Commonly supported values
|
|
3477
3553
|
are nldm and ccs.""")
|
|
3478
3554
|
|
|
3479
3555
|
# TODO: Expand on the exact definitions of these types of cells.
|
|
@@ -3522,7 +3598,7 @@ def schema_asic(cfg):
|
|
|
3522
3598
|
scparam(cfg, ['asic', 'site', libarch],
|
|
3523
3599
|
sctype='[str]',
|
|
3524
3600
|
pernode='optional',
|
|
3525
|
-
shorthelp="ASIC:
|
|
3601
|
+
shorthelp="ASIC: library sites",
|
|
3526
3602
|
switch="-asic_site 'libarch <str>'",
|
|
3527
3603
|
example=[
|
|
3528
3604
|
"cli: -asic_site '12track Site_12T'",
|
|
@@ -3585,8 +3661,7 @@ def schema_constraint(cfg):
|
|
|
3585
3661
|
example=["cli: -constraint_timing_pexcorner 'worst max'",
|
|
3586
3662
|
"api: chip.set('constraint', 'timing', 'worst', 'pexcorner', 'max')"],
|
|
3587
3663
|
schelp="""Parasitic corner applied to the scenario. The
|
|
3588
|
-
'pexcorner' string must match a corner found in
|
|
3589
|
-
pexmodel setup.""")
|
|
3664
|
+
'pexcorner' string must match a corner found in :keypath:`pdk,<pdk>,pexmodel`.""")
|
|
3590
3665
|
|
|
3591
3666
|
scparam(cfg, ['constraint', 'timing', scenario, 'opcond'],
|
|
3592
3667
|
sctype='str',
|
|
@@ -3598,7 +3673,7 @@ def schema_constraint(cfg):
|
|
|
3598
3673
|
"api: chip.set('constraint', 'timing', 'worst', 'opcond', 'typical_1.0')"],
|
|
3599
3674
|
schelp="""Operating condition applied to the scenario. The value
|
|
3600
3675
|
can be used to access specific conditions within the library
|
|
3601
|
-
timing models from the
|
|
3676
|
+
timing models from the :keypath:`asic,logiclib` timing models.""")
|
|
3602
3677
|
|
|
3603
3678
|
scparam(cfg, ['constraint', 'timing', scenario, 'mode'],
|
|
3604
3679
|
sctype='str',
|
|
@@ -3647,38 +3722,30 @@ def schema_constraint(cfg):
|
|
|
3647
3722
|
inst = 'default'
|
|
3648
3723
|
|
|
3649
3724
|
scparam(cfg, ['constraint', 'component', inst, 'placement'],
|
|
3650
|
-
sctype='(float,float
|
|
3725
|
+
sctype='(float,float)',
|
|
3651
3726
|
pernode='optional',
|
|
3652
3727
|
unit='um',
|
|
3653
|
-
shorthelp="Constraint:
|
|
3654
|
-
switch="-constraint_component_placement 'inst <(float,float
|
|
3655
|
-
example=[
|
|
3656
|
-
"cli: -constraint_component_placement 'i0 (2.0,3.0
|
|
3657
|
-
"api: chip.set('constraint', 'component', 'i0', 'placement', (2.0, 3.0
|
|
3658
|
-
schelp="""
|
|
3659
|
-
Placement location of a named instance, specified as a (x, y
|
|
3660
|
-
floats. The location refers to the
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
goals such as manufacturing design rules and grid placement
|
|
3664
|
-
guidelines. The 'z' coordinate shall be set to 0 for planar systems
|
|
3665
|
-
with only (x, y) coordinates. Discretized systems like PCB stacks,
|
|
3666
|
-
package stacks, and breadboards only allow a reduced
|
|
3667
|
-
set of floating point values (0, 1, 2, 3). The user specifying the
|
|
3668
|
-
placement will need to have some understanding of the type of
|
|
3669
|
-
layout system the component is being placed in (ASIC, SIP, PCB) but
|
|
3670
|
-
should not need to know exact manufacturing specifications.""")
|
|
3728
|
+
shorthelp="Constraint: component placement",
|
|
3729
|
+
switch="-constraint_component_placement 'inst <(float,float)>'",
|
|
3730
|
+
example=[
|
|
3731
|
+
"cli: -constraint_component_placement 'i0 (2.0,3.0)'",
|
|
3732
|
+
"api: chip.set('constraint', 'component', 'i0', 'placement', (2.0, 3.0))"],
|
|
3733
|
+
schelp="""
|
|
3734
|
+
Placement location of a named instance, specified as a (x, y) tuple of
|
|
3735
|
+
floats. The location refers to the distance from the substrate origin to
|
|
3736
|
+
the anchor point of the placed component, defined by
|
|
3737
|
+
the :keypath:`datasheet,package,<name>,anchor` parameter.""")
|
|
3671
3738
|
|
|
3672
3739
|
scparam(cfg, ['constraint', 'component', inst, 'partname'],
|
|
3673
3740
|
sctype='str',
|
|
3674
3741
|
pernode='optional',
|
|
3675
|
-
shorthelp="Constraint:
|
|
3742
|
+
shorthelp="Constraint: component part name",
|
|
3676
3743
|
switch="-constraint_component_partname 'inst <str>'",
|
|
3677
3744
|
example=[
|
|
3678
3745
|
"cli: -constraint_component_partname 'i0 filler_x1'",
|
|
3679
3746
|
"api: chip.set('constraint', 'component', 'i0', 'partname', 'filler_x1')"],
|
|
3680
3747
|
schelp="""
|
|
3681
|
-
Part name of
|
|
3748
|
+
Part name of the instance. The parameter is required for instances
|
|
3682
3749
|
that are not contained within the design netlist (ie. physical only cells).
|
|
3683
3750
|
""")
|
|
3684
3751
|
|
|
@@ -3686,75 +3753,81 @@ def schema_constraint(cfg):
|
|
|
3686
3753
|
sctype='(float,float)',
|
|
3687
3754
|
pernode='optional',
|
|
3688
3755
|
unit='um',
|
|
3689
|
-
shorthelp="Constraint:
|
|
3756
|
+
shorthelp="Constraint: component halo",
|
|
3690
3757
|
switch="-constraint_component_halo 'inst <(float,float)>'",
|
|
3691
3758
|
example=[
|
|
3692
3759
|
"cli: -constraint_component_halo 'i0 (1,1)'",
|
|
3693
3760
|
"api: chip.set('constraint', 'component', 'i0', 'halo', (1, 1))"],
|
|
3694
3761
|
schelp="""
|
|
3695
3762
|
Placement keepout halo around the named component, specified as a
|
|
3696
|
-
(horizontal, vertical) tuple represented in microns.
|
|
3697
|
-
""")
|
|
3763
|
+
(horizontal, vertical) tuple represented in microns.""")
|
|
3698
3764
|
|
|
3699
3765
|
scparam(cfg, ['constraint', 'component', inst, 'rotation'],
|
|
3700
|
-
sctype='
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3766
|
+
sctype='enum',
|
|
3767
|
+
defvalue='R0',
|
|
3768
|
+
enum=['R0', 'R90', 'R180', 'R270',
|
|
3769
|
+
'MX', 'MX_R90', 'MX_R180', 'MX_R270',
|
|
3770
|
+
'MY', 'MY_R90', 'MY_R180', 'MY_R270',
|
|
3771
|
+
'MZ', 'MZ_R90', 'MZ_R180', 'MZ_R270',
|
|
3772
|
+
'MZ_MX', 'MZ_MX_R90', 'MZ_MX_R180', 'MZ_MX_R270',
|
|
3773
|
+
'MZ_MY', 'MZ_MY_R90', 'MZ_MY_R180', 'MZ_MY_R270'],
|
|
3774
|
+
pernode='optional',
|
|
3775
|
+
shorthelp="Constraint: component rotation",
|
|
3776
|
+
switch="-constraint_component_rotation 'inst <str>'",
|
|
3777
|
+
example=[
|
|
3778
|
+
"cli: -constraint_component_rotation 'i0 R90'",
|
|
3779
|
+
"api: chip.set('constraint', 'component', 'i0', 'rotation', 'R90')"],
|
|
3780
|
+
schelp="""
|
|
3781
|
+
Placement rotation of the component. Components are always placed
|
|
3782
|
+
such that the lower left corner of the cell is at the anchor point
|
|
3783
|
+
(0,0) after any orientation. The MZ type rotations are for 3D design and
|
|
3784
|
+
typically not supported by 2D layout systems like traditional
|
|
3785
|
+
ASIC tools. For graphical illustrations of the rotation types, see
|
|
3786
|
+
the SiliconCompiler documentation.
|
|
3787
|
+
|
|
3788
|
+
* ``R0``: North orientation (no rotation)
|
|
3789
|
+
* ``R90``: West orientation, rotate 90 deg counter clockwise (ccw)
|
|
3790
|
+
* ``R180``: South orientation, rotate 180 deg counter ccw
|
|
3791
|
+
* ``R270``: East orientation, rotate 180 deg counter ccw
|
|
3792
|
+
|
|
3793
|
+
* ``MX``, ``MY_R180``: Flip on x-axis
|
|
3794
|
+
* ``MX_R90``, ``MY_R270``: Flip on x-axis and rotate 90 deg ccw
|
|
3795
|
+
* ``MX_R180``, ``MY``: Flip on x-axis and rotate 180 deg ccw
|
|
3796
|
+
* ``MX_R270``, ``MY_R90``: Flip on x-axis and rotate 270 deg ccw
|
|
3797
|
+
|
|
3798
|
+
* ``MZ``: Reverse component metal stack
|
|
3799
|
+
* ``MZ_R90``: Reverse metal stack and rotate 90 deg ccw
|
|
3800
|
+
* ``MZ_R180``: Reverse metal stack and rotate 180 deg ccw
|
|
3801
|
+
* ``MZ_R270``: Reverse metal stack and rotate 270 deg ccw
|
|
3802
|
+
* ``MZ_MX``, ``MZ_MY_R180``: Reverse metal stack and flip on x-axis
|
|
3803
|
+
* ``MZ_MX_R90``, ``MZ_MY_R270``: Reverse metal stack, flip on x-axis, and rotate 90 deg ccw
|
|
3804
|
+
* ``MZ_MX_R180``, ``MZ_MY``: Reverse metal stack, flip on x-axis, and rotate 180 deg ccw
|
|
3805
|
+
* ``MZ_MX_R270``, ``MZ_MY_R90``: Reverse metal stack, flip on x-axis and rotate 270 deg ccw
|
|
3806
|
+
""")
|
|
3729
3807
|
|
|
3730
3808
|
# PINS
|
|
3731
3809
|
name = 'default'
|
|
3732
|
-
|
|
3733
3810
|
scparam(cfg, ['constraint', 'pin', name, 'placement'],
|
|
3734
|
-
sctype='(float,float
|
|
3811
|
+
sctype='(float,float)',
|
|
3735
3812
|
pernode='optional',
|
|
3736
3813
|
unit='um',
|
|
3737
|
-
shorthelp="Constraint:
|
|
3738
|
-
switch="-constraint_pin_placement 'name <(float,float
|
|
3739
|
-
example=[
|
|
3740
|
-
"cli: -constraint_pin_placement 'nreset (2.0,3.0
|
|
3741
|
-
"api: chip.set('constraint', 'pin', 'nreset', 'placement', (2.0, 3.0
|
|
3742
|
-
schelp="""
|
|
3743
|
-
Placement location of a named pin, specified as a (x,
|
|
3744
|
-
floats
|
|
3745
|
-
pin. The 'placement' parameter
|
|
3746
|
-
|
|
3747
|
-
goals such as manufacturing design
|
|
3748
|
-
|
|
3749
|
-
with only (x, y) coordinates. Discretized systems like 3D chips with
|
|
3750
|
-
pins on top and bottom may choose to discretize the top and bottom
|
|
3751
|
-
layer as 0, 1 or use absolute coordinates. Values are specified
|
|
3752
|
-
in microns.""")
|
|
3814
|
+
shorthelp="Constraint: pin placement",
|
|
3815
|
+
switch="-constraint_pin_placement 'name <(float,float)>'",
|
|
3816
|
+
example=[
|
|
3817
|
+
"cli: -constraint_pin_placement 'nreset (2.0,3.0)'",
|
|
3818
|
+
"api: chip.set('constraint', 'pin', 'nreset', 'placement', (2.0, 3.0))"],
|
|
3819
|
+
schelp="""
|
|
3820
|
+
Placement location of a named pin, specified as a (x,y) tuple of
|
|
3821
|
+
floats with respect to the lower left corner of the substrate. The location
|
|
3822
|
+
refers to the center of the pin. The 'placement' parameter
|
|
3823
|
+
is a goal/intent, not an exact specification. The layout system
|
|
3824
|
+
may adjust sizes to meet competing goals such as manufacturing design
|
|
3825
|
+
rules and grid placement guidelines.""")
|
|
3753
3826
|
|
|
3754
3827
|
scparam(cfg, ['constraint', 'pin', name, 'layer'],
|
|
3755
3828
|
sctype='str',
|
|
3756
3829
|
pernode='optional',
|
|
3757
|
-
shorthelp="Constraint:
|
|
3830
|
+
shorthelp="Constraint: pin layer",
|
|
3758
3831
|
switch="-constraint_pin_layer 'name <str>'",
|
|
3759
3832
|
example=[
|
|
3760
3833
|
"cli: -constraint_pin_layer 'nreset m4'",
|
|
@@ -3767,7 +3840,7 @@ def schema_constraint(cfg):
|
|
|
3767
3840
|
scparam(cfg, ['constraint', 'pin', name, 'side'],
|
|
3768
3841
|
sctype='int',
|
|
3769
3842
|
pernode='optional',
|
|
3770
|
-
shorthelp="Constraint:
|
|
3843
|
+
shorthelp="Constraint: pin side",
|
|
3771
3844
|
switch="-constraint_pin_side 'name <int>'",
|
|
3772
3845
|
example=[
|
|
3773
3846
|
"cli: -constraint_pin_side 'nreset 1'",
|
|
@@ -3783,7 +3856,7 @@ def schema_constraint(cfg):
|
|
|
3783
3856
|
scparam(cfg, ['constraint', 'pin', name, 'order'],
|
|
3784
3857
|
sctype='int',
|
|
3785
3858
|
pernode='optional',
|
|
3786
|
-
shorthelp="Constraint:
|
|
3859
|
+
shorthelp="Constraint: pin order",
|
|
3787
3860
|
switch="-constraint_pin_order 'name <int>'",
|
|
3788
3861
|
example=[
|
|
3789
3862
|
"cli: -constraint_pin_order 'nreset 1'",
|
|
@@ -3800,7 +3873,7 @@ def schema_constraint(cfg):
|
|
|
3800
3873
|
sctype='float',
|
|
3801
3874
|
pernode='optional',
|
|
3802
3875
|
unit='um',
|
|
3803
|
-
shorthelp="Constraint:
|
|
3876
|
+
shorthelp="Constraint: net max length",
|
|
3804
3877
|
switch="-constraint_net_maxlength 'name <float>'",
|
|
3805
3878
|
example=[
|
|
3806
3879
|
"cli: -constraint_net_maxlength 'nreset 1000'",
|
|
@@ -3813,7 +3886,7 @@ def schema_constraint(cfg):
|
|
|
3813
3886
|
sctype='float',
|
|
3814
3887
|
pernode='optional',
|
|
3815
3888
|
unit='ohm',
|
|
3816
|
-
shorthelp="Constraint:
|
|
3889
|
+
shorthelp="Constraint: net max resistance",
|
|
3817
3890
|
switch="-constraint_net_maxresistance 'name <float>'",
|
|
3818
3891
|
example=[
|
|
3819
3892
|
"cli: -constraint_net_maxresistance 'nreset 1'",
|
|
@@ -3826,7 +3899,7 @@ def schema_constraint(cfg):
|
|
|
3826
3899
|
sctype='(float,float)',
|
|
3827
3900
|
pernode='optional',
|
|
3828
3901
|
unit='um',
|
|
3829
|
-
shorthelp="Constraint:
|
|
3902
|
+
shorthelp="Constraint: net routing rule",
|
|
3830
3903
|
switch="-constraint_net_ndr 'name <(float,float)>'",
|
|
3831
3904
|
example=[
|
|
3832
3905
|
"cli: -constraint_net_ndr 'nreset (0.4,0.4)'",
|
|
@@ -3840,7 +3913,7 @@ def schema_constraint(cfg):
|
|
|
3840
3913
|
scparam(cfg, ['constraint', 'net', name, 'minlayer'],
|
|
3841
3914
|
sctype='str',
|
|
3842
3915
|
pernode='optional',
|
|
3843
|
-
shorthelp="Constraint:
|
|
3916
|
+
shorthelp="Constraint: net minimum routing layer",
|
|
3844
3917
|
switch="-constraint_net_minlayer 'name <str>'",
|
|
3845
3918
|
example=[
|
|
3846
3919
|
"cli: -constraint_net_minlayer 'nreset m1'",
|
|
@@ -3854,7 +3927,7 @@ def schema_constraint(cfg):
|
|
|
3854
3927
|
scparam(cfg, ['constraint', 'net', name, 'maxlayer'],
|
|
3855
3928
|
sctype='str',
|
|
3856
3929
|
pernode='optional',
|
|
3857
|
-
shorthelp="Constraint:
|
|
3930
|
+
shorthelp="Constraint: net maximum routing layer",
|
|
3858
3931
|
switch="-constraint_net_maxlayer 'name <str>'",
|
|
3859
3932
|
example=[
|
|
3860
3933
|
"cli: -constraint_net_maxlayer 'nreset m1'",
|
|
@@ -3868,7 +3941,7 @@ def schema_constraint(cfg):
|
|
|
3868
3941
|
scparam(cfg, ['constraint', 'net', name, 'shield'],
|
|
3869
3942
|
sctype='str',
|
|
3870
3943
|
pernode='optional',
|
|
3871
|
-
shorthelp="Constraint:
|
|
3944
|
+
shorthelp="Constraint: net shielding",
|
|
3872
3945
|
switch="-constraint_net_shield 'name <str>'",
|
|
3873
3946
|
example=[
|
|
3874
3947
|
"cli: -constraint_net_shield 'clk vss'",
|
|
@@ -3880,7 +3953,7 @@ def schema_constraint(cfg):
|
|
|
3880
3953
|
scparam(cfg, ['constraint', 'net', name, 'match'],
|
|
3881
3954
|
sctype='[str]',
|
|
3882
3955
|
pernode='optional',
|
|
3883
|
-
shorthelp="Constraint:
|
|
3956
|
+
shorthelp="Constraint: net matched routing",
|
|
3884
3957
|
switch="-constraint_net_match 'name <str>'",
|
|
3885
3958
|
example=[
|
|
3886
3959
|
"cli: -constraint_net_match 'clk1 clk2'",
|
|
@@ -3893,7 +3966,7 @@ def schema_constraint(cfg):
|
|
|
3893
3966
|
scparam(cfg, ['constraint', 'net', name, 'diffpair'],
|
|
3894
3967
|
sctype='str',
|
|
3895
3968
|
pernode='optional',
|
|
3896
|
-
shorthelp="Constraint:
|
|
3969
|
+
shorthelp="Constraint: net diffpair",
|
|
3897
3970
|
switch="-constraint_net_diffpair 'name <str>'",
|
|
3898
3971
|
example=[
|
|
3899
3972
|
"cli: -constraint_net_diffpair 'clkn clkp'",
|
|
@@ -3905,7 +3978,7 @@ def schema_constraint(cfg):
|
|
|
3905
3978
|
scparam(cfg, ['constraint', 'net', name, 'sympair'],
|
|
3906
3979
|
sctype='str',
|
|
3907
3980
|
pernode='optional',
|
|
3908
|
-
shorthelp="Constraint:
|
|
3981
|
+
shorthelp="Constraint: net sympair",
|
|
3909
3982
|
switch="-constraint_net_sympair 'name <str>'",
|
|
3910
3983
|
example=[
|
|
3911
3984
|
"cli: -constraint_net_sympair 'netA netB'",
|
|
@@ -3921,50 +3994,47 @@ def schema_constraint(cfg):
|
|
|
3921
3994
|
pernode='optional',
|
|
3922
3995
|
unit='um',
|
|
3923
3996
|
scope='job',
|
|
3924
|
-
shorthelp="Constraint:
|
|
3997
|
+
shorthelp="Constraint: layout outline",
|
|
3925
3998
|
switch="-constraint_outline <(float,float)>",
|
|
3926
3999
|
example=["cli: -constraint_outline '(0,0)'",
|
|
3927
4000
|
"api: chip.set('constraint', 'outline', (0, 0))"],
|
|
3928
4001
|
schelp="""
|
|
3929
4002
|
List of (x, y) points that define the outline physical layout
|
|
3930
4003
|
physical design. Simple rectangle areas can be defined with two points,
|
|
3931
|
-
one for the lower left corner and one for the upper right corner.
|
|
3932
|
-
values are specified in microns.""")
|
|
4004
|
+
one for the lower left corner and one for the upper right corner.""")
|
|
3933
4005
|
|
|
3934
4006
|
scparam(cfg, ['constraint', 'corearea'],
|
|
3935
4007
|
sctype='[(float,float)]',
|
|
3936
4008
|
pernode='optional',
|
|
3937
4009
|
unit='um',
|
|
3938
4010
|
scope='job',
|
|
3939
|
-
shorthelp="Constraint:
|
|
4011
|
+
shorthelp="Constraint: layout core area",
|
|
3940
4012
|
switch="-constraint_corearea <(float,float)>",
|
|
3941
4013
|
example=["cli: -constraint_corearea '(0,0)'",
|
|
3942
4014
|
"api: chip.set('constraint', 'corearea', (0, 0))"],
|
|
3943
4015
|
schelp="""
|
|
3944
4016
|
List of (x, y) points that define the outline of the core area for the
|
|
3945
4017
|
physical design. Simple rectangle areas can be defined with two points,
|
|
3946
|
-
one for the lower left corner and one for the upper right corner.
|
|
3947
|
-
values are specified in microns.""")
|
|
4018
|
+
one for the lower left corner and one for the upper right corner.""")
|
|
3948
4019
|
|
|
3949
4020
|
scparam(cfg, ['constraint', 'coremargin'],
|
|
3950
4021
|
sctype='float',
|
|
3951
4022
|
pernode='optional',
|
|
3952
4023
|
unit='um',
|
|
3953
4024
|
scope='job',
|
|
3954
|
-
shorthelp="Constraint:
|
|
4025
|
+
shorthelp="Constraint: layout core margin",
|
|
3955
4026
|
switch="-constraint_coremargin <float>",
|
|
3956
4027
|
example=["cli: -constraint_coremargin 1",
|
|
3957
4028
|
"api: chip.set('constraint', 'coremargin', '1')"],
|
|
3958
4029
|
schelp="""
|
|
3959
4030
|
Halo/margin between the outline and core area for fully
|
|
3960
|
-
automated layout sizing and floorplanning
|
|
3961
|
-
microns.""")
|
|
4031
|
+
automated layout sizing and floorplanning.""")
|
|
3962
4032
|
|
|
3963
4033
|
scparam(cfg, ['constraint', 'density'],
|
|
3964
4034
|
sctype='float',
|
|
3965
4035
|
pernode='optional',
|
|
3966
4036
|
scope='job',
|
|
3967
|
-
shorthelp="Constraint:
|
|
4037
|
+
shorthelp="Constraint: layout density",
|
|
3968
4038
|
switch="-constraint_density <float>",
|
|
3969
4039
|
example=["cli: -constraint_density 30",
|
|
3970
4040
|
"api: chip.set('constraint', 'density', '30')"],
|
|
@@ -3980,7 +4050,7 @@ def schema_constraint(cfg):
|
|
|
3980
4050
|
pernode='optional',
|
|
3981
4051
|
defvalue='1.0',
|
|
3982
4052
|
scope='job',
|
|
3983
|
-
shorthelp="Constraint:
|
|
4053
|
+
shorthelp="Constraint: layout aspect ratio",
|
|
3984
4054
|
switch="-constraint_aspectratio <float>",
|
|
3985
4055
|
example=["cli: -constraint_aspectratio 2.0",
|
|
3986
4056
|
"api: chip.set('constraint', 'aspectratio', '2.0')"],
|