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.
Files changed (104) hide show
  1. siliconcompiler/__init__.py +2 -0
  2. siliconcompiler/_metadata.py +1 -1
  3. siliconcompiler/apps/_common.py +1 -1
  4. siliconcompiler/apps/sc.py +1 -1
  5. siliconcompiler/apps/sc_issue.py +6 -4
  6. siliconcompiler/apps/sc_remote.py +3 -20
  7. siliconcompiler/apps/sc_show.py +2 -2
  8. siliconcompiler/apps/utils/replay.py +4 -4
  9. siliconcompiler/checklist.py +202 -1
  10. siliconcompiler/core.py +62 -293
  11. siliconcompiler/data/templates/email/general.j2 +3 -3
  12. siliconcompiler/data/templates/email/summary.j2 +1 -1
  13. siliconcompiler/data/templates/issue/README.txt +1 -1
  14. siliconcompiler/data/templates/report/sc_report.j2 +7 -7
  15. siliconcompiler/dependencyschema.py +392 -0
  16. siliconcompiler/design.py +758 -0
  17. siliconcompiler/flowgraph.py +79 -13
  18. siliconcompiler/optimizer/vizier.py +2 -2
  19. siliconcompiler/package/__init__.py +383 -223
  20. siliconcompiler/package/git.py +75 -77
  21. siliconcompiler/package/github.py +70 -97
  22. siliconcompiler/package/https.py +77 -93
  23. siliconcompiler/packageschema.py +260 -0
  24. siliconcompiler/pdk.py +5 -5
  25. siliconcompiler/remote/client.py +33 -15
  26. siliconcompiler/remote/server.py +2 -2
  27. siliconcompiler/report/dashboard/cli/__init__.py +6 -6
  28. siliconcompiler/report/dashboard/cli/board.py +4 -4
  29. siliconcompiler/report/dashboard/web/components/__init__.py +5 -5
  30. siliconcompiler/report/dashboard/web/components/flowgraph.py +4 -4
  31. siliconcompiler/report/dashboard/web/components/graph.py +2 -2
  32. siliconcompiler/report/dashboard/web/state.py +1 -1
  33. siliconcompiler/report/dashboard/web/utils/__init__.py +5 -5
  34. siliconcompiler/report/html_report.py +1 -1
  35. siliconcompiler/report/report.py +4 -4
  36. siliconcompiler/report/summary_table.py +2 -2
  37. siliconcompiler/report/utils.py +5 -5
  38. siliconcompiler/scheduler/__init__.py +3 -1382
  39. siliconcompiler/scheduler/docker.py +263 -0
  40. siliconcompiler/scheduler/run_node.py +10 -21
  41. siliconcompiler/scheduler/scheduler.py +311 -0
  42. siliconcompiler/scheduler/schedulernode.py +944 -0
  43. siliconcompiler/scheduler/send_messages.py +3 -3
  44. siliconcompiler/scheduler/slurm.py +149 -163
  45. siliconcompiler/scheduler/taskscheduler.py +45 -57
  46. siliconcompiler/schema/__init__.py +3 -3
  47. siliconcompiler/schema/baseschema.py +234 -11
  48. siliconcompiler/schema/editableschema.py +4 -0
  49. siliconcompiler/schema/journal.py +210 -0
  50. siliconcompiler/schema/namedschema.py +55 -2
  51. siliconcompiler/schema/parameter.py +14 -1
  52. siliconcompiler/schema/parametervalue.py +1 -34
  53. siliconcompiler/schema/schema_cfg.py +210 -349
  54. siliconcompiler/tool.py +412 -148
  55. siliconcompiler/tools/__init__.py +2 -0
  56. siliconcompiler/tools/builtin/_common.py +5 -5
  57. siliconcompiler/tools/builtin/concatenate.py +7 -7
  58. siliconcompiler/tools/builtin/minimum.py +4 -4
  59. siliconcompiler/tools/builtin/mux.py +4 -4
  60. siliconcompiler/tools/builtin/nop.py +4 -4
  61. siliconcompiler/tools/builtin/verify.py +8 -9
  62. siliconcompiler/tools/execute/exec_input.py +1 -1
  63. siliconcompiler/tools/genfasm/genfasm.py +1 -6
  64. siliconcompiler/tools/openroad/_apr.py +5 -1
  65. siliconcompiler/tools/openroad/antenna_repair.py +1 -1
  66. siliconcompiler/tools/openroad/macro_placement.py +1 -1
  67. siliconcompiler/tools/openroad/power_grid.py +1 -1
  68. siliconcompiler/tools/openroad/scripts/common/procs.tcl +32 -25
  69. siliconcompiler/tools/opensta/timing.py +26 -3
  70. siliconcompiler/tools/slang/__init__.py +2 -2
  71. siliconcompiler/tools/surfer/__init__.py +0 -0
  72. siliconcompiler/tools/surfer/show.py +53 -0
  73. siliconcompiler/tools/surfer/surfer.py +30 -0
  74. siliconcompiler/tools/vpr/route.py +82 -0
  75. siliconcompiler/tools/vpr/vpr.py +23 -6
  76. siliconcompiler/tools/yosys/__init__.py +1 -1
  77. siliconcompiler/tools/yosys/scripts/procs.tcl +143 -0
  78. siliconcompiler/tools/yosys/{sc_synth_asic.tcl → scripts/sc_synth_asic.tcl} +4 -0
  79. siliconcompiler/tools/yosys/{sc_synth_fpga.tcl → scripts/sc_synth_fpga.tcl} +24 -77
  80. siliconcompiler/tools/yosys/syn_fpga.py +14 -0
  81. siliconcompiler/toolscripts/_tools.json +9 -13
  82. siliconcompiler/toolscripts/rhel9/install-vpr.sh +0 -2
  83. siliconcompiler/toolscripts/ubuntu22/install-surfer.sh +33 -0
  84. siliconcompiler/toolscripts/ubuntu24/install-surfer.sh +33 -0
  85. siliconcompiler/utils/__init__.py +4 -24
  86. siliconcompiler/utils/flowgraph.py +29 -28
  87. siliconcompiler/utils/issue.py +23 -29
  88. siliconcompiler/utils/logging.py +37 -7
  89. siliconcompiler/utils/showtools.py +6 -1
  90. {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/METADATA +16 -25
  91. {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/RECORD +98 -91
  92. siliconcompiler/scheduler/docker_runner.py +0 -254
  93. siliconcompiler/schema/journalingschema.py +0 -242
  94. siliconcompiler/tools/yosys/procs.tcl +0 -71
  95. siliconcompiler/toolscripts/rhel9/install-yosys-parmys.sh +0 -68
  96. siliconcompiler/toolscripts/ubuntu22/install-yosys-parmys.sh +0 -68
  97. siliconcompiler/toolscripts/ubuntu24/install-yosys-parmys.sh +0 -68
  98. /siliconcompiler/tools/yosys/{sc_lec.tcl → scripts/sc_lec.tcl} +0 -0
  99. /siliconcompiler/tools/yosys/{sc_screenshot.tcl → scripts/sc_screenshot.tcl} +0 -0
  100. /siliconcompiler/tools/yosys/{syn_strategies.tcl → scripts/syn_strategies.tcl} +0 -0
  101. {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/WHEEL +0 -0
  102. {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/entry_points.txt +0 -0
  103. {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/licenses/LICENSE +0 -0
  104. {siliconcompiler-0.33.2.dist-info → siliconcompiler-0.34.1.dist-info}/top_level.txt +0 -0
@@ -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.schema.getdict()
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.schema.get("flowgraph", flow, field='schema'),
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.schema.get('asic', 'logiclib', field=None).getvalues():
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:
@@ -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.schema.get(
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.schema.get(
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.schema.get("flowgraph", flow, field='schema'),
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.schema.get("flowgraph", flow, field="schema").get_execution_order():
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.schema.get("flowgraph", flow, field='schema'),
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()