siliconcompiler 0.29.1__py3-none-any.whl → 0.29.3__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/apps/sc_install.py +2 -2
- siliconcompiler/core.py +18 -8
- siliconcompiler/flowgraph.py +23 -5
- siliconcompiler/scheduler/__init__.py +21 -9
- siliconcompiler/tools/__init__.py +2 -0
- siliconcompiler/tools/_common/asic.py +70 -0
- siliconcompiler/tools/_common/tcl/sc_pin_constraints.tcl +2 -2
- siliconcompiler/tools/bambu/convert.py +2 -1
- siliconcompiler/tools/bluespec/convert.py +2 -1
- siliconcompiler/tools/chisel/convert.py +2 -1
- siliconcompiler/tools/genfasm/bitstream.py +2 -2
- siliconcompiler/tools/ghdl/convert.py +2 -2
- siliconcompiler/tools/gtkwave/__init__.py +39 -0
- siliconcompiler/tools/gtkwave/scripts/sc_show.tcl +34 -0
- siliconcompiler/tools/gtkwave/show.py +71 -0
- siliconcompiler/tools/icarus/compile.py +6 -2
- siliconcompiler/tools/klayout/drc.py +2 -1
- siliconcompiler/tools/magic/magic.py +1 -1
- siliconcompiler/tools/netgen/lvs.py +2 -1
- siliconcompiler/tools/openroad/_apr.py +14 -5
- siliconcompiler/tools/openroad/global_placement.py +23 -2
- siliconcompiler/tools/openroad/rdlroute.py +2 -2
- siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl +1 -1
- siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl +64 -1
- siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl +78 -94
- siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl +11 -1
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +4 -0
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl +7 -1
- siliconcompiler/tools/openroad/scripts/common/procs.tcl +39 -3
- siliconcompiler/tools/openroad/scripts/common/reports.tcl +4 -0
- siliconcompiler/tools/openroad/scripts/common/write_data.tcl +2 -5
- siliconcompiler/tools/openroad/scripts/common/write_data_physical.tcl +3 -0
- siliconcompiler/tools/openroad/scripts/common/write_data_timing.tcl +1 -0
- siliconcompiler/tools/openroad/scripts/common/write_images.tcl +10 -1
- siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl +1 -1
- siliconcompiler/tools/opensta/__init__.py +2 -2
- siliconcompiler/tools/opensta/report_libraries.py +2 -2
- siliconcompiler/tools/opensta/timing.py +2 -1
- siliconcompiler/tools/slang/__init__.py +78 -2
- siliconcompiler/tools/slang/elaborate.py +46 -0
- siliconcompiler/tools/slang/lint.py +10 -76
- siliconcompiler/tools/surelog/parse.py +1 -1
- siliconcompiler/tools/sv2v/convert.py +2 -2
- siliconcompiler/tools/template/template.py +2 -2
- siliconcompiler/tools/verilator/compile.py +11 -0
- siliconcompiler/tools/verilator/verilator.py +3 -2
- siliconcompiler/tools/vivado/vivado.py +2 -1
- siliconcompiler/tools/vpr/place.py +2 -2
- siliconcompiler/tools/vpr/route.py +2 -2
- siliconcompiler/tools/vpr/show.py +2 -1
- siliconcompiler/tools/yosys/syn_asic.py +8 -0
- siliconcompiler/tools/yosys/syn_asic.tcl +4 -0
- siliconcompiler/toolscripts/_tools.json +8 -3
- siliconcompiler/toolscripts/rhel8/install-slang.sh +0 -0
- siliconcompiler/toolscripts/rhel8/install-sv2v.sh +7 -1
- siliconcompiler/toolscripts/rhel9/install-gtkwave.sh +40 -0
- siliconcompiler/toolscripts/rhel9/install-slang.sh +0 -0
- siliconcompiler/toolscripts/rhel9/install-sv2v.sh +7 -1
- siliconcompiler/toolscripts/ubuntu20/install-gtkwave.sh +28 -0
- siliconcompiler/toolscripts/ubuntu20/install-slang.sh +0 -0
- siliconcompiler/toolscripts/ubuntu20/install-surelog.sh +1 -0
- siliconcompiler/toolscripts/ubuntu20/install-sv2v.sh +7 -1
- siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh +28 -0
- siliconcompiler/toolscripts/ubuntu22/install-slang.sh +0 -0
- siliconcompiler/toolscripts/ubuntu22/install-surelog.sh +7 -1
- siliconcompiler/toolscripts/ubuntu22/install-sv2v.sh +7 -1
- siliconcompiler/toolscripts/ubuntu24/install-bambu.sh +3 -4
- siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh +29 -0
- siliconcompiler/toolscripts/ubuntu24/install-slang.sh +0 -0
- siliconcompiler/toolscripts/ubuntu24/install-surelog.sh +7 -1
- siliconcompiler/toolscripts/ubuntu24/install-sv2v.sh +7 -1
- siliconcompiler/utils/__init__.py +22 -0
- siliconcompiler/utils/logging.py +67 -0
- siliconcompiler/utils/showtools.py +3 -0
- {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.3.dist-info}/METADATA +8 -8
- {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.3.dist-info}/RECORD +76 -65
- {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.3.dist-info}/LICENSE +0 -0
- {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.3.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.3.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.29.1.dist-info → siliconcompiler-0.29.3.dist-info}/top_level.txt +0 -0
|
@@ -12,7 +12,9 @@ Installation: https://sv-lang.com/building.html
|
|
|
12
12
|
'''
|
|
13
13
|
import re
|
|
14
14
|
from siliconcompiler import sc_open
|
|
15
|
-
from siliconcompiler.tools._common import
|
|
15
|
+
from siliconcompiler.tools._common import record_metric
|
|
16
|
+
from siliconcompiler.tools._common import \
|
|
17
|
+
get_frontend_options, get_input_files, get_tool_task
|
|
16
18
|
|
|
17
19
|
|
|
18
20
|
################################
|
|
@@ -38,7 +40,6 @@ def parse_version(stdout):
|
|
|
38
40
|
def post_process(chip):
|
|
39
41
|
step = chip.get('arg', 'step')
|
|
40
42
|
index = chip.get('arg', 'index')
|
|
41
|
-
tool, task = get_tool_task(chip, step, index)
|
|
42
43
|
|
|
43
44
|
log = f'{step}.log'
|
|
44
45
|
with sc_open(log) as f:
|
|
@@ -47,3 +48,78 @@ def post_process(chip):
|
|
|
47
48
|
if match:
|
|
48
49
|
record_metric(chip, step, index, 'errors', match.group(1), log)
|
|
49
50
|
record_metric(chip, step, index, 'warnings', match.group(2), log)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def common_runtime_options(chip):
|
|
54
|
+
options = []
|
|
55
|
+
|
|
56
|
+
step = chip.get('arg', 'step')
|
|
57
|
+
index = chip.get('arg', 'index')
|
|
58
|
+
tool, task = get_tool_task(chip, step, index)
|
|
59
|
+
|
|
60
|
+
options.extend(['-j', str(chip.get('tool', tool, 'task', task, 'threads',
|
|
61
|
+
step=step, index=index))])
|
|
62
|
+
|
|
63
|
+
opts = get_frontend_options(chip,
|
|
64
|
+
['ydir',
|
|
65
|
+
'idir',
|
|
66
|
+
'vlib',
|
|
67
|
+
'libext',
|
|
68
|
+
'define',
|
|
69
|
+
'param'])
|
|
70
|
+
|
|
71
|
+
if opts['libext']:
|
|
72
|
+
options.append(f'--libext {",".join(opts["libext"])}')
|
|
73
|
+
|
|
74
|
+
#####################
|
|
75
|
+
# Library directories
|
|
76
|
+
#####################
|
|
77
|
+
if opts['ydir']:
|
|
78
|
+
options.append(f'-y {",".join(opts["ydir"])}')
|
|
79
|
+
|
|
80
|
+
#####################
|
|
81
|
+
# Library files
|
|
82
|
+
#####################
|
|
83
|
+
if opts['vlib']:
|
|
84
|
+
options.append(f'-libfile {",".join(opts["vlib"])}')
|
|
85
|
+
|
|
86
|
+
#####################
|
|
87
|
+
# Include paths
|
|
88
|
+
#####################
|
|
89
|
+
if opts['idir']:
|
|
90
|
+
options.append(f'--include-directory {",".join(opts["idir"])}')
|
|
91
|
+
|
|
92
|
+
#######################
|
|
93
|
+
# Variable Definitions
|
|
94
|
+
#######################
|
|
95
|
+
for value in opts['define']:
|
|
96
|
+
options.append('-D ' + value)
|
|
97
|
+
|
|
98
|
+
#######################
|
|
99
|
+
# Command files
|
|
100
|
+
#######################
|
|
101
|
+
cmdfiles = get_input_files(chip, 'input', 'cmdfile', 'f')
|
|
102
|
+
if cmdfiles:
|
|
103
|
+
options.append(f'-F {",".join(cmdfiles)}')
|
|
104
|
+
|
|
105
|
+
#######################
|
|
106
|
+
# Sources
|
|
107
|
+
#######################
|
|
108
|
+
for value in get_input_files(chip, 'input', 'rtl', 'systemverilog'):
|
|
109
|
+
options.append(value)
|
|
110
|
+
for value in get_input_files(chip, 'input', 'rtl', 'verilog'):
|
|
111
|
+
options.append(value)
|
|
112
|
+
|
|
113
|
+
#######################
|
|
114
|
+
# Top Module
|
|
115
|
+
#######################
|
|
116
|
+
options.append('--top ' + chip.top())
|
|
117
|
+
|
|
118
|
+
###############################
|
|
119
|
+
# Parameters (top module only)
|
|
120
|
+
###############################
|
|
121
|
+
# Set up user-provided parameters to ensure we elaborate the correct modules
|
|
122
|
+
for param, value in opts['param']:
|
|
123
|
+
options.append(f'-G {param}={value}')
|
|
124
|
+
|
|
125
|
+
return options
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from siliconcompiler import utils
|
|
2
|
+
from siliconcompiler.tools import slang
|
|
3
|
+
from siliconcompiler.tools._common import \
|
|
4
|
+
add_require_input, add_frontend_requires, get_tool_task, has_input_files
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def setup(chip):
|
|
8
|
+
'''
|
|
9
|
+
Elaborate verilog design files and generate a unified file.
|
|
10
|
+
'''
|
|
11
|
+
slang.setup(chip)
|
|
12
|
+
|
|
13
|
+
step = chip.get('arg', 'step')
|
|
14
|
+
index = chip.get('arg', 'index')
|
|
15
|
+
tool, task = get_tool_task(chip, step, index)
|
|
16
|
+
|
|
17
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
18
|
+
clobber=False, step=step, index=index)
|
|
19
|
+
|
|
20
|
+
add_require_input(chip, 'input', 'rtl', 'verilog')
|
|
21
|
+
add_require_input(chip, 'input', 'rtl', 'systemverilog')
|
|
22
|
+
add_frontend_requires(chip, ['ydir', 'idir', 'vlib', 'libext', 'define', 'param'])
|
|
23
|
+
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'stdout', 'destination', 'output', step=step, index=index)
|
|
25
|
+
chip.set('tool', tool, 'task', task, 'stdout', 'suffix', 'v', step=step, index=index)
|
|
26
|
+
|
|
27
|
+
chip.set('tool', tool, 'task', task, 'output', __outputfile(chip), step=step, index=index)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def runtime_options(chip):
|
|
31
|
+
options = slang.common_runtime_options(chip)
|
|
32
|
+
options.extend([
|
|
33
|
+
"--preprocess",
|
|
34
|
+
"--comments",
|
|
35
|
+
"--ignore-unknown-modules",
|
|
36
|
+
"--allow-use-before-declare"
|
|
37
|
+
])
|
|
38
|
+
|
|
39
|
+
return options
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def __outputfile(chip):
|
|
43
|
+
is_systemverilog = has_input_files(chip, 'input', 'rtl', 'systemverilog')
|
|
44
|
+
if is_systemverilog:
|
|
45
|
+
return f'{chip.top()}.sv'
|
|
46
|
+
return f'{chip.top()}.v'
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
Lint system verilog
|
|
3
|
-
'''
|
|
1
|
+
from siliconcompiler import utils
|
|
4
2
|
from siliconcompiler.tools import slang
|
|
5
3
|
from siliconcompiler.tools._common import \
|
|
6
|
-
add_require_input, add_frontend_requires,
|
|
7
|
-
import os
|
|
4
|
+
add_require_input, add_frontend_requires, get_tool_task
|
|
8
5
|
|
|
9
6
|
|
|
10
7
|
def setup(chip):
|
|
8
|
+
'''
|
|
9
|
+
Lint system verilog
|
|
10
|
+
'''
|
|
11
11
|
slang.setup(chip)
|
|
12
12
|
|
|
13
13
|
step = chip.get('arg', 'step')
|
|
14
14
|
index = chip.get('arg', 'index')
|
|
15
15
|
tool, task = get_tool_task(chip, step, index)
|
|
16
16
|
|
|
17
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
17
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
18
18
|
clobber=False, step=step, index=index)
|
|
19
19
|
|
|
20
20
|
add_require_input(chip, 'input', 'rtl', 'verilog')
|
|
@@ -23,76 +23,10 @@ def setup(chip):
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def runtime_options(chip):
|
|
26
|
-
options =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
tool, task = get_tool_task(chip, step, index)
|
|
31
|
-
|
|
32
|
-
options.extend(['-j', str(chip.get('tool', tool, 'task', task, 'threads',
|
|
33
|
-
step=step, index=index))])
|
|
34
|
-
|
|
35
|
-
opts = get_frontend_options(chip,
|
|
36
|
-
['ydir',
|
|
37
|
-
'idir',
|
|
38
|
-
'vlib',
|
|
39
|
-
'libext',
|
|
40
|
-
'define',
|
|
41
|
-
'param'])
|
|
42
|
-
|
|
43
|
-
if opts['libext']:
|
|
44
|
-
options.append(f'--libext {",".join(opts["libext"])}')
|
|
45
|
-
|
|
46
|
-
#####################
|
|
47
|
-
# Library directories
|
|
48
|
-
#####################
|
|
49
|
-
if opts['ydir']:
|
|
50
|
-
options.append(f'-y {",".join(opts["ydir"])}')
|
|
51
|
-
|
|
52
|
-
#####################
|
|
53
|
-
# Library files
|
|
54
|
-
#####################
|
|
55
|
-
if opts['vlib']:
|
|
56
|
-
options.append(f'-libfile {",".join(opts["vlib"])}')
|
|
57
|
-
|
|
58
|
-
#####################
|
|
59
|
-
# Include paths
|
|
60
|
-
#####################
|
|
61
|
-
if opts['idir']:
|
|
62
|
-
options.append(f'--include-directory {",".join(opts["idir"])}')
|
|
63
|
-
|
|
64
|
-
#######################
|
|
65
|
-
# Variable Definitions
|
|
66
|
-
#######################
|
|
67
|
-
for value in opts['define']:
|
|
68
|
-
options.append('-D ' + value)
|
|
69
|
-
|
|
70
|
-
#######################
|
|
71
|
-
# Command files
|
|
72
|
-
#######################
|
|
73
|
-
cmdfiles = get_input_files(chip, 'input', 'cmdfile', 'f')
|
|
74
|
-
if cmdfiles:
|
|
75
|
-
options.append(f'-F {",".join(cmdfiles)}')
|
|
76
|
-
|
|
77
|
-
#######################
|
|
78
|
-
# Sources
|
|
79
|
-
#######################
|
|
80
|
-
for value in get_input_files(chip, 'input', 'rtl', 'systemverilog'):
|
|
81
|
-
options.append(value)
|
|
82
|
-
for value in get_input_files(chip, 'input', 'rtl', 'verilog'):
|
|
83
|
-
options.append(value)
|
|
84
|
-
|
|
85
|
-
#######################
|
|
86
|
-
# Top Module
|
|
87
|
-
#######################
|
|
88
|
-
options.append('--top ' + chip.top())
|
|
89
|
-
|
|
90
|
-
###############################
|
|
91
|
-
# Parameters (top module only)
|
|
92
|
-
###############################
|
|
93
|
-
# Set up user-provided parameters to ensure we elaborate the correct modules
|
|
94
|
-
for param, value in opts['param']:
|
|
95
|
-
options.append(f'-G {param}={value}')
|
|
26
|
+
options = slang.common_runtime_options(chip)
|
|
27
|
+
options.extend([
|
|
28
|
+
"--lint-only"
|
|
29
|
+
])
|
|
96
30
|
|
|
97
31
|
return options
|
|
98
32
|
|
|
@@ -28,7 +28,7 @@ def setup(chip):
|
|
|
28
28
|
_, task = get_tool_task(chip, step, index)
|
|
29
29
|
|
|
30
30
|
# Runtime parameters.
|
|
31
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
31
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
32
32
|
step=step, index=index, clobber=False)
|
|
33
33
|
|
|
34
34
|
# Input/Output requirements
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
from siliconcompiler import utils
|
|
2
2
|
from siliconcompiler.tools._common import input_provides
|
|
3
3
|
|
|
4
4
|
|
|
@@ -23,7 +23,7 @@ def setup(chip):
|
|
|
23
23
|
chip.set('tool', tool, 'vswitch', '--numeric-version')
|
|
24
24
|
chip.set('tool', tool, 'version', '>=0.0.9', clobber=False)
|
|
25
25
|
|
|
26
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
26
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
27
27
|
step=step, index=index, clobber=False)
|
|
28
28
|
|
|
29
29
|
# Since we run sv2v after the import/preprocess step, there should be no
|
|
@@ -8,7 +8,7 @@ Sources: https://
|
|
|
8
8
|
Installation: https://
|
|
9
9
|
'''
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
from siliconcompiler import utils
|
|
12
12
|
import siliconcompiler
|
|
13
13
|
from siliconcompiler.tools._common import get_tool_task
|
|
14
14
|
|
|
@@ -60,7 +60,7 @@ def setup(chip):
|
|
|
60
60
|
|
|
61
61
|
chip.set('tool', tool, 'task', task, 'option', options,
|
|
62
62
|
step=step, index=index, clobber=False)
|
|
63
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
63
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
64
64
|
step=step, index=index, clobber=False)
|
|
65
65
|
|
|
66
66
|
# Required for script based tools
|
|
@@ -97,6 +97,12 @@ def setup(chip):
|
|
|
97
97
|
"'vcd' or 'fst'. Defaults to 'vcd'.",
|
|
98
98
|
field='help')
|
|
99
99
|
|
|
100
|
+
chip.set('tool', tool, 'task', task, 'var', 'initialize_random',
|
|
101
|
+
'true/false, when true registers will reset with a random value.',
|
|
102
|
+
field='help')
|
|
103
|
+
chip.set('tool', tool, 'task', task, 'var', 'initialize_random', False,
|
|
104
|
+
step=step, index=index, clobber=False)
|
|
105
|
+
|
|
100
106
|
|
|
101
107
|
def runtime_options(chip):
|
|
102
108
|
tool = 'verilator'
|
|
@@ -107,6 +113,11 @@ def runtime_options(chip):
|
|
|
107
113
|
|
|
108
114
|
cmdlist = runtime_options_tool(chip)
|
|
109
115
|
|
|
116
|
+
random_init = chip.get('tool', tool, 'task', task, 'var',
|
|
117
|
+
'initialize_random', step=step, index=index)
|
|
118
|
+
if random_init == ['true']:
|
|
119
|
+
cmdlist.extend(['--x-assign', 'unique'])
|
|
120
|
+
|
|
110
121
|
cmdlist.extend(['--exe', '--build'])
|
|
111
122
|
|
|
112
123
|
threads = chip.get('tool', tool, 'task', task, 'threads', step=step, index=index)
|
|
@@ -24,6 +24,7 @@ Installation: https://verilator.org/guide/latest/install.html
|
|
|
24
24
|
'''
|
|
25
25
|
|
|
26
26
|
import os
|
|
27
|
+
from siliconcompiler import utils
|
|
27
28
|
from siliconcompiler.tools._common import (
|
|
28
29
|
add_frontend_requires,
|
|
29
30
|
get_frontend_options,
|
|
@@ -59,7 +60,7 @@ def setup(chip):
|
|
|
59
60
|
|
|
60
61
|
# Common to all tasks
|
|
61
62
|
# Max threads
|
|
62
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
63
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
63
64
|
step=step, index=index, clobber=False)
|
|
64
65
|
|
|
65
66
|
# Basic warning and error grep check on logfile
|
|
@@ -77,7 +78,7 @@ def setup(chip):
|
|
|
77
78
|
chip.set('tool', tool, 'task', task, 'var', 'enable_assert',
|
|
78
79
|
'true/false, when true assertions are enabled in Verilator.',
|
|
79
80
|
field='help')
|
|
80
|
-
chip.set('tool', tool, 'task', task, 'var', 'enable_assert',
|
|
81
|
+
chip.set('tool', tool, 'task', task, 'var', 'enable_assert', False,
|
|
81
82
|
step=step, index=index, clobber=False)
|
|
82
83
|
|
|
83
84
|
if chip.get('tool', tool, 'task', task, 'var', 'enable_assert', step=step, index=index):
|
|
@@ -8,6 +8,7 @@ Documentation: https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/
|
|
|
8
8
|
import json
|
|
9
9
|
import os
|
|
10
10
|
import re
|
|
11
|
+
from siliconcompiler import utils
|
|
11
12
|
from siliconcompiler import sc_open
|
|
12
13
|
from siliconcompiler.tools._common import record_metric
|
|
13
14
|
|
|
@@ -47,7 +48,7 @@ def setup_task(chip, task):
|
|
|
47
48
|
chip.set('tool', tool, 'task', task, 'refdir', refdir, step=step, index=index,
|
|
48
49
|
package='siliconcompiler', clobber=False)
|
|
49
50
|
chip.set('tool', tool, 'task', task, 'script', script, step=step, index=index, clobber=False)
|
|
50
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
51
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
51
52
|
step=step, index=index, clobber=False)
|
|
52
53
|
chip.set('tool', tool, 'task', task, 'option', option, step=step, index=index, clobber=False)
|
|
53
54
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import os
|
|
2
1
|
import shutil
|
|
2
|
+
from siliconcompiler import utils
|
|
3
3
|
from siliconcompiler import SiliconCompilerError
|
|
4
4
|
from siliconcompiler.tools.vpr import vpr
|
|
5
5
|
from siliconcompiler.tools.vpr._json_constraint import load_constraints_map
|
|
@@ -21,7 +21,7 @@ def setup(chip, clobber=True):
|
|
|
21
21
|
|
|
22
22
|
vpr.setup_tool(chip, clobber=clobber)
|
|
23
23
|
|
|
24
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
24
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
25
25
|
step=step, index=index, clobber=False)
|
|
26
26
|
|
|
27
27
|
design = chip.top()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import os
|
|
2
1
|
import shutil
|
|
3
2
|
|
|
3
|
+
from siliconcompiler import utils
|
|
4
4
|
from siliconcompiler.tools.vpr import vpr
|
|
5
5
|
from siliconcompiler.tools._common import get_tool_task
|
|
6
6
|
|
|
@@ -30,7 +30,7 @@ def setup(chip, clobber=True):
|
|
|
30
30
|
",".join(['tool', tool, 'task', task, 'var', 'max_router_iterations']),
|
|
31
31
|
step=step, index=index)
|
|
32
32
|
|
|
33
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
33
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
34
34
|
step=step, index=index, clobber=clobber)
|
|
35
35
|
|
|
36
36
|
# TO-DO: PRIOROTIZE the post-routing packing results?
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from siliconcompiler import utils
|
|
2
3
|
from siliconcompiler import SiliconCompilerError
|
|
3
4
|
from siliconcompiler.tools.vpr import vpr
|
|
4
5
|
from siliconcompiler.tools._common import get_tool_task
|
|
@@ -16,7 +17,7 @@ def setup(chip, clobber=True):
|
|
|
16
17
|
|
|
17
18
|
vpr.setup_tool(chip, clobber=clobber)
|
|
18
19
|
|
|
19
|
-
chip.set('tool', tool, 'task', task, 'threads',
|
|
20
|
+
chip.set('tool', tool, 'task', task, 'threads', utils.get_cores(chip),
|
|
20
21
|
step=step, index=index, clobber=False)
|
|
21
22
|
|
|
22
23
|
|
|
@@ -185,6 +185,14 @@ def setup_asic(chip):
|
|
|
185
185
|
'Instance limit for the number of cells in a module to preserve.',
|
|
186
186
|
field='help')
|
|
187
187
|
|
|
188
|
+
chip.set('tool', tool, 'task', task, 'var', 'hierarchy_separator',
|
|
189
|
+
'control the hierarchy separator used during design flattening', field='help')
|
|
190
|
+
chip.set('tool', tool, 'task', task, 'var', 'hierarchy_separator', '/',
|
|
191
|
+
step=step, index=index, clobber=False)
|
|
192
|
+
chip.add('tool', tool, 'task', task, 'require',
|
|
193
|
+
','.join(['tool', tool, 'task', task, 'var', 'hierarchy_separator']),
|
|
194
|
+
step=step, index=index)
|
|
195
|
+
|
|
188
196
|
set_tool_task_var(chip, 'map_clockgates',
|
|
189
197
|
default_value=False,
|
|
190
198
|
schelp='Map clockgates during synthesis.')
|
|
@@ -233,6 +233,10 @@ if { [sc_cfg_tool_task_exists file synth_extra_map] } {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
|
|
236
|
+
# Specify hierarchy separator
|
|
237
|
+
yosys scratchpad \
|
|
238
|
+
-set flatten.separator "[lindex [sc_cfg_tool_task_get var hierarchy_separator] 0]"
|
|
239
|
+
|
|
236
240
|
# Start synthesis
|
|
237
241
|
yosys synth {*}$synth_args -top $sc_design -run begin:fine
|
|
238
242
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"openroad": {
|
|
3
3
|
"git-url": "https://github.com/The-OpenROAD-Project/OpenROAD.git",
|
|
4
|
-
"git-commit": "
|
|
4
|
+
"git-commit": "44e36144112da6b2a3bb346ca0d0b692b6d117ca",
|
|
5
5
|
"docker-cmds": [
|
|
6
6
|
"# Remove OR-Tools files",
|
|
7
7
|
"RUN rm -f $SC_PREFIX/Makefile $SC_PREFIX/README.md",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"auto-update": false
|
|
37
37
|
},
|
|
38
38
|
"klayout": {
|
|
39
|
-
"version": "0.29.
|
|
39
|
+
"version": "0.29.11",
|
|
40
40
|
"git-url": "https://github.com/KLayout/klayout.git",
|
|
41
41
|
"docker-skip": true,
|
|
42
42
|
"auto-update": true,
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
},
|
|
92
92
|
"yosys": {
|
|
93
93
|
"git-url": "https://github.com/YosysHQ/yosys.git",
|
|
94
|
-
"git-commit": "v0.
|
|
94
|
+
"git-commit": "v0.49",
|
|
95
95
|
"version-prefix": "",
|
|
96
96
|
"auto-update": true
|
|
97
97
|
},
|
|
@@ -131,5 +131,10 @@
|
|
|
131
131
|
"git-commit": "v7.0",
|
|
132
132
|
"git-url": "https://github.com/MikePopoloski/slang.git",
|
|
133
133
|
"auto-update": true
|
|
134
|
+
},
|
|
135
|
+
"gtkwave": {
|
|
136
|
+
"git-commit": "v3.3.116",
|
|
137
|
+
"git-url": "https://github.com/gtkwave/gtkwave.git",
|
|
138
|
+
"auto-update": false
|
|
134
139
|
}
|
|
135
140
|
}
|
|
File without changes
|
|
@@ -11,7 +11,13 @@ cd deps
|
|
|
11
11
|
sudo yum group install -y "Development Tools"
|
|
12
12
|
sudo yum install -y gmp-devel xz
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
haskell_args=""
|
|
15
|
+
if [ ! -z ${PREFIX} ]; then
|
|
16
|
+
haskell_args="-d $PREFIX"
|
|
17
|
+
export PATH="$PREFIX:$PATH"
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
curl -sSL https://get.haskellstack.org/ | sh -s - -f $haskell_args
|
|
15
21
|
|
|
16
22
|
git clone $(python3 ${src_path}/_tools.py --tool sv2v --field git-url) sv2v
|
|
17
23
|
cd sv2v
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
# Get directory of script
|
|
6
|
+
src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
|
|
7
|
+
|
|
8
|
+
sudo yum group install -y "Development Tools"
|
|
9
|
+
sudo yum install -y gtk3-devel \
|
|
10
|
+
bzip2-devel xz-devel tcl-devel tk-devel
|
|
11
|
+
sudo dnf config-manager --set-enabled devel || true
|
|
12
|
+
sudo yum install -y Judy-devel
|
|
13
|
+
sudo dnf config-manager --set-disabled devel || true
|
|
14
|
+
|
|
15
|
+
mkdir -p deps
|
|
16
|
+
cd deps
|
|
17
|
+
|
|
18
|
+
args=
|
|
19
|
+
if [ ! -z ${PREFIX} ]; then
|
|
20
|
+
args=--prefix="$PREFIX"
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz
|
|
24
|
+
tar xvf gperf-3.1.tar.gz
|
|
25
|
+
cd gperf-3.1
|
|
26
|
+
./configure $args
|
|
27
|
+
make -j$(nproc)
|
|
28
|
+
sudo make install
|
|
29
|
+
cd ..
|
|
30
|
+
|
|
31
|
+
git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
|
|
32
|
+
cd gtkwave
|
|
33
|
+
git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
|
|
34
|
+
|
|
35
|
+
cd gtkwave3-gtk3
|
|
36
|
+
|
|
37
|
+
./autogen.sh
|
|
38
|
+
./configure --enable-gtk3 $args
|
|
39
|
+
make -j$(nproc)
|
|
40
|
+
sudo make install
|
|
File without changes
|
|
@@ -11,7 +11,13 @@ cd deps
|
|
|
11
11
|
sudo yum group install -y "Development Tools"
|
|
12
12
|
sudo yum install -y gmp-devel xz
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
haskell_args=""
|
|
15
|
+
if [ ! -z ${PREFIX} ]; then
|
|
16
|
+
haskell_args="-d $PREFIX"
|
|
17
|
+
export PATH="$PREFIX:$PATH"
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
curl -sSL https://get.haskellstack.org/ | sh -s - -f $haskell_args
|
|
15
21
|
|
|
16
22
|
git clone $(python3 ${src_path}/_tools.py --tool sv2v --field git-url) sv2v
|
|
17
23
|
cd sv2v
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
# Get directory of script
|
|
6
|
+
src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
|
|
7
|
+
|
|
8
|
+
sudo apt-get install -y build-essential gperf libgtk-3-dev \
|
|
9
|
+
libbz2-dev libjudy-dev liblzma-dev tcl-dev tk-dev
|
|
10
|
+
|
|
11
|
+
mkdir -p deps
|
|
12
|
+
cd deps
|
|
13
|
+
|
|
14
|
+
git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
|
|
15
|
+
cd gtkwave
|
|
16
|
+
git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
|
|
17
|
+
|
|
18
|
+
args=
|
|
19
|
+
if [ ! -z ${PREFIX} ]; then
|
|
20
|
+
args=--prefix="$PREFIX"
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
cd gtkwave3-gtk3
|
|
24
|
+
|
|
25
|
+
./autogen.sh
|
|
26
|
+
./configure --enable-gtk3 $args
|
|
27
|
+
make -j$(nproc)
|
|
28
|
+
sudo make install
|
|
File without changes
|
|
@@ -10,7 +10,13 @@ cd deps
|
|
|
10
10
|
|
|
11
11
|
sudo apt-get install -y curl
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
haskell_args=""
|
|
14
|
+
if [ ! -z ${PREFIX} ]; then
|
|
15
|
+
haskell_args="-d $PREFIX"
|
|
16
|
+
export PATH="$PREFIX:$PATH"
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
curl -sSL https://get.haskellstack.org/ | sh -s - -f $haskell_args
|
|
14
20
|
|
|
15
21
|
git clone $(python3 ${src_path}/_tools.py --tool sv2v --field git-url) sv2v
|
|
16
22
|
cd sv2v
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
# Get directory of script
|
|
6
|
+
src_path=$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)/..
|
|
7
|
+
|
|
8
|
+
sudo apt-get install -y build-essential gperf libgtk-3-dev \
|
|
9
|
+
libbz2-dev libjudy-dev liblzma-dev tcl-dev tk-dev
|
|
10
|
+
|
|
11
|
+
mkdir -p deps
|
|
12
|
+
cd deps
|
|
13
|
+
|
|
14
|
+
git clone $(python3 ${src_path}/_tools.py --tool gtkwave --field git-url) gtkwave
|
|
15
|
+
cd gtkwave
|
|
16
|
+
git checkout $(python3 ${src_path}/_tools.py --tool gtkwave --field git-commit)
|
|
17
|
+
|
|
18
|
+
args=
|
|
19
|
+
if [ ! -z ${PREFIX} ]; then
|
|
20
|
+
args=--prefix="$PREFIX"
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
cd gtkwave3-gtk3
|
|
24
|
+
|
|
25
|
+
./autogen.sh
|
|
26
|
+
./configure --enable-gtk3 $args
|
|
27
|
+
make -j$(nproc)
|
|
28
|
+
sudo make install
|
|
File without changes
|
|
@@ -14,12 +14,18 @@ sudo apt-get install -y build-essential cmake git pkg-config \
|
|
|
14
14
|
mkdir -p deps
|
|
15
15
|
cd deps
|
|
16
16
|
|
|
17
|
+
python3 -m venv .surelog --clear
|
|
18
|
+
. .surelog/bin/activate
|
|
19
|
+
python3 -m pip install --upgrade pip
|
|
20
|
+
python3 -m pip install cmake
|
|
21
|
+
python3 -m pip install orderedmultidict
|
|
22
|
+
|
|
17
23
|
git clone $(python3 ${src_path}/_tools.py --tool surelog --field git-url) surelog
|
|
18
24
|
cd surelog
|
|
19
25
|
git checkout $(python3 ${src_path}/_tools.py --tool surelog --field git-commit)
|
|
20
26
|
git submodule update --init --recursive
|
|
21
27
|
|
|
22
28
|
make -j$(nproc)
|
|
23
|
-
sudo make install
|
|
29
|
+
sudo -E PATH="$PATH" make install
|
|
24
30
|
|
|
25
31
|
cd -
|