siliconcompiler 0.34.0__py3-none-any.whl → 0.34.2__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/__init__.py +14 -2
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/apps/_common.py +1 -1
- siliconcompiler/apps/sc.py +1 -1
- siliconcompiler/apps/sc_issue.py +1 -1
- siliconcompiler/apps/sc_remote.py +3 -3
- siliconcompiler/apps/sc_show.py +3 -3
- siliconcompiler/apps/utils/replay.py +4 -4
- siliconcompiler/checklist.py +203 -2
- siliconcompiler/constraints/__init__.py +17 -0
- siliconcompiler/constraints/asic_component.py +378 -0
- siliconcompiler/constraints/asic_floorplan.py +449 -0
- siliconcompiler/constraints/asic_pins.py +489 -0
- siliconcompiler/constraints/asic_timing.py +517 -0
- siliconcompiler/core.py +31 -249
- siliconcompiler/data/templates/email/general.j2 +3 -3
- siliconcompiler/data/templates/email/summary.j2 +1 -1
- siliconcompiler/data/templates/issue/README.txt +1 -1
- siliconcompiler/data/templates/report/sc_report.j2 +7 -7
- siliconcompiler/dependencyschema.py +10 -174
- siliconcompiler/design.py +325 -114
- siliconcompiler/flowgraph.py +63 -15
- siliconcompiler/library.py +133 -0
- siliconcompiler/metric.py +94 -72
- siliconcompiler/metrics/__init__.py +7 -0
- siliconcompiler/metrics/asic.py +245 -0
- siliconcompiler/metrics/fpga.py +220 -0
- siliconcompiler/optimizer/vizier.py +2 -2
- siliconcompiler/package/__init__.py +138 -35
- siliconcompiler/package/github.py +6 -10
- siliconcompiler/packageschema.py +256 -12
- siliconcompiler/pathschema.py +226 -0
- siliconcompiler/pdk.py +5 -5
- siliconcompiler/project.py +459 -0
- siliconcompiler/remote/client.py +18 -12
- siliconcompiler/remote/server.py +2 -2
- siliconcompiler/report/dashboard/cli/__init__.py +6 -6
- siliconcompiler/report/dashboard/cli/board.py +3 -3
- siliconcompiler/report/dashboard/web/components/__init__.py +5 -5
- siliconcompiler/report/dashboard/web/components/flowgraph.py +4 -4
- siliconcompiler/report/dashboard/web/components/graph.py +2 -2
- siliconcompiler/report/dashboard/web/state.py +1 -1
- siliconcompiler/report/dashboard/web/utils/__init__.py +5 -5
- siliconcompiler/report/html_report.py +1 -1
- siliconcompiler/report/report.py +4 -4
- siliconcompiler/report/summary_table.py +2 -2
- siliconcompiler/report/utils.py +5 -5
- siliconcompiler/scheduler/docker.py +4 -10
- siliconcompiler/scheduler/run_node.py +4 -8
- siliconcompiler/scheduler/scheduler.py +18 -24
- siliconcompiler/scheduler/schedulernode.py +161 -143
- siliconcompiler/scheduler/send_messages.py +3 -3
- siliconcompiler/scheduler/slurm.py +5 -3
- siliconcompiler/scheduler/taskscheduler.py +10 -8
- siliconcompiler/schema/__init__.py +0 -2
- siliconcompiler/schema/baseschema.py +148 -26
- siliconcompiler/schema/editableschema.py +14 -6
- siliconcompiler/schema/journal.py +23 -15
- siliconcompiler/schema/namedschema.py +30 -4
- siliconcompiler/schema/parameter.py +34 -19
- siliconcompiler/schema/parametertype.py +2 -0
- siliconcompiler/schema/parametervalue.py +198 -15
- siliconcompiler/schema/schema_cfg.py +18 -14
- siliconcompiler/schema_obj.py +5 -3
- siliconcompiler/tool.py +591 -179
- siliconcompiler/tools/__init__.py +2 -0
- siliconcompiler/tools/builtin/_common.py +5 -5
- siliconcompiler/tools/builtin/concatenate.py +5 -5
- siliconcompiler/tools/builtin/minimum.py +4 -4
- siliconcompiler/tools/builtin/mux.py +4 -4
- siliconcompiler/tools/builtin/nop.py +4 -4
- siliconcompiler/tools/builtin/verify.py +7 -7
- siliconcompiler/tools/execute/exec_input.py +1 -1
- siliconcompiler/tools/genfasm/genfasm.py +1 -6
- siliconcompiler/tools/openroad/_apr.py +5 -1
- siliconcompiler/tools/openroad/antenna_repair.py +1 -1
- siliconcompiler/tools/openroad/macro_placement.py +1 -1
- siliconcompiler/tools/openroad/power_grid.py +1 -1
- siliconcompiler/tools/openroad/scripts/common/procs.tcl +5 -0
- siliconcompiler/tools/opensta/timing.py +26 -3
- siliconcompiler/tools/slang/__init__.py +2 -2
- siliconcompiler/tools/surfer/__init__.py +0 -0
- siliconcompiler/tools/surfer/show.py +53 -0
- siliconcompiler/tools/surfer/surfer.py +30 -0
- siliconcompiler/tools/vpr/route.py +27 -14
- siliconcompiler/tools/vpr/vpr.py +23 -6
- siliconcompiler/tools/yosys/__init__.py +1 -1
- siliconcompiler/tools/yosys/scripts/procs.tcl +143 -0
- siliconcompiler/tools/yosys/{sc_synth_asic.tcl → scripts/sc_synth_asic.tcl} +4 -0
- siliconcompiler/tools/yosys/{sc_synth_fpga.tcl → scripts/sc_synth_fpga.tcl} +24 -77
- siliconcompiler/tools/yosys/syn_fpga.py +14 -0
- siliconcompiler/toolscripts/_tools.json +9 -13
- siliconcompiler/toolscripts/rhel9/install-vpr.sh +0 -2
- siliconcompiler/toolscripts/ubuntu22/install-surfer.sh +33 -0
- siliconcompiler/toolscripts/ubuntu24/install-surfer.sh +33 -0
- siliconcompiler/utils/__init__.py +2 -1
- siliconcompiler/utils/flowgraph.py +24 -23
- siliconcompiler/utils/issue.py +23 -29
- siliconcompiler/utils/logging.py +35 -6
- siliconcompiler/utils/showtools.py +6 -1
- {siliconcompiler-0.34.0.dist-info → siliconcompiler-0.34.2.dist-info}/METADATA +15 -25
- {siliconcompiler-0.34.0.dist-info → siliconcompiler-0.34.2.dist-info}/RECORD +109 -97
- siliconcompiler/schema/packageschema.py +0 -101
- siliconcompiler/tools/yosys/procs.tcl +0 -71
- siliconcompiler/toolscripts/rhel9/install-yosys-parmys.sh +0 -68
- siliconcompiler/toolscripts/ubuntu22/install-yosys-parmys.sh +0 -68
- siliconcompiler/toolscripts/ubuntu24/install-yosys-parmys.sh +0 -68
- /siliconcompiler/tools/yosys/{sc_lec.tcl → scripts/sc_lec.tcl} +0 -0
- /siliconcompiler/tools/yosys/{sc_screenshot.tcl → scripts/sc_screenshot.tcl} +0 -0
- /siliconcompiler/tools/yosys/{syn_strategies.tcl → scripts/syn_strategies.tcl} +0 -0
- {siliconcompiler-0.34.0.dist-info → siliconcompiler-0.34.2.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.34.0.dist-info → siliconcompiler-0.34.2.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.34.0.dist-info → siliconcompiler-0.34.2.dist-info}/licenses/LICENSE +0 -0
- {siliconcompiler-0.34.0.dist-info → siliconcompiler-0.34.2.dist-info}/top_level.txt +0 -0
siliconcompiler/utils/issue.py
CHANGED
|
@@ -41,7 +41,7 @@ def generate_testcase(chip,
|
|
|
41
41
|
sc_type = chip.get(*key, field='type')
|
|
42
42
|
if 'file' not in sc_type and 'dir' not in sc_type:
|
|
43
43
|
continue
|
|
44
|
-
for _, key_step, key_index in chip.
|
|
44
|
+
for _, key_step, key_index in chip.get(*key, field=None).getvalues():
|
|
45
45
|
chip.hash_files(*key,
|
|
46
46
|
check=False,
|
|
47
47
|
allow_cache=True,
|
|
@@ -145,7 +145,6 @@ def generate_testcase(chip,
|
|
|
145
145
|
chip.collect(directory=collection_dir, verbose=verbose_collect)
|
|
146
146
|
|
|
147
147
|
# Set relative path to generate runnable files
|
|
148
|
-
chip._relative_path = new_work_dir
|
|
149
148
|
chip.cwd = issue_dir.name
|
|
150
149
|
|
|
151
150
|
current_work_dir = os.getcwd()
|
|
@@ -153,33 +152,28 @@ def generate_testcase(chip,
|
|
|
153
152
|
|
|
154
153
|
flow = chip.get('option', 'flow')
|
|
155
154
|
|
|
156
|
-
task_class = chip.get("tool", tool, field="schema")
|
|
155
|
+
task_class = chip.get("tool", tool, "task", task, field="schema")
|
|
157
156
|
|
|
158
|
-
task_class.
|
|
157
|
+
with task_class.runtime(chip, step=step, index=index, relpath=new_work_dir) as task:
|
|
158
|
+
# Rewrite replay.sh
|
|
159
|
+
prev_quiet = chip.get('option', 'quiet', step=step, index=index)
|
|
160
|
+
chip.set('option', 'quiet', True, step=step, index=index)
|
|
161
|
+
try:
|
|
162
|
+
# Rerun pre_process
|
|
163
|
+
task.pre_process()
|
|
164
|
+
except Exception:
|
|
165
|
+
pass
|
|
166
|
+
chip.set('option', 'quiet', prev_quiet, step=step, index=index)
|
|
159
167
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
except Exception:
|
|
167
|
-
pass
|
|
168
|
-
chip.set('option', 'quiet', prev_quiet, step=step, index=index)
|
|
169
|
-
|
|
170
|
-
is_python_tool = task_class.get_exe() is None
|
|
171
|
-
|
|
172
|
-
if not is_python_tool:
|
|
173
|
-
task_class.generate_replay_script(
|
|
174
|
-
f'{chip.getworkdir(step=step, index=index)}/replay.sh',
|
|
175
|
-
'.',
|
|
176
|
-
include_path=False)
|
|
177
|
-
|
|
178
|
-
# Rewrite tool manifest
|
|
179
|
-
task_class.write_task_manifest('.')
|
|
168
|
+
is_python_tool = task.get_exe() is None
|
|
169
|
+
if not is_python_tool:
|
|
170
|
+
task.generate_replay_script(
|
|
171
|
+
f'{chip.getworkdir(step=step, index=index)}/replay.sh',
|
|
172
|
+
'.',
|
|
173
|
+
include_path=False)
|
|
180
174
|
|
|
181
|
-
|
|
182
|
-
|
|
175
|
+
# Rewrite tool manifest
|
|
176
|
+
task.write_task_manifest('.')
|
|
183
177
|
|
|
184
178
|
# Restore current directory
|
|
185
179
|
chip.cwd = original_cwd
|
|
@@ -234,7 +228,7 @@ def generate_testcase(chip,
|
|
|
234
228
|
design = chip.design
|
|
235
229
|
job = chip.get('option', 'jobname')
|
|
236
230
|
file_time = datetime.fromtimestamp(issue_time).strftime('%Y%m%d-%H%M%S')
|
|
237
|
-
archive_name = f'sc_issue_{design}_{job}_{step}{index}_{file_time}.tar.gz'
|
|
231
|
+
archive_name = f'sc_issue_{design}_{job}_{step}_{index}_{file_time}.tar.gz'
|
|
238
232
|
|
|
239
233
|
# Make support files
|
|
240
234
|
issue_path = os.path.join(issue_dir.name, 'issue.json')
|
|
@@ -254,7 +248,7 @@ def generate_testcase(chip,
|
|
|
254
248
|
with open(run_path, 'w') as f:
|
|
255
249
|
replay_dir = os.path.relpath(chip.getworkdir(step=step, index=index),
|
|
256
250
|
chip.cwd)
|
|
257
|
-
issue_title = f'{chip.design} for {step}{index} using {tool}/{task}'
|
|
251
|
+
issue_title = f'{chip.design} for {step}/{index} using {tool}/{task}'
|
|
258
252
|
f.write(get_file_template('issue/run.sh').render(
|
|
259
253
|
title=issue_title,
|
|
260
254
|
exec_dir=replay_dir
|
|
@@ -288,7 +282,7 @@ def generate_testcase(chip,
|
|
|
288
282
|
|
|
289
283
|
issue_dir.cleanup()
|
|
290
284
|
|
|
291
|
-
chip.logger.info(f'Generated testcase for {step}{index} in: '
|
|
285
|
+
chip.logger.info(f'Generated testcase for {step}/{index} in: '
|
|
292
286
|
f'{full_archive_path}')
|
|
293
287
|
|
|
294
288
|
# Restore original schema
|
siliconcompiler/utils/logging.py
CHANGED
|
@@ -43,7 +43,7 @@ class SCInRunLoggerFormatter(logging.Formatter):
|
|
|
43
43
|
|
|
44
44
|
flow = chip.get('option', 'flow')
|
|
45
45
|
if flow:
|
|
46
|
-
nodes_to_run = list(chip.
|
|
46
|
+
nodes_to_run = list(chip.get("flowgraph", flow, field="schema").get_nodes())
|
|
47
47
|
else:
|
|
48
48
|
nodes_to_run = []
|
|
49
49
|
|
|
@@ -108,14 +108,43 @@ class SCColorLoggerFormatter(logging.Formatter):
|
|
|
108
108
|
return log_fmt.format(record)
|
|
109
109
|
|
|
110
110
|
@staticmethod
|
|
111
|
-
def supports_color(
|
|
112
|
-
if type(handler) is not logging.StreamHandler:
|
|
113
|
-
return False
|
|
114
|
-
|
|
111
|
+
def supports_color(stream):
|
|
115
112
|
supported_platform = sys.platform != 'win32'
|
|
116
113
|
try:
|
|
117
|
-
is_a_tty = hasattr(
|
|
114
|
+
is_a_tty = hasattr(stream, 'isatty') and stream.isatty()
|
|
118
115
|
except: # noqa E722
|
|
119
116
|
is_a_tty = False
|
|
120
117
|
|
|
121
118
|
return supported_platform and is_a_tty
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def get_console_formatter(chip, in_run, step, index):
|
|
122
|
+
if not hasattr(chip, "schema"):
|
|
123
|
+
return SCLoggerFormatter()
|
|
124
|
+
|
|
125
|
+
loglevel = chip.schema.get('option', 'loglevel',
|
|
126
|
+
step=step, index=index)
|
|
127
|
+
|
|
128
|
+
if loglevel == 'quiet':
|
|
129
|
+
base_format = SCBlankLoggerFormatter()
|
|
130
|
+
elif in_run:
|
|
131
|
+
if loglevel == 'debug':
|
|
132
|
+
base_format = SCDebugInRunLoggerFormatter(
|
|
133
|
+
chip,
|
|
134
|
+
chip.get('option', 'jobname'),
|
|
135
|
+
step, index)
|
|
136
|
+
else:
|
|
137
|
+
base_format = SCInRunLoggerFormatter(
|
|
138
|
+
chip,
|
|
139
|
+
chip.get('option', 'jobname'),
|
|
140
|
+
step, index)
|
|
141
|
+
else:
|
|
142
|
+
if loglevel == 'debug':
|
|
143
|
+
base_format = SCDebugLoggerFormatter()
|
|
144
|
+
else:
|
|
145
|
+
base_format = SCLoggerFormatter()
|
|
146
|
+
|
|
147
|
+
support_color = SCColorLoggerFormatter.supports_color(sys.stdout)
|
|
148
|
+
if support_color:
|
|
149
|
+
return SCColorLoggerFormatter(base_format)
|
|
150
|
+
return base_format
|
|
@@ -6,8 +6,10 @@ from siliconcompiler.tools.vpr import show as vpr_show
|
|
|
6
6
|
from siliconcompiler.tools.vpr import screenshot as vpr_screenshot
|
|
7
7
|
from siliconcompiler.tools.yosys import screenshot as yosys_screenshot
|
|
8
8
|
from siliconcompiler.tools.gtkwave import show as gtkwave_show
|
|
9
|
+
from siliconcompiler.tools.surfer import show as surfer_show
|
|
9
10
|
from siliconcompiler.tools.graphviz import show as graphviz_show
|
|
10
11
|
from siliconcompiler.tools.graphviz import screenshot as graphviz_screenshot
|
|
12
|
+
from shutil import which
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
def setup(chip):
|
|
@@ -33,7 +35,10 @@ def setup(chip):
|
|
|
33
35
|
chip.register_showtool('v', yosys_screenshot)
|
|
34
36
|
chip.register_showtool('vg', yosys_screenshot)
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
if which('surfer') is not None:
|
|
39
|
+
chip.register_showtool('vcd', surfer_show)
|
|
40
|
+
else:
|
|
41
|
+
chip.register_showtool('vcd', gtkwave_show)
|
|
37
42
|
|
|
38
43
|
chip.register_showtool('dot', graphviz_show)
|
|
39
44
|
chip.register_showtool('dot', graphviz_screenshot)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: siliconcompiler
|
|
3
|
-
Version: 0.34.
|
|
3
|
+
Version: 0.34.2
|
|
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
|
|
@@ -11,7 +11,6 @@ Project-URL: Issues, https://github.com/siliconcompiler/siliconcompiler/issues
|
|
|
11
11
|
Project-URL: Discussion, https://github.com/siliconcompiler/siliconcompiler/discussions
|
|
12
12
|
Classifier: Environment :: Console
|
|
13
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -22,21 +21,19 @@ Classifier: Operating System :: MacOS
|
|
|
22
21
|
Classifier: Operating System :: Microsoft :: Windows
|
|
23
22
|
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
24
23
|
Classifier: Topic :: Software Development :: Build Tools
|
|
25
|
-
Requires-Python: >=3.
|
|
24
|
+
Requires-Python: >=3.9
|
|
26
25
|
Description-Content-Type: text/markdown
|
|
27
26
|
License-File: LICENSE
|
|
28
|
-
Requires-Dist: aiohttp
|
|
29
|
-
Requires-Dist: aiohttp<3.13.0,>=3.10.11; python_version >= "3.9"
|
|
27
|
+
Requires-Dist: aiohttp<3.13.0,>=3.10.11
|
|
30
28
|
Requires-Dist: requests==2.32.4
|
|
31
29
|
Requires-Dist: PyYAML==6.0.2
|
|
32
30
|
Requires-Dist: pandas>=1.1.5
|
|
33
31
|
Requires-Dist: Jinja2>=2.11.3
|
|
34
|
-
Requires-Dist: graphviz==0.
|
|
32
|
+
Requires-Dist: graphviz==0.21
|
|
35
33
|
Requires-Dist: distro==1.9.0
|
|
36
34
|
Requires-Dist: packaging<25,>=21.3
|
|
37
35
|
Requires-Dist: psutil>=5.8.0
|
|
38
|
-
Requires-Dist: Pillow==
|
|
39
|
-
Requires-Dist: Pillow==11.2.1; python_version >= "3.9"
|
|
36
|
+
Requires-Dist: Pillow==11.3.0
|
|
40
37
|
Requires-Dist: GitPython==3.1.44
|
|
41
38
|
Requires-Dist: lambdapdk>=0.1.47
|
|
42
39
|
Requires-Dist: PyGithub==2.6.1
|
|
@@ -45,33 +42,26 @@ Requires-Dist: fasteners==0.19
|
|
|
45
42
|
Requires-Dist: fastjsonschema==2.21.1
|
|
46
43
|
Requires-Dist: docker==7.1.0
|
|
47
44
|
Requires-Dist: importlib_metadata; python_version < "3.10"
|
|
48
|
-
Requires-Dist: orjson==3.
|
|
49
|
-
Requires-Dist: orjson==3.10.18; python_version >= "3.9"
|
|
45
|
+
Requires-Dist: orjson==3.11.0
|
|
50
46
|
Requires-Dist: pyslang==8.1.0
|
|
51
|
-
Requires-Dist: streamlit==1.
|
|
52
|
-
Requires-Dist: streamlit==1.45.1; python_version >= "3.9" and python_full_version != "3.9.7"
|
|
47
|
+
Requires-Dist: streamlit==1.46.1; python_full_version != "3.9.7"
|
|
53
48
|
Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
|
|
54
49
|
Requires-Dist: streamlit-antd-components==0.3.2; python_full_version != "3.9.7"
|
|
55
50
|
Requires-Dist: streamlit_javascript==0.1.5; python_full_version != "3.9.7"
|
|
56
51
|
Requires-Dist: streamlit-autorefresh==1.0.1; python_full_version != "3.9.7"
|
|
57
|
-
Requires-Dist: rich
|
|
58
|
-
Requires-Dist: rich<15.0.0,>=14.0.0; python_version >= "3.9"
|
|
52
|
+
Requires-Dist: rich<15.0.0,>=14.0.0
|
|
59
53
|
Provides-Extra: test
|
|
60
|
-
Requires-Dist: pytest==8.
|
|
61
|
-
Requires-Dist: pytest==8.
|
|
62
|
-
Requires-Dist: pytest-xdist==3.6.1; python_version <= "3.8" and extra == "test"
|
|
63
|
-
Requires-Dist: pytest-xdist==3.7.0; python_version >= "3.9" and extra == "test"
|
|
54
|
+
Requires-Dist: pytest==8.4.1; extra == "test"
|
|
55
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "test"
|
|
64
56
|
Requires-Dist: pytest-timeout==2.4.0; extra == "test"
|
|
65
|
-
Requires-Dist: pytest-asyncio==
|
|
66
|
-
Requires-Dist: pytest-
|
|
67
|
-
Requires-Dist: pytest-cov==5.0.0; python_version <= "3.8" and extra == "test"
|
|
68
|
-
Requires-Dist: pytest-cov==6.1.1; python_version >= "3.9" and extra == "test"
|
|
57
|
+
Requires-Dist: pytest-asyncio==1.1.0; extra == "test"
|
|
58
|
+
Requires-Dist: pytest-cov==6.2.1; extra == "test"
|
|
69
59
|
Requires-Dist: responses==0.25.7; extra == "test"
|
|
70
60
|
Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
|
|
71
61
|
Requires-Dist: logiklib==0.1.0; extra == "test"
|
|
72
62
|
Provides-Extra: lint
|
|
73
|
-
Requires-Dist: flake8==7.
|
|
74
|
-
Requires-Dist: tclint==0.
|
|
63
|
+
Requires-Dist: flake8==7.3.0; extra == "lint"
|
|
64
|
+
Requires-Dist: tclint==0.6.0; extra == "lint"
|
|
75
65
|
Requires-Dist: codespell==2.4.1; extra == "lint"
|
|
76
66
|
Provides-Extra: docs
|
|
77
67
|
Requires-Dist: Sphinx==8.2.3; extra == "docs"
|
|
@@ -115,7 +105,7 @@ SiliconCompiler is a modular hardware build system ("make for silicon"). The pro
|
|
|
115
105
|
# Getting Started
|
|
116
106
|
|
|
117
107
|
SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and
|
|
118
|
-
Linux platforms. For working Python 3.
|
|
108
|
+
Linux platforms. For working Python 3.9-3.13 environment, just use pip.
|
|
119
109
|
|
|
120
110
|
```sh
|
|
121
111
|
python3 -m pip install --upgrade siliconcompiler
|