siliconcompiler 0.33.2__py3-none-any.whl → 0.34.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/__init__.py +2 -0
- siliconcompiler/_metadata.py +1 -1
- siliconcompiler/apps/_common.py +1 -1
- siliconcompiler/apps/sc.py +1 -1
- siliconcompiler/apps/sc_issue.py +6 -4
- siliconcompiler/apps/sc_remote.py +3 -20
- siliconcompiler/apps/sc_show.py +2 -2
- siliconcompiler/apps/utils/replay.py +4 -4
- siliconcompiler/checklist.py +202 -1
- siliconcompiler/core.py +62 -293
- 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 +392 -0
- siliconcompiler/design.py +758 -0
- siliconcompiler/flowgraph.py +79 -13
- siliconcompiler/optimizer/vizier.py +2 -2
- siliconcompiler/package/__init__.py +383 -223
- siliconcompiler/package/git.py +75 -77
- siliconcompiler/package/github.py +70 -97
- siliconcompiler/package/https.py +77 -93
- siliconcompiler/packageschema.py +260 -0
- siliconcompiler/pdk.py +5 -5
- siliconcompiler/remote/client.py +33 -15
- siliconcompiler/remote/server.py +2 -2
- siliconcompiler/report/dashboard/cli/__init__.py +6 -6
- siliconcompiler/report/dashboard/cli/board.py +4 -4
- 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/__init__.py +3 -1382
- siliconcompiler/scheduler/docker.py +263 -0
- siliconcompiler/scheduler/run_node.py +10 -21
- siliconcompiler/scheduler/scheduler.py +311 -0
- siliconcompiler/scheduler/schedulernode.py +944 -0
- siliconcompiler/scheduler/send_messages.py +3 -3
- siliconcompiler/scheduler/slurm.py +149 -163
- siliconcompiler/scheduler/taskscheduler.py +45 -57
- siliconcompiler/schema/__init__.py +3 -3
- siliconcompiler/schema/baseschema.py +234 -11
- siliconcompiler/schema/editableschema.py +4 -0
- siliconcompiler/schema/journal.py +210 -0
- siliconcompiler/schema/namedschema.py +55 -2
- siliconcompiler/schema/parameter.py +14 -1
- siliconcompiler/schema/parametervalue.py +1 -34
- siliconcompiler/schema/schema_cfg.py +210 -349
- siliconcompiler/tool.py +412 -148
- siliconcompiler/tools/__init__.py +2 -0
- siliconcompiler/tools/builtin/_common.py +5 -5
- siliconcompiler/tools/builtin/concatenate.py +7 -7
- 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 +8 -9
- 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 +32 -25
- 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 +82 -0
- 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 +4 -24
- siliconcompiler/utils/flowgraph.py +29 -28
- siliconcompiler/utils/issue.py +23 -29
- siliconcompiler/utils/logging.py +37 -7
- siliconcompiler/utils/showtools.py +6 -1
- {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/METADATA +16 -25
- {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/RECORD +98 -91
- siliconcompiler/scheduler/docker_runner.py +0 -254
- siliconcompiler/schema/journalingschema.py +0 -242
- 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.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/WHEEL +0 -0
- {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/entry_points.txt +0 -0
- {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/licenses/LICENSE +0 -0
- {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/top_level.txt +0 -0
siliconcompiler/report/report.py
CHANGED
|
@@ -61,7 +61,7 @@ def get_flowgraph_nodes(chip, step, index):
|
|
|
61
61
|
value = chip.get('record', key, step=step, index=index)
|
|
62
62
|
if value is not None:
|
|
63
63
|
if key == 'inputnode':
|
|
64
|
-
value = ", ".join([f'{step}{index}' for step, index in value])
|
|
64
|
+
value = ", ".join([f'{step}/{index}' for step, index in value])
|
|
65
65
|
if key == 'pythonpackage':
|
|
66
66
|
value = ", ".join(value)
|
|
67
67
|
nodes[key] = str(value)
|
|
@@ -181,7 +181,7 @@ def make_manifest(chip):
|
|
|
181
181
|
>>> make_manifest(chip)
|
|
182
182
|
Returns tree/json of manifest.
|
|
183
183
|
'''
|
|
184
|
-
manifest = chip.
|
|
184
|
+
manifest = chip.getdict()
|
|
185
185
|
modified_manifest = {}
|
|
186
186
|
make_manifest_helper(manifest, modified_manifest)
|
|
187
187
|
return modified_manifest
|
|
@@ -200,7 +200,7 @@ def get_flowgraph_path(chip):
|
|
|
200
200
|
'''
|
|
201
201
|
flow = chip.get('option', 'flow')
|
|
202
202
|
runtime = RuntimeFlowgraph(
|
|
203
|
-
chip.
|
|
203
|
+
chip.get("flowgraph", flow, field='schema'),
|
|
204
204
|
from_steps=chip.get('option', 'from'),
|
|
205
205
|
to_steps=chip.get('option', 'to'),
|
|
206
206
|
prune_nodes=chip.get('option', 'prune'))
|
|
@@ -363,7 +363,7 @@ def get_chart_selection_options(chips):
|
|
|
363
363
|
chip = chip_and_chip_name['chip_object']
|
|
364
364
|
nodes_list, _, _, _, chip_metrics, _ = \
|
|
365
365
|
utils._collect_data(chip, format_as_string=False)
|
|
366
|
-
nodes.update(set([f'{step}{index}' for step, index in nodes_list]))
|
|
366
|
+
nodes.update(set([f'{step}/{index}' for step, index in nodes_list]))
|
|
367
367
|
metrics.update(set(chip_metrics))
|
|
368
368
|
return nodes, metrics
|
|
369
369
|
|
|
@@ -44,7 +44,7 @@ def _show_summary_table(chip, flow, flowgraph_nodes, show_all_indices):
|
|
|
44
44
|
|
|
45
45
|
# trim labels to column width
|
|
46
46
|
column_labels = []
|
|
47
|
-
labels = [f'{step}{index}' for step, index in nodes_to_show]
|
|
47
|
+
labels = [f'{step}/{index}' for step, index in nodes_to_show]
|
|
48
48
|
if labels:
|
|
49
49
|
column_width = min([column_width, max([len(label) for label in labels])])
|
|
50
50
|
|
|
@@ -85,7 +85,7 @@ def _show_summary_table(chip, flow, flowgraph_nodes, show_all_indices):
|
|
|
85
85
|
info_list.append(f"partname : {fpga_partname}")
|
|
86
86
|
|
|
87
87
|
libraries = set()
|
|
88
|
-
for val, step, index in chip.
|
|
88
|
+
for val, step, index in chip.get('asic', 'logiclib', field=None).getvalues():
|
|
89
89
|
if not step or (step, index) in flowgraph_nodes:
|
|
90
90
|
libraries.update(val)
|
|
91
91
|
if libraries:
|
siliconcompiler/report/utils.py
CHANGED
|
@@ -6,7 +6,7 @@ from siliconcompiler.flowgraph import RuntimeFlowgraph
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def _find_summary_image(chip, ext='png'):
|
|
9
|
-
for nodes in reversed(chip.
|
|
9
|
+
for nodes in reversed(chip.get(
|
|
10
10
|
"flowgraph", chip.get('option', 'flow'), field="schema").get_execution_order()):
|
|
11
11
|
for step, index in nodes:
|
|
12
12
|
layout_img = chip.find_result(ext, step=step, index=index)
|
|
@@ -17,7 +17,7 @@ def _find_summary_image(chip, ext='png'):
|
|
|
17
17
|
|
|
18
18
|
def _find_summary_metrics(chip, metrics_map):
|
|
19
19
|
metrics = {}
|
|
20
|
-
for nodes in reversed(chip.
|
|
20
|
+
for nodes in reversed(chip.get(
|
|
21
21
|
"flowgraph", chip.get('option', 'flow'), field="schema").get_execution_order()):
|
|
22
22
|
for step, index in nodes:
|
|
23
23
|
for name, metric_info in metrics_map.items():
|
|
@@ -45,7 +45,7 @@ def _collect_data(chip, flow=None, flowgraph_nodes=None, format_as_string=True):
|
|
|
45
45
|
|
|
46
46
|
if not flowgraph_nodes:
|
|
47
47
|
runtime = RuntimeFlowgraph(
|
|
48
|
-
chip.
|
|
48
|
+
chip.get("flowgraph", flow, field='schema'),
|
|
49
49
|
from_steps=chip.get('option', 'from'),
|
|
50
50
|
to_steps=chip.get('option', 'to'),
|
|
51
51
|
prune_nodes=chip.get('option', 'prune'))
|
|
@@ -70,7 +70,7 @@ def _collect_data(chip, flow=None, flowgraph_nodes=None, format_as_string=True):
|
|
|
70
70
|
reports = {}
|
|
71
71
|
|
|
72
72
|
# Build ordered list of nodes in flowgraph
|
|
73
|
-
for level_nodes in chip.
|
|
73
|
+
for level_nodes in chip.get("flowgraph", flow, field="schema").get_execution_order():
|
|
74
74
|
nodes.extend(sorted(level_nodes))
|
|
75
75
|
nodes = [node for node in nodes if node in flowgraph_nodes]
|
|
76
76
|
for (step, index) in nodes:
|
|
@@ -147,7 +147,7 @@ def _get_flowgraph_path(chip, flow, nodes_to_execute, only_include_successful=Fa
|
|
|
147
147
|
to_search = []
|
|
148
148
|
# Start search with any successful leaf nodes.
|
|
149
149
|
flowgraph_steps = list(map(lambda node: node[0], nodes_to_execute))
|
|
150
|
-
runtime = RuntimeFlowgraph(chip.
|
|
150
|
+
runtime = RuntimeFlowgraph(chip.get("flowgraph", flow, field='schema'),
|
|
151
151
|
from_steps=flowgraph_steps,
|
|
152
152
|
to_steps=flowgraph_steps)
|
|
153
153
|
end_nodes = runtime.get_exit_nodes()
|