siliconcompiler 0.28.0__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/flows/dvflow.py +51 -14
- siliconcompiler/libs/sg13g2_stdcell.py +8 -0
- siliconcompiler/pdks/ihp130.py +8 -0
- siliconcompiler/schema/schema_cfg.py +2 -2
- siliconcompiler/targets/ihp130_demo.py +68 -0
- siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl +1 -5
- siliconcompiler/tools/openroad/scripts/sc_procs.tcl +26 -0
- siliconcompiler/tools/xdm/__init__.py +28 -0
- siliconcompiler/tools/xdm/convert.py +71 -0
- siliconcompiler/tools/xyce/__init__.py +40 -0
- siliconcompiler/tools/xyce/simulate.py +70 -0
- {siliconcompiler-0.28.0.dist-info → siliconcompiler-0.28.1.dist-info}/METADATA +3 -3
- {siliconcompiler-0.28.0.dist-info → siliconcompiler-0.28.1.dist-info}/RECORD +18 -15
- siliconcompiler/tools/openfpgaloader/__init__.py +0 -0
- siliconcompiler/tools/openfpgaloader/openfpgaloader.py +0 -39
- siliconcompiler/tools/xyce/xyce.py +0 -36
- {siliconcompiler-0.28.0.dist-info → siliconcompiler-0.28.1.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.28.0.dist-info → siliconcompiler-0.28.1.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.28.0.dist-info → siliconcompiler-0.28.1.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.28.0.dist-info → siliconcompiler-0.28.1.dist-info}/top_level.txt +0 -0
siliconcompiler/_metadata.py
CHANGED
siliconcompiler/flows/dvflow.py
CHANGED
|
@@ -3,6 +3,8 @@ import siliconcompiler
|
|
|
3
3
|
from siliconcompiler.tools.icarus import compile as icarus_compile
|
|
4
4
|
from siliconcompiler.tools.verilator import compile as verilator_compile
|
|
5
5
|
from siliconcompiler.tools.execute import exec_input
|
|
6
|
+
from siliconcompiler.tools.xyce import simulate as xyce_simulate
|
|
7
|
+
from siliconcompiler.tools.xdm import convert as xdm_convert
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
############################################################################
|
|
@@ -31,33 +33,68 @@ def setup(flowname='dvflow',
|
|
|
31
33
|
Setting 'np' > 1 results in multiple independent verification
|
|
32
34
|
pipelines to be launched.
|
|
33
35
|
|
|
36
|
+
Supported tools are:
|
|
37
|
+
|
|
38
|
+
* icarus
|
|
39
|
+
* verilator
|
|
40
|
+
* xyce
|
|
41
|
+
* xdm-xyce
|
|
42
|
+
|
|
34
43
|
This flow is a WIP
|
|
35
44
|
'''
|
|
36
45
|
|
|
37
46
|
flow = siliconcompiler.Flow(flowname)
|
|
38
47
|
|
|
39
|
-
tasks = {
|
|
40
|
-
|
|
41
|
-
'sim': None
|
|
42
|
-
}
|
|
48
|
+
tasks = {}
|
|
49
|
+
flow_np = {}
|
|
43
50
|
|
|
44
51
|
if tool == 'icarus':
|
|
45
52
|
tasks['compile'] = icarus_compile
|
|
46
53
|
tasks['sim'] = exec_input
|
|
54
|
+
|
|
55
|
+
flowpipe = [
|
|
56
|
+
'compile',
|
|
57
|
+
'sim'
|
|
58
|
+
]
|
|
59
|
+
flow_np = {
|
|
60
|
+
'compile': 1,
|
|
61
|
+
'sim': np
|
|
62
|
+
}
|
|
47
63
|
elif tool == 'verilator':
|
|
48
64
|
tasks['compile'] = verilator_compile
|
|
49
65
|
tasks['sim'] = exec_input
|
|
66
|
+
|
|
67
|
+
flowpipe = [
|
|
68
|
+
'compile',
|
|
69
|
+
'sim'
|
|
70
|
+
]
|
|
71
|
+
flow_np = {
|
|
72
|
+
'compile': 1,
|
|
73
|
+
'sim': np
|
|
74
|
+
}
|
|
75
|
+
elif tool == 'xyce':
|
|
76
|
+
tasks['sim'] = xyce_simulate
|
|
77
|
+
|
|
78
|
+
flowpipe = [
|
|
79
|
+
'sim'
|
|
80
|
+
]
|
|
81
|
+
flow_np = {
|
|
82
|
+
'sim': np
|
|
83
|
+
}
|
|
84
|
+
elif tool == 'xdm-xyce':
|
|
85
|
+
tasks['compile'] = xdm_convert
|
|
86
|
+
tasks['sim'] = xyce_simulate
|
|
87
|
+
|
|
88
|
+
flowpipe = [
|
|
89
|
+
'compile',
|
|
90
|
+
'sim'
|
|
91
|
+
]
|
|
92
|
+
flow_np = {
|
|
93
|
+
'compile': 1,
|
|
94
|
+
'sim': np
|
|
95
|
+
}
|
|
50
96
|
else:
|
|
51
|
-
raise ValueError(f'{tool} is not a supported tool for {flowname}
|
|
52
|
-
|
|
53
|
-
flowpipe = [
|
|
54
|
-
'compile',
|
|
55
|
-
'sim'
|
|
56
|
-
]
|
|
57
|
-
flow_np = {
|
|
58
|
-
'compile': 1,
|
|
59
|
-
'sim': np
|
|
60
|
-
}
|
|
97
|
+
raise ValueError(f'{tool} is not a supported tool for {flowname}')
|
|
61
98
|
|
|
62
99
|
prevstep = None
|
|
63
100
|
# Flow setup
|
|
@@ -10,7 +10,7 @@ try:
|
|
|
10
10
|
except ImportError:
|
|
11
11
|
from siliconcompiler.schema.utils import trim
|
|
12
12
|
|
|
13
|
-
SCHEMA_VERSION = '0.48.
|
|
13
|
+
SCHEMA_VERSION = '0.48.2'
|
|
14
14
|
|
|
15
15
|
#############################################################################
|
|
16
16
|
# PARAM DEFINITION
|
|
@@ -3767,7 +3767,7 @@ def schema_constraint(cfg):
|
|
|
3767
3767
|
defvalue='R0',
|
|
3768
3768
|
enum=['R0', 'R90', 'R180', 'R270',
|
|
3769
3769
|
'MX', 'MX_R90', 'MX_R180', 'MX_R270',
|
|
3770
|
-
'MY_R90', 'MY_R180', 'MY_R270',
|
|
3770
|
+
'MY', 'MY_R90', 'MY_R180', 'MY_R270',
|
|
3771
3771
|
'MZ', 'MZ_R90', 'MZ_R180', 'MZ_R270',
|
|
3772
3772
|
'MZ_MX', 'MZ_MX_R90', 'MZ_MX_R180', 'MZ_MX_R270',
|
|
3773
3773
|
'MZ_MY', 'MZ_MY_R90', 'MZ_MY_R180', 'MZ_MY_R270'],
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import siliconcompiler
|
|
2
|
+
from siliconcompiler.flows import asicflow, asictopflow, signoffflow, synflow
|
|
3
|
+
from siliconcompiler.checklists import oh_tapeout
|
|
4
|
+
from lambdapdk import ihp130
|
|
5
|
+
from lambdapdk.ihp130.libs import sg13g2_stdcell
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
####################################################
|
|
9
|
+
# Target Setup
|
|
10
|
+
####################################################
|
|
11
|
+
def setup(chip, syn_np=1, floorplan_np=1, physyn_np=1, place_np=1, cts_np=1, route_np=1,
|
|
12
|
+
timing_np=1):
|
|
13
|
+
'''
|
|
14
|
+
IHP130 Demo Target
|
|
15
|
+
'''
|
|
16
|
+
|
|
17
|
+
asic_flow_args = {
|
|
18
|
+
"syn_np": syn_np,
|
|
19
|
+
"floorplan_np": floorplan_np,
|
|
20
|
+
"physyn_np": physyn_np,
|
|
21
|
+
"place_np": place_np,
|
|
22
|
+
"cts_np": cts_np,
|
|
23
|
+
"route_np": route_np
|
|
24
|
+
}
|
|
25
|
+
# 1. Load PDK, flow, libs
|
|
26
|
+
chip.use(ihp130)
|
|
27
|
+
chip.use(sg13g2_stdcell)
|
|
28
|
+
chip.use(asicflow, **asic_flow_args)
|
|
29
|
+
chip.use(synflow, syn_np=syn_np, timing_np=timing_np)
|
|
30
|
+
chip.use(asictopflow)
|
|
31
|
+
chip.use(signoffflow)
|
|
32
|
+
chip.use(oh_tapeout)
|
|
33
|
+
|
|
34
|
+
# 2. Set default targets
|
|
35
|
+
chip.set('option', 'flow', 'asicflow', clobber=False)
|
|
36
|
+
chip.set('option', 'pdk', 'ihp130', clobber=False)
|
|
37
|
+
chip.set('option', 'stackup', '5M2TL', clobber=False)
|
|
38
|
+
|
|
39
|
+
# 3. Set project specific design choices
|
|
40
|
+
chip.set('asic', 'logiclib', 'sg13g2_stdcell', clobber=False)
|
|
41
|
+
|
|
42
|
+
# 4. get project specific design choices
|
|
43
|
+
chip.set('asic', 'delaymodel', 'nldm', clobber=False)
|
|
44
|
+
chip.set('constraint', 'density', 40, clobber=False)
|
|
45
|
+
chip.set('constraint', 'coremargin', 4.8, clobber=False)
|
|
46
|
+
|
|
47
|
+
# 5. Timing corners
|
|
48
|
+
chip.set('constraint', 'timing', 'slow', 'libcorner', 'slow', clobber=False)
|
|
49
|
+
chip.set('constraint', 'timing', 'slow', 'pexcorner', 'typical', clobber=False)
|
|
50
|
+
chip.set('constraint', 'timing', 'slow', 'mode', 'func', clobber=False)
|
|
51
|
+
chip.set('constraint', 'timing', 'slow', 'check', ['setup', 'hold'], clobber=False)
|
|
52
|
+
|
|
53
|
+
chip.set('constraint', 'timing', 'fast', 'libcorner', 'fast', clobber=False)
|
|
54
|
+
chip.set('constraint', 'timing', 'fast', 'pexcorner', 'typical', clobber=False)
|
|
55
|
+
chip.set('constraint', 'timing', 'fast', 'mode', 'func', clobber=False)
|
|
56
|
+
chip.set('constraint', 'timing', 'fast', 'check', ['setup', 'hold'], clobber=False)
|
|
57
|
+
|
|
58
|
+
chip.set('constraint', 'timing', 'typical', 'libcorner', 'typ', clobber=False)
|
|
59
|
+
chip.set('constraint', 'timing', 'typical', 'pexcorner', 'typical', clobber=False)
|
|
60
|
+
chip.set('constraint', 'timing', 'typical', 'mode', 'func', clobber=False)
|
|
61
|
+
chip.set('constraint', 'timing', 'typical', 'check', ['power'], clobber=False)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
#########################
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
target = siliconcompiler.Chip('<target>')
|
|
67
|
+
setup(target)
|
|
68
|
+
target.write_manifest('ihp130_demo.json')
|
|
@@ -240,11 +240,7 @@ if { [sc_cfg_exists constraint component] } {
|
|
|
240
240
|
|
|
241
241
|
dict for {name params} [sc_cfg_get constraint component] {
|
|
242
242
|
set location [dict get $params placement]
|
|
243
|
-
set rotation [dict get $params rotation]
|
|
244
|
-
if { [string match "*MZ*" $rotation] } {
|
|
245
|
-
utl::error FLW 1 "Z mirroring is not supported in OpenROAD"
|
|
246
|
-
}
|
|
247
|
-
set rotation [string map {"_" ""} $rotation]
|
|
243
|
+
set rotation [sc_convert_rotation [dict get $params rotation]]
|
|
248
244
|
|
|
249
245
|
if { [dict exists $params partname] } {
|
|
250
246
|
set cell [dict get $params partname]
|
|
@@ -427,3 +427,29 @@ proc count_logic_depth {} {
|
|
|
427
427
|
# Subtract 1 to account for initial launch
|
|
428
428
|
return [expr { $count - 1 }]
|
|
429
429
|
}
|
|
430
|
+
|
|
431
|
+
###########################
|
|
432
|
+
# Translate schema rotation
|
|
433
|
+
###########################
|
|
434
|
+
|
|
435
|
+
proc sc_convert_rotation { rot } {
|
|
436
|
+
if { [string match "MZ*" $rot] } {
|
|
437
|
+
utl::error FLW 1 "Z mirroring is not supported in OpenROAD"
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
switch $rot {
|
|
441
|
+
"R0" { return "R0" }
|
|
442
|
+
"R90" { return "R90" }
|
|
443
|
+
"R180" { return "R180" }
|
|
444
|
+
"R270" { return "R270" }
|
|
445
|
+
"MX" { return "MX" }
|
|
446
|
+
"MX_R90" { return "MXR90" }
|
|
447
|
+
"MX_R180" { return "MY" }
|
|
448
|
+
"MX_R270" { return "MYR90" }
|
|
449
|
+
"MY" { return "MY" }
|
|
450
|
+
"MY_R90" { return "MYR90" }
|
|
451
|
+
"MY_R180" { return "MX" }
|
|
452
|
+
"MY_R270" { return "MXR90" }
|
|
453
|
+
default { utl::error FLW 1 "$rot not recognized" }
|
|
454
|
+
}
|
|
455
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Xyce XDM netlist converter, used to convert PSPICE and HSPICE netists into Xyce format.
|
|
3
|
+
|
|
4
|
+
Sources: https://github.com/Xyce/XDM
|
|
5
|
+
|
|
6
|
+
Installation: https://github.com/Xyce/XDM
|
|
7
|
+
|
|
8
|
+
Status: SC integration WIP
|
|
9
|
+
'''
|
|
10
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def setup(chip):
|
|
14
|
+
step = chip.get('arg', 'step')
|
|
15
|
+
index = chip.get('arg', 'index')
|
|
16
|
+
tool, task = get_tool_task(chip, step, index)
|
|
17
|
+
|
|
18
|
+
chip.set('tool', tool, 'exe', 'xdm_bdl')
|
|
19
|
+
chip.set('tool', tool, 'vswitch', '-h')
|
|
20
|
+
chip.set('tool', tool, 'version', '>=v2.7.0', clobber=False)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
################################
|
|
24
|
+
# Version Check
|
|
25
|
+
################################
|
|
26
|
+
def parse_version(stdout):
|
|
27
|
+
line = stdout.splitlines()[5]
|
|
28
|
+
return line.split()[1]
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import input_provides, get_tool_task
|
|
2
|
+
from siliconcompiler.tools.xdm import setup as tool_setup
|
|
3
|
+
import os
|
|
4
|
+
import shutil
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def setup(chip):
|
|
8
|
+
tool_setup(chip)
|
|
9
|
+
|
|
10
|
+
step = chip.get('arg', 'step')
|
|
11
|
+
index = chip.get('arg', 'index')
|
|
12
|
+
tool, task = get_tool_task(chip, step, index)
|
|
13
|
+
|
|
14
|
+
design = chip.top()
|
|
15
|
+
|
|
16
|
+
if f'{design}.cir' in input_provides(chip, step, index):
|
|
17
|
+
chip.add('tool', tool, 'task', task, 'input', f'{design}.cir',
|
|
18
|
+
step=step, index=index)
|
|
19
|
+
else:
|
|
20
|
+
chip.add('tool', tool, 'task', task, 'require', 'input,netlist,spice',
|
|
21
|
+
step=step, index=index)
|
|
22
|
+
|
|
23
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.xyce', step=step, index=index)
|
|
24
|
+
|
|
25
|
+
chip.add('tool', tool, 'task', task, 'option', '--auto',
|
|
26
|
+
step=step, index=index)
|
|
27
|
+
chip.add('tool', tool, 'task', task, 'option', '--source_file_format hspice',
|
|
28
|
+
step=step, index=index)
|
|
29
|
+
chip.add('tool', tool, 'task', task, 'option', f'--dir_out outputs/{design}.xyce',
|
|
30
|
+
step=step, index=index)
|
|
31
|
+
|
|
32
|
+
chip.set('tool', 'xdm', 'task', 'convert', 'var', 'rename', 'true',
|
|
33
|
+
step=step, index=index, clobber=False)
|
|
34
|
+
chip.set('tool', 'xdm', 'task', 'convert', 'var', 'rename',
|
|
35
|
+
'true/false: indicate whether to rename the output file to match the '
|
|
36
|
+
'naming scheme for siliconcompiler', field='help')
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def runtime_options(chip):
|
|
40
|
+
return __get_input_file(chip)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def __get_input_file(chip):
|
|
44
|
+
step = chip.get('arg', 'step')
|
|
45
|
+
index = chip.get('arg', 'index')
|
|
46
|
+
design = chip.top()
|
|
47
|
+
|
|
48
|
+
if f'{design}.cir' in input_provides(chip, step, index):
|
|
49
|
+
return [f'inputs/{design}.cir']
|
|
50
|
+
|
|
51
|
+
return chip.find_files('input', 'netlist', 'spice',
|
|
52
|
+
step=step, index=index)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def post_process(chip):
|
|
56
|
+
step = chip.get('arg', 'step')
|
|
57
|
+
index = chip.get('arg', 'index')
|
|
58
|
+
|
|
59
|
+
if chip.get('tool', 'xdm', 'task', 'convert', 'var', 'rename',
|
|
60
|
+
step=step, index=index) == ['false']:
|
|
61
|
+
return
|
|
62
|
+
|
|
63
|
+
inputfile = __get_input_file(chip)[0]
|
|
64
|
+
|
|
65
|
+
outdir = f'outputs/{chip.top()}.xyce'
|
|
66
|
+
|
|
67
|
+
inputfile_base = os.path.basename(inputfile)
|
|
68
|
+
outputfile_base = f'{chip.top()}.cir'
|
|
69
|
+
|
|
70
|
+
if inputfile_base != outputfile_base:
|
|
71
|
+
shutil.move(os.path.join(outdir, inputfile_base), os.path.join(outdir, outputfile_base))
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Xyce is a high performance SPICE-compatible circuit simulator
|
|
3
|
+
capable capable of solving extremely large circuit problems by
|
|
4
|
+
supporting large-scale parallel computing platforms. It also
|
|
5
|
+
supports serial execution on all common desktop platforms,
|
|
6
|
+
and small-scale parallel runs on Unix-like systems.
|
|
7
|
+
|
|
8
|
+
Documentation: https://xyce.sandia.gov/documentation-tutorials/
|
|
9
|
+
|
|
10
|
+
Sources: https://github.com/Xyce/Xyce
|
|
11
|
+
|
|
12
|
+
Installation: https://xyce.sandia.gov/documentation-tutorials/building-guide/
|
|
13
|
+
|
|
14
|
+
Status: SC integration WIP
|
|
15
|
+
'''
|
|
16
|
+
from siliconcompiler.tools._common import get_tool_task
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
################################
|
|
20
|
+
# Setup Tool (pre executable)
|
|
21
|
+
################################
|
|
22
|
+
def setup(chip):
|
|
23
|
+
|
|
24
|
+
step = chip.get('arg', 'step')
|
|
25
|
+
index = chip.get('arg', 'index')
|
|
26
|
+
tool, task = get_tool_task(chip, step, index)
|
|
27
|
+
|
|
28
|
+
chip.set('tool', tool, 'exe', 'Xyce')
|
|
29
|
+
chip.set('tool', tool, 'vswitch', '-v')
|
|
30
|
+
chip.set('tool', tool, 'version', '>=v7.8')
|
|
31
|
+
|
|
32
|
+
chip.set('tool', tool, 'task', task, 'regex', 'warnings', 'warning',
|
|
33
|
+
step=step, index=index, clobber=False)
|
|
34
|
+
chip.set('tool', tool, 'task', task, 'regex', 'errors', 'error',
|
|
35
|
+
step=step, index=index, clobber=False)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def parse_version(stdout):
|
|
39
|
+
ver = stdout.split()[-1]
|
|
40
|
+
return ver.split('-')[0]
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from siliconcompiler.tools._common import input_provides, get_tool_task
|
|
2
|
+
from siliconcompiler.tools.xyce import setup as tool_setup
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def setup(chip):
|
|
7
|
+
tool_setup(chip)
|
|
8
|
+
|
|
9
|
+
step = chip.get('arg', 'step')
|
|
10
|
+
index = chip.get('arg', 'index')
|
|
11
|
+
tool, task = get_tool_task(chip, step, index)
|
|
12
|
+
|
|
13
|
+
design = chip.top()
|
|
14
|
+
|
|
15
|
+
if f'{design}.xyce' in input_provides(chip, step, index):
|
|
16
|
+
chip.add('tool', tool, 'task', task, 'input', f'{design}.xyce',
|
|
17
|
+
step=step, index=index)
|
|
18
|
+
elif f'{design}.cir' in input_provides(chip, step, index):
|
|
19
|
+
chip.add('tool', tool, 'task', task, 'input', f'{design}.cir',
|
|
20
|
+
step=step, index=index)
|
|
21
|
+
else:
|
|
22
|
+
chip.add('tool', tool, 'task', task, 'require', 'input,netlist,spice',
|
|
23
|
+
step=step, index=index)
|
|
24
|
+
|
|
25
|
+
chip.set('tool', tool, 'task', task, 'var', 'trace', 'false',
|
|
26
|
+
step=step, index=index, clobber=False)
|
|
27
|
+
chip.set('tool', tool, 'task', task, 'var', 'trace', 'true/false, enable dumping all signals',
|
|
28
|
+
field='help')
|
|
29
|
+
|
|
30
|
+
allowed_traced = ['ASCII', 'binary']
|
|
31
|
+
chip.set('tool', tool, 'task', task, 'var', 'trace_format', 'ASCII',
|
|
32
|
+
step=step, index=index, clobber=False)
|
|
33
|
+
chip.set('tool', tool, 'task', task, 'var', 'trace_format', 'Format to use for traces. '
|
|
34
|
+
f'Allowed values are {allowed_traced}',
|
|
35
|
+
field='help')
|
|
36
|
+
|
|
37
|
+
if chip.get('tool', tool, 'task', task, 'var', 'trace_format', step=step, index=index)[0] \
|
|
38
|
+
not in allowed_traced:
|
|
39
|
+
raise ValueError(f"{chip.get('tool', tool, 'task', task, 'var', 'trace_format')[0]} "
|
|
40
|
+
"is not an accepted value")
|
|
41
|
+
|
|
42
|
+
if chip.get('tool', tool, 'task', task, 'var', 'trace_format', step=step, index=index) == \
|
|
43
|
+
['ASCII']:
|
|
44
|
+
chip.add('tool', tool, 'task', task, 'option', '-a',
|
|
45
|
+
step=step, index=index)
|
|
46
|
+
|
|
47
|
+
if chip.get('tool', tool, 'task', task, 'var', 'trace',
|
|
48
|
+
step=step, index=index) == ['true']:
|
|
49
|
+
chip.add('tool', tool, 'task', task, 'output', f'{design}.raw',
|
|
50
|
+
step=step, index=index)
|
|
51
|
+
chip.add('tool', tool, 'task', task, 'option', f'-r outputs/{design}.raw',
|
|
52
|
+
step=step, index=index)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def runtime_options(chip):
|
|
56
|
+
design = chip.top()
|
|
57
|
+
step = chip.get('arg', 'step')
|
|
58
|
+
index = chip.get('arg', 'index')
|
|
59
|
+
|
|
60
|
+
if f'{design}.xyce' in input_provides(chip, step, index):
|
|
61
|
+
if os.path.isfile(f'inputs/{design}.xyce'):
|
|
62
|
+
return [f'inputs/{design}.xyce']
|
|
63
|
+
elif os.path.isfile(f'inputs/{design}.xyce/{design}.cir'):
|
|
64
|
+
return [f'inputs/{design}.xyce/{design}.cir']
|
|
65
|
+
else:
|
|
66
|
+
return [f'inputs/{design}.xyce']
|
|
67
|
+
elif f'{design}.cir' in input_provides(chip, step, index):
|
|
68
|
+
return [f'inputs/{design}.cir']
|
|
69
|
+
|
|
70
|
+
return chip.find_files('input', 'netlist', 'spice', step=step, index=index)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.1
|
|
4
4
|
Summary: A compiler framework that automates translation from source code to silicon.
|
|
5
5
|
Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
|
|
6
6
|
License: Apache License 2.0
|
|
@@ -23,7 +23,7 @@ Requires-Dist: packaging <24,>=21.3
|
|
|
23
23
|
Requires-Dist: psutil >=5.8.0
|
|
24
24
|
Requires-Dist: Pillow ==10.4.0
|
|
25
25
|
Requires-Dist: GitPython ==3.1.43
|
|
26
|
-
Requires-Dist: lambdapdk >=0.1.
|
|
26
|
+
Requires-Dist: lambdapdk >=0.1.34
|
|
27
27
|
Requires-Dist: PyGithub ==2.4.0
|
|
28
28
|
Requires-Dist: urllib3 >=1.26.0
|
|
29
29
|
Requires-Dist: fasteners ==0.19
|
|
@@ -84,7 +84,7 @@ SiliconCompiler is a modular hardware build system ("make for silicon"). The pro
|
|
|
84
84
|
|**FPGA APR**| VPR, nextpnr, Vivado
|
|
85
85
|
|**Layout Viewer**| Klayout, OpenRoad, Cadence, Synopsys
|
|
86
86
|
|**DRC/LVS**| Magic, Synopsys, Siemens
|
|
87
|
-
|**PDKs**| sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16
|
|
87
|
+
|**PDKs**| sky130, gf180, asap7, freepdk45, gf12lp, gf22fdx, intel16, ihp130
|
|
88
88
|
|
|
89
89
|
# Getting Started
|
|
90
90
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
siliconcompiler/__init__.py,sha256=Ke_Bcryj9N6MoUq_5z_IDW3qMrUzR-3-kJVsvUenYzY,511
|
|
2
2
|
siliconcompiler/__main__.py,sha256=JwWkcvaNngqgMWprEQ1cFy2Wdq9GMvk46UGTHyh_qvM,170
|
|
3
3
|
siliconcompiler/_common.py,sha256=yQ0X02-k6ZMVhz74zJwwMQi2DUpnm27NZMvDga84OZc,1234
|
|
4
|
-
siliconcompiler/_metadata.py,sha256=
|
|
4
|
+
siliconcompiler/_metadata.py,sha256=FTCBWMpxoH-jmQpBwPPvfqJ8kSV_-zzAj6xCc6zSjMo,1264
|
|
5
5
|
siliconcompiler/core.py,sha256=EvQmBcsjkwVGe8TBb4vx0glnlZd8qd9CS4Fsgh7x0Qw,132714
|
|
6
6
|
siliconcompiler/flowgraph.py,sha256=WLcbBWFj5DdYRRIxNy_Djm2v4yN9WELQM_ypNPB5QVM,21963
|
|
7
7
|
siliconcompiler/issue.py,sha256=9ZpdEBh8QB56-bZ1YXRnjqgg9hwnFty2u1o5oI66W7M,11125
|
|
@@ -29,7 +29,7 @@ siliconcompiler/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
29
29
|
siliconcompiler/flows/_common.py,sha256=-T3OPvzgOpzVdHdgQANtPm5h7zzgghhKd4XJH4EKqcE,2133
|
|
30
30
|
siliconcompiler/flows/asicflow.py,sha256=AbnwSersQ4EsBaAvnH3sz44Tj62aroZSGZaTgVSmO6g,6084
|
|
31
31
|
siliconcompiler/flows/asictopflow.py,sha256=UosrdJhh_NVyjigzz2KGhqcy2UBotkwTUUnCdOVaZXg,1155
|
|
32
|
-
siliconcompiler/flows/dvflow.py,sha256=
|
|
32
|
+
siliconcompiler/flows/dvflow.py,sha256=uchIXjAmKTQljkoBUMl9UWFvzwsON4vFWTBGCxPpKE4,3064
|
|
33
33
|
siliconcompiler/flows/fpgaflow.py,sha256=l6uhqieVwEBTwA4pHuAHYOR7y1-61xHVQQaxj94KU5g,6359
|
|
34
34
|
siliconcompiler/flows/generate_openroad_rcx.py,sha256=Czc3GEm0Q0dkPR0sRv1VdhRfVCAI8y6h3C-HVaxdmvE,2340
|
|
35
35
|
siliconcompiler/flows/lintflow.py,sha256=mCOojrSnd2gYoV80rsKpim5iPlV8Kb7rHx9jSEUVMtc,1000
|
|
@@ -44,12 +44,14 @@ siliconcompiler/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
44
44
|
siliconcompiler/libs/asap7sc7p5t.py,sha256=vHu9_ySMbC0aCPpwQ6mb72Xa2vxgopFf090kCmTrNXY,230
|
|
45
45
|
siliconcompiler/libs/gf180mcu.py,sha256=ZX3dEytbvZZb7z2A0flAnpM86I9NeiUEH-_M0t4h45I,217
|
|
46
46
|
siliconcompiler/libs/nangate45.py,sha256=OoEUGkzG10mcKft_qQPYGRTFmAAqF7cIxkHYbJrtbuw,222
|
|
47
|
+
siliconcompiler/libs/sg13g2_stdcell.py,sha256=ZboZlNUpKcsOqYYEio2ur0Ooy0AtGy5IhDv0ftd6IxE,224
|
|
47
48
|
siliconcompiler/libs/sky130hd.py,sha256=MTYh8mVLamjZB-M3u-b4ICqghU3b1H6UeXsTSOx9OYE,218
|
|
48
49
|
siliconcompiler/libs/sky130io.py,sha256=xd-EO5OQIUVCObddk8tIYjz8Ks8ahYhUYA7ciLC4Ntk,218
|
|
49
50
|
siliconcompiler/pdks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
51
|
siliconcompiler/pdks/asap7.py,sha256=WbH4UETdDtDRUYsB39wv-gf5rCd0OgnqSlnBwwTY03E,203
|
|
51
52
|
siliconcompiler/pdks/freepdk45.py,sha256=ynxretkAtlEJ8N_maz6FJ3L8P5Tlffc1gAsxqtg-kE4,207
|
|
52
53
|
siliconcompiler/pdks/gf180.py,sha256=yT_tQmfXTMuU-NngX1lakxPXVxZxwdl_FwNP-Rxx2rU,203
|
|
54
|
+
siliconcompiler/pdks/ihp130.py,sha256=grtX2Z2nQiQqtXGwkYcux3CrUM7EZp18F-s_yLxW0J4,204
|
|
53
55
|
siliconcompiler/pdks/skywater130.py,sha256=6UxJaWDQfs180tbKAfhLT2jfO6yTa41cdFrBKxCfniU,204
|
|
54
56
|
siliconcompiler/remote/__init__.py,sha256=2tRoHeocMaOltgsablWrX31KESPgP3In0oEJvaZDEY8,810
|
|
55
57
|
siliconcompiler/remote/client.py,sha256=BHhnCMEDTeaT1ZezavWE0hJSmHjSSjMlDxcQxfiUCHM,30920
|
|
@@ -86,7 +88,7 @@ siliconcompiler/scheduler/slurm.py,sha256=CAuN5xmiWhk_k3CW6yMe5iukex4CWxp5Ox6_qA
|
|
|
86
88
|
siliconcompiler/scheduler/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
89
|
siliconcompiler/scheduler/validation/email_credentials.json,sha256=m141zzx3DxBt_Qztr9_Ej_-kYMP1tUc2Xj2YW_a3Pu0,1746
|
|
88
90
|
siliconcompiler/schema/__init__.py,sha256=Gdny2AwDdg-X3RvghOHQYl3aG2alvMuK5CsSkFGKuYU,120
|
|
89
|
-
siliconcompiler/schema/schema_cfg.py,sha256=
|
|
91
|
+
siliconcompiler/schema/schema_cfg.py,sha256=Pn96dZ7QYcJG-wokZ-UO4BeyTh_qdZhSl35DSGl5Tv8,182998
|
|
90
92
|
siliconcompiler/schema/schema_obj.py,sha256=uIufKDsfoTe9m8EY4-PVMUKb_dbJ4-_x89v4yRs5mkQ,73447
|
|
91
93
|
siliconcompiler/schema/utils.py,sha256=V8xDBpQ3gIiEpuzme15h7xEz601uGi8tNi0QyK175qk,4018
|
|
92
94
|
siliconcompiler/sphinx_ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -99,6 +101,7 @@ siliconcompiler/targets/asic_demo.py,sha256=jRvbDhMZDGf-8AQ241vu8qLgloxPUToAn01Y
|
|
|
99
101
|
siliconcompiler/targets/fpgaflow_demo.py,sha256=-2L8Xi-TIB5FBuIxxB88Y9JagTTOXDHZcNFFwPU-sno,1379
|
|
100
102
|
siliconcompiler/targets/freepdk45_demo.py,sha256=O983Nwrs9h_HHlHtlUUrP0cPgdf3IlME1yWXCRgdL_A,1953
|
|
101
103
|
siliconcompiler/targets/gf180_demo.py,sha256=oTs07GFFyQT0LaE7jVdoLSBuGqpOGLyL-ThQ25ZpCkc,3075
|
|
104
|
+
siliconcompiler/targets/ihp130_demo.py,sha256=3nCxfM0-XpZWjhE1yQezZKBGJwtf6AjpeinPM4z6wv0,2688
|
|
102
105
|
siliconcompiler/targets/skywater130_demo.py,sha256=ct-kdVuZm2idynFm8eEZlL2S4-rfzWe16in8lOZPqrU,2689
|
|
103
106
|
siliconcompiler/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
107
|
siliconcompiler/templates/email/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -187,8 +190,6 @@ siliconcompiler/tools/netgen/sc_lvs.tcl,sha256=EKDVaYZZMi__ga-t8x-SWEyDG9Zat0wyZ
|
|
|
187
190
|
siliconcompiler/tools/nextpnr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
188
191
|
siliconcompiler/tools/nextpnr/apr.py,sha256=dCMLDS4xnwqCoBtCKd3kwCxjIRqPn_zq3f7pkWPw5mw,802
|
|
189
192
|
siliconcompiler/tools/nextpnr/nextpnr.py,sha256=B5kr-ZLnt2vDFtS4veIdf0_Cm6yvfS1QVqWhxYa8R24,1712
|
|
190
|
-
siliconcompiler/tools/openfpgaloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
|
-
siliconcompiler/tools/openfpgaloader/openfpgaloader.py,sha256=yeHIzKxsshAsR6Yhz7haxqev6BfGKB4CzvKyN0pSneM,1209
|
|
192
193
|
siliconcompiler/tools/openroad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
193
194
|
siliconcompiler/tools/openroad/cts.py,sha256=CZz_eJxCyuMpA7bvQaDm6dYgOkUM9phNKD1aNcJKJgE,1080
|
|
194
195
|
siliconcompiler/tools/openroad/dfm.py,sha256=RjdOqq7oPVSx5HzYUTSlBh4ZGnVfJqJHR0cs4WdG1pQ,2244
|
|
@@ -207,11 +208,11 @@ siliconcompiler/tools/openroad/scripts/sc_apr.tcl,sha256=wlVYGDyl0PmR9bV15pMDLGu
|
|
|
207
208
|
siliconcompiler/tools/openroad/scripts/sc_cts.tcl,sha256=PAUk66gHgvnXc78SDrUqczX5Q7c0SPo48Vm5FXYvczM,1793
|
|
208
209
|
siliconcompiler/tools/openroad/scripts/sc_dfm.tcl,sha256=vhIUebTDyDtg7mnwDzUgMmdKZd5NmgG68wQBj1P34Pg,587
|
|
209
210
|
siliconcompiler/tools/openroad/scripts/sc_export.tcl,sha256=-r3WUFON7gMgXxcJUL_uGBp_-wi46h1hAMKlRWtOzWg,2830
|
|
210
|
-
siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl,sha256=
|
|
211
|
+
siliconcompiler/tools/openroad/scripts/sc_floorplan.tcl,sha256=SArhDchIlL1VbWnzS0FNFvbz-st2QRhwlQFfW-ufhKI,11546
|
|
211
212
|
siliconcompiler/tools/openroad/scripts/sc_metrics.tcl,sha256=sactbdEYt8i4Pn_g29BLEGm7hIFzWc_Uw1PfI7hGbxo,5181
|
|
212
213
|
siliconcompiler/tools/openroad/scripts/sc_physyn.tcl,sha256=hLAVeE_a__ZBgVMOSmMwCwtTDfflZptPmphaqibYvEk,115
|
|
213
214
|
siliconcompiler/tools/openroad/scripts/sc_place.tcl,sha256=WMuYB-LXQP8YdcYMHTkqGzOvn1bK6X7mOm12gEK4kKY,1937
|
|
214
|
-
siliconcompiler/tools/openroad/scripts/sc_procs.tcl,sha256=
|
|
215
|
+
siliconcompiler/tools/openroad/scripts/sc_procs.tcl,sha256=nQcaGX1sQjYdW5SKVB2jtuVvRPyfJcNxqNMofIcWrDI,11530
|
|
215
216
|
siliconcompiler/tools/openroad/scripts/sc_rcx.tcl,sha256=-70AuNikbsoHd_bW-myc8QMbmJNFSK-DqKIN_HF0luc,1514
|
|
216
217
|
siliconcompiler/tools/openroad/scripts/sc_rcx_bench.tcl,sha256=d_VgTJA4hwRiaJVTTBOl1LxfJ3KB7fHJjmj8eTm1GRs,682
|
|
217
218
|
siliconcompiler/tools/openroad/scripts/sc_rcx_extract.tcl,sha256=Aj9J_8aiOR1WqcQvdx99WyUDcN8RafxXwtrexcS5UcU,489
|
|
@@ -264,8 +265,10 @@ siliconcompiler/tools/vpr/route.py,sha256=uD4A2fSahluRhSJayjW1rfXt9pI3wWAbLIRU_Y
|
|
|
264
265
|
siliconcompiler/tools/vpr/screenshot.py,sha256=5Ji6J9p0R0C7C9WkuCwLu2InGQpeCo_Ciif7wUXz9ng,1818
|
|
265
266
|
siliconcompiler/tools/vpr/show.py,sha256=Dm0efQaOa2G6FsDeo6BpNYEp0farqKQOXeF_JLBuSYo,3120
|
|
266
267
|
siliconcompiler/tools/vpr/vpr.py,sha256=3FZpwuh-FtatXt9qd7qRb6ALZe8P8AFJDoMvV_kunp0,13600
|
|
267
|
-
siliconcompiler/tools/
|
|
268
|
-
siliconcompiler/tools/
|
|
268
|
+
siliconcompiler/tools/xdm/__init__.py,sha256=uEo7uTPRdoARmk0E5U8yQ_MZOntO-cWJfGb6_pPA0ZQ,729
|
|
269
|
+
siliconcompiler/tools/xdm/convert.py,sha256=rlirszWfNs2x9KApd3AiKpx78B3bfQ5VVWv5Nk_LSuU,2371
|
|
270
|
+
siliconcompiler/tools/xyce/__init__.py,sha256=FV1MEcqT_NqnHaR15zXM0zDtEorg6Amma6SHqxHujJo,1279
|
|
271
|
+
siliconcompiler/tools/xyce/simulate.py,sha256=Af4FcwLQrrlzsyCmMg9M_ZvpabWnLFrFYnitHNpBpkc,2900
|
|
269
272
|
siliconcompiler/tools/yosys/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
270
273
|
siliconcompiler/tools/yosys/lec.py,sha256=VD7FAIzvwZOsMViA0Nd9f3sY2a7kkE2BobfewkflwKQ,1906
|
|
271
274
|
siliconcompiler/tools/yosys/prepareLib.py,sha256=9FbbAKhegY9Gwvgw9VnC0Rrl4tOCrNF0rZnUrOxJGNg,2267
|
|
@@ -285,9 +288,9 @@ siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLu
|
|
|
285
288
|
siliconcompiler/utils/__init__.py,sha256=Gu92RwiPZ8xrdsTUYVKp9TuNJGrU-5UvOuixPugzLww,13122
|
|
286
289
|
siliconcompiler/utils/asic.py,sha256=cMLs7dneSmh5BlHS0-bZ1tLUpvghTw__gNaUCMpyBds,4986
|
|
287
290
|
siliconcompiler/utils/showtools.py,sha256=sMZeHm3CpB4lH-MEeZfNSPYedmnokijTiAHmFDgbtsI,1133
|
|
288
|
-
siliconcompiler-0.28.
|
|
289
|
-
siliconcompiler-0.28.
|
|
290
|
-
siliconcompiler-0.28.
|
|
291
|
-
siliconcompiler-0.28.
|
|
292
|
-
siliconcompiler-0.28.
|
|
293
|
-
siliconcompiler-0.28.
|
|
291
|
+
siliconcompiler-0.28.1.dist-info/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
|
|
292
|
+
siliconcompiler-0.28.1.dist-info/METADATA,sha256=MYsUWwDCrdU1RABFBlbajEG3SAj6PXMcnHaVudzQpzc,9734
|
|
293
|
+
siliconcompiler-0.28.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
294
|
+
siliconcompiler-0.28.1.dist-info/entry_points.txt,sha256=M3cpZxvqanXhVU9CuLTRDzBdDKmKz-t0p4DT57TyysU,451
|
|
295
|
+
siliconcompiler-0.28.1.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
|
|
296
|
+
siliconcompiler-0.28.1.dist-info/RECORD,,
|
|
File without changes
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
'''
|
|
2
|
-
The OpenFPGALoader is a universal utility for programming
|
|
3
|
-
FPGAs. Compatible with many boards, cables and FPGA from
|
|
4
|
-
major manufacturers (Xilinx, Altera/Intel, Lattice, Gowin,
|
|
5
|
-
Efinix, Anlogic). openFPGALoader works on Linux, Windows and
|
|
6
|
-
macOS.
|
|
7
|
-
|
|
8
|
-
Documentation: https://github.com/trabucayre/openFPGALoader
|
|
9
|
-
|
|
10
|
-
Sources: https://github.com/trabucayre/openFPGALoader
|
|
11
|
-
|
|
12
|
-
Installation: https://github.com/trabucayre/openFPGALoader
|
|
13
|
-
|
|
14
|
-
Status: SC integration WIP
|
|
15
|
-
'''
|
|
16
|
-
from siliconcompiler.tools._common import get_tool_task
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
################################
|
|
20
|
-
# Setup Tool (pre executable)
|
|
21
|
-
################################
|
|
22
|
-
def setup(chip):
|
|
23
|
-
''' openFPGALoader setup function
|
|
24
|
-
'''
|
|
25
|
-
|
|
26
|
-
# If the 'lock' bit is set, don't reconfigure.
|
|
27
|
-
tool = 'openfpgaloader'
|
|
28
|
-
step = chip.get('arg', 'step')
|
|
29
|
-
index = chip.get('arg', 'index')
|
|
30
|
-
_, task = get_tool_task(chip, step, index)
|
|
31
|
-
|
|
32
|
-
# tool setup
|
|
33
|
-
chip.set('tool', tool, 'exe', tool)
|
|
34
|
-
chip.set('tool', tool, 'vswitch', '--Version', clobber=False)
|
|
35
|
-
chip.set('tool', tool, 'version', '0.5.0', clobber=False)
|
|
36
|
-
|
|
37
|
-
options = []
|
|
38
|
-
options.append("inputs" + chip.top() + ".bit")
|
|
39
|
-
chip.add('tool', tool, 'task', task, 'option', options, step=step, index=index)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
'''
|
|
2
|
-
Xyce is a high performance SPICE-compatible circuit simulator
|
|
3
|
-
capable capable of solving extremely large circuit problems by
|
|
4
|
-
supporting large-scale parallel computing platforms. It also
|
|
5
|
-
supports serial execution on all common desktop platforms,
|
|
6
|
-
and small-scale parallel runs on Unix-like systems.
|
|
7
|
-
|
|
8
|
-
Documentation: https://xyce.sandia.gov/documentation-tutorials/
|
|
9
|
-
|
|
10
|
-
Sources: https://github.com/Xyce/Xyce
|
|
11
|
-
|
|
12
|
-
Installation: https://xyce.sandia.gov/documentation-tutorials/building-guide/
|
|
13
|
-
|
|
14
|
-
Status: SC integration WIP
|
|
15
|
-
'''
|
|
16
|
-
|
|
17
|
-
import os
|
|
18
|
-
from siliconcompiler.tools._common import get_tool_task
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
################################
|
|
22
|
-
# Setup Tool (pre executable)
|
|
23
|
-
################################
|
|
24
|
-
def setup(chip):
|
|
25
|
-
|
|
26
|
-
tool = 'xyce'
|
|
27
|
-
step = chip.get('arg', 'step')
|
|
28
|
-
index = chip.get('arg', 'index')
|
|
29
|
-
_, task = get_tool_task(chip, step, index)
|
|
30
|
-
|
|
31
|
-
clobber = False
|
|
32
|
-
|
|
33
|
-
chip.set('tool', tool, 'exe', tool)
|
|
34
|
-
chip.set('tool', tool, 'version', '0.0', clobber=clobber)
|
|
35
|
-
chip.set('tool', tool, 'task', task, 'threads', os.cpu_count(),
|
|
36
|
-
step=step, index=index, clobber=clobber)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|