siliconcompiler 0.33.1__py3-none-any.whl → 0.34.0__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 (59) hide show
  1. siliconcompiler/__init__.py +2 -0
  2. siliconcompiler/_metadata.py +1 -1
  3. siliconcompiler/apps/sc_issue.py +5 -3
  4. siliconcompiler/apps/sc_remote.py +0 -17
  5. siliconcompiler/apps/utils/replay.py +5 -5
  6. siliconcompiler/checklist.py +1 -1
  7. siliconcompiler/core.py +39 -48
  8. siliconcompiler/data/templates/replay/replay.sh.j2 +18 -1
  9. siliconcompiler/dependencyschema.py +392 -0
  10. siliconcompiler/design.py +664 -0
  11. siliconcompiler/flowgraph.py +32 -1
  12. siliconcompiler/metric.py +19 -0
  13. siliconcompiler/package/__init__.py +383 -223
  14. siliconcompiler/package/git.py +75 -77
  15. siliconcompiler/package/github.py +70 -97
  16. siliconcompiler/package/https.py +77 -93
  17. siliconcompiler/packageschema.py +260 -0
  18. siliconcompiler/pdk.py +2 -2
  19. siliconcompiler/record.py +57 -5
  20. siliconcompiler/remote/client.py +61 -13
  21. siliconcompiler/remote/server.py +109 -64
  22. siliconcompiler/report/dashboard/cli/board.py +1 -2
  23. siliconcompiler/scheduler/__init__.py +3 -1375
  24. siliconcompiler/scheduler/docker.py +268 -0
  25. siliconcompiler/scheduler/run_node.py +20 -19
  26. siliconcompiler/scheduler/scheduler.py +308 -0
  27. siliconcompiler/scheduler/schedulernode.py +934 -0
  28. siliconcompiler/scheduler/slurm.py +147 -163
  29. siliconcompiler/scheduler/taskscheduler.py +39 -52
  30. siliconcompiler/schema/__init__.py +3 -3
  31. siliconcompiler/schema/baseschema.py +256 -11
  32. siliconcompiler/schema/editableschema.py +4 -0
  33. siliconcompiler/schema/journal.py +210 -0
  34. siliconcompiler/schema/namedschema.py +31 -2
  35. siliconcompiler/schema/parameter.py +14 -1
  36. siliconcompiler/schema/parametervalue.py +1 -34
  37. siliconcompiler/schema/schema_cfg.py +211 -350
  38. siliconcompiler/tool.py +139 -37
  39. siliconcompiler/tools/_common/__init__.py +14 -11
  40. siliconcompiler/tools/builtin/concatenate.py +2 -2
  41. siliconcompiler/tools/builtin/verify.py +1 -2
  42. siliconcompiler/tools/openroad/scripts/common/procs.tcl +27 -25
  43. siliconcompiler/tools/slang/__init__.py +3 -2
  44. siliconcompiler/tools/vpr/route.py +69 -0
  45. siliconcompiler/tools/yosys/sc_synth_asic.tcl +0 -4
  46. siliconcompiler/toolscripts/_tools.json +13 -8
  47. siliconcompiler/toolscripts/ubuntu22/install-klayout.sh +4 -0
  48. siliconcompiler/toolscripts/ubuntu24/install-klayout.sh +4 -0
  49. siliconcompiler/utils/__init__.py +2 -23
  50. siliconcompiler/utils/flowgraph.py +5 -5
  51. siliconcompiler/utils/logging.py +2 -1
  52. {siliconcompiler-0.33.1.dist-info → siliconcompiler-0.34.0.dist-info}/METADATA +8 -6
  53. {siliconcompiler-0.33.1.dist-info → siliconcompiler-0.34.0.dist-info}/RECORD +57 -52
  54. {siliconcompiler-0.33.1.dist-info → siliconcompiler-0.34.0.dist-info}/WHEEL +1 -1
  55. siliconcompiler/scheduler/docker_runner.py +0 -254
  56. siliconcompiler/schema/journalingschema.py +0 -238
  57. {siliconcompiler-0.33.1.dist-info → siliconcompiler-0.34.0.dist-info}/entry_points.txt +0 -0
  58. {siliconcompiler-0.33.1.dist-info → siliconcompiler-0.34.0.dist-info}/licenses/LICENSE +0 -0
  59. {siliconcompiler-0.33.1.dist-info → siliconcompiler-0.34.0.dist-info}/top_level.txt +0 -0
@@ -329,29 +329,6 @@ def grep(chip, args, line):
329
329
  return line
330
330
 
331
331
 
332
- #######################################
333
- def get_env_vars(chip, step, index):
334
- '''
335
- Returns a dictionary of environmental variables from the manifest
336
- '''
337
-
338
- schema_env = {}
339
- for env in chip.getkeys('option', 'env'):
340
- schema_env[env] = chip.get('option', 'env', env)
341
-
342
- flow = chip.get('option', 'flow')
343
- if step is not None and index is not None and flow:
344
- tool = chip.get('flowgraph', flow, step, str(index), 'tool')
345
- task = chip.get('flowgraph', flow, step, str(index), 'task')
346
-
347
- if chip.valid('tool', tool, 'task', task, 'env'):
348
- for env in chip.getkeys('tool', tool, 'task', task, 'env'):
349
- schema_env[env] = chip.get('tool', tool, 'task', task, 'env', env,
350
- step=step, index=index)
351
-
352
- return schema_env
353
-
354
-
355
332
  def get_plugins(system, name=None):
356
333
  '''
357
334
  Search for python modules with a specific function
@@ -370,6 +347,8 @@ def get_plugins(system, name=None):
370
347
 
371
348
 
372
349
  def truncate_text(text, width):
350
+ width = max(width, 5)
351
+
373
352
  if len(text) <= width:
374
353
  return text
375
354
 
@@ -4,6 +4,7 @@ from siliconcompiler import NodeStatus
4
4
  from siliconcompiler.tools._common import input_file_node_name, get_tool_task
5
5
 
6
6
  from siliconcompiler.flowgraph import RuntimeFlowgraph
7
+ from siliconcompiler.scheduler.schedulernode import SchedulerNode
7
8
 
8
9
 
9
10
  ###########################################################################
@@ -87,7 +88,6 @@ def _check_flowgraph_io(chip, nodes=None):
87
88
 
88
89
 
89
90
  def _get_flowgraph_information(chip, flow, io=True):
90
- from siliconcompiler.scheduler import _setup_node
91
91
  from siliconcompiler.tools._common import input_provides, input_file_node_name
92
92
 
93
93
  # Save schema to avoid making permanent changes
@@ -97,12 +97,12 @@ def _get_flowgraph_information(chip, flow, io=True):
97
97
  # Setup nodes
98
98
  node_exec_order = chip.schema.get("flowgraph", flow, field="schema").get_execution_order()
99
99
  if io:
100
- # try:
100
+ prev_flow = chip.get("option", "flow")
101
+ chip.set("option", "flow", flow)
101
102
  for layer_nodes in node_exec_order:
102
103
  for step, index in layer_nodes:
103
- _setup_node(chip, step, index, flow=flow)
104
- # except: # noqa E722
105
- # io = False
104
+ SchedulerNode(chip, step, index).setup()
105
+ chip.set("option", "flow", prev_flow)
106
106
 
107
107
  node_rank = {}
108
108
  for rank, rank_nodes in enumerate(node_exec_order):
@@ -1,6 +1,5 @@
1
1
  import logging
2
2
  import sys
3
- from siliconcompiler.remote import client
4
3
  from siliconcompiler import utils
5
4
 
6
5
 
@@ -38,6 +37,8 @@ class SCInRunLoggerFormatter(logging.Formatter):
38
37
 
39
38
  @staticmethod
40
39
  def configure_format(fmt, chip, step, index):
40
+ from siliconcompiler.remote import client
41
+
41
42
  max_width = 20
42
43
 
43
44
  flow = chip.get('option', 'flow')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: siliconcompiler
3
- Version: 0.33.1
3
+ Version: 0.34.0
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
@@ -26,8 +26,8 @@ Requires-Python: >=3.8
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
28
  Requires-Dist: aiohttp==3.10.11; python_version <= "3.8"
29
- Requires-Dist: aiohttp<3.12.0,>=3.10.11; python_version >= "3.9"
30
- Requires-Dist: requests==2.32.3
29
+ Requires-Dist: aiohttp<3.13.0,>=3.10.11; python_version >= "3.9"
30
+ Requires-Dist: requests==2.32.4
31
31
  Requires-Dist: PyYAML==6.0.2
32
32
  Requires-Dist: pandas>=1.1.5
33
33
  Requires-Dist: Jinja2>=2.11.3
@@ -47,7 +47,7 @@ Requires-Dist: docker==7.1.0
47
47
  Requires-Dist: importlib_metadata; python_version < "3.10"
48
48
  Requires-Dist: orjson==3.10.15; python_version <= "3.8"
49
49
  Requires-Dist: orjson==3.10.18; python_version >= "3.9"
50
- Requires-Dist: pyslang==8.0.0
50
+ Requires-Dist: pyslang==8.1.0
51
51
  Requires-Dist: streamlit==1.40.1; python_version <= "3.8"
52
52
  Requires-Dist: streamlit==1.45.1; python_version >= "3.9" and python_full_version != "3.9.7"
53
53
  Requires-Dist: streamlit_agraph==0.0.45; python_full_version != "3.9.7"
@@ -57,8 +57,10 @@ Requires-Dist: streamlit-autorefresh==1.0.1; python_full_version != "3.9.7"
57
57
  Requires-Dist: rich==13.9.4; python_version <= "3.8"
58
58
  Requires-Dist: rich<15.0.0,>=14.0.0; python_version >= "3.9"
59
59
  Provides-Extra: test
60
- Requires-Dist: pytest==8.3.5; extra == "test"
61
- Requires-Dist: pytest-xdist==3.6.1; extra == "test"
60
+ Requires-Dist: pytest==8.3.5; python_version <= "3.8" and extra == "test"
61
+ Requires-Dist: pytest==8.4.0; python_version >= "3.9" and extra == "test"
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"
62
64
  Requires-Dist: pytest-timeout==2.4.0; extra == "test"
63
65
  Requires-Dist: pytest-asyncio==0.24.0; python_version <= "3.8" and extra == "test"
64
66
  Requires-Dist: pytest-asyncio==0.26.0; python_version >= "3.9" and extra == "test"
@@ -1,29 +1,32 @@
1
- siliconcompiler/__init__.py,sha256=uAtiKhQwppyIpnV6kB3Z2Aa7rWVlKMlumh6uN-NfX2I,1064
1
+ siliconcompiler/__init__.py,sha256=oOM5-EdmAXJgXbko4v2t7AwQpJyR7DQb_RZ5OMH7MaM,1132
2
2
  siliconcompiler/__main__.py,sha256=JwWkcvaNngqgMWprEQ1cFy2Wdq9GMvk46UGTHyh_qvM,170
3
3
  siliconcompiler/_common.py,sha256=wt6W8iAHpx7ezVPPYxe_QFUc3YM1TLdDdq89eYaFMBA,1578
4
- siliconcompiler/_metadata.py,sha256=3sK-zv89zFkZd5encEyp1HUtPofKJkoqriosF7GgEGc,1286
4
+ siliconcompiler/_metadata.py,sha256=oLdV_TkHvqguzb3pg9zkV-Hr3t395b0GSw7CgzYTwLo,1286
5
5
  siliconcompiler/asic.py,sha256=vNBYrXlOZ1RqGrMZz9MdJIYR3aq4V0VlVPT6VZ9knyM,4287
6
- siliconcompiler/checklist.py,sha256=NDGG64Zk_-W2pw7ybJY_c0LvjkXdVuu_SRqk1323s00,5835
7
- siliconcompiler/core.py,sha256=lOoQknHX4i3OuC55mT5DyzRxjhMHrAbErE3I9Axm7gg,139085
8
- siliconcompiler/flowgraph.py,sha256=SM3ZaDyhj7Ee4wSBe6sxHIVSvRTHLw8cf7_HPf0Clks,30011
6
+ siliconcompiler/checklist.py,sha256=cuqddypoNvyC7vGMffnK0K5g8uRxLRigBJd7JlT34C4,5830
7
+ siliconcompiler/core.py,sha256=ysWwFuyR-yvF3dq7jZMb8B6CQJMMU3ySn3sw2SBAco8,138621
8
+ siliconcompiler/dependencyschema.py,sha256=lwqjHCnXTW_-dNC5hqD6s6Q7Zu3vvWnWInhu7woQoQA,13639
9
+ siliconcompiler/design.py,sha256=4jTobQdeT6dTASnNOmMMEh_jptOAaUHVIj6t-ZEEmNw,21956
10
+ siliconcompiler/flowgraph.py,sha256=pDSknBX6kpB3EsiA8KgNTwp_WMpeZM39P-Ao3Tkuaak,31166
9
11
  siliconcompiler/fpga.py,sha256=pww3UMIo9bNXUFCSwNYQbAeDpmdC1xF70B53Oa6rrO4,3036
10
- siliconcompiler/metric.py,sha256=duTkODGAvfQ6wJabG8aF1R3tiKM3PQz45HOg7fCyiAc,19001
11
- siliconcompiler/pdk.py,sha256=prCcvzsUNQhtXaAxA68cGmC4JQm1-eEvk-Gv5B3EZzg,18660
12
- siliconcompiler/record.py,sha256=-dPYF2l1f7iORvYCz3_HMY0TK4u2xP74sclt3qKR95c,16200
12
+ siliconcompiler/metric.py,sha256=VdqbAJLTBFqHkzUgUbRK3HmosKB5dSOSVBdNktN_PiA,19628
13
+ siliconcompiler/packageschema.py,sha256=3Q-XD7Xzado3eXsR4qMwXmPpzdT7wele8Qjj68eXKBE,9280
14
+ siliconcompiler/pdk.py,sha256=DE3ek31jJ2jBhe1TbG5iiXNFeofahwKovSCfeXF-gbk,18650
15
+ siliconcompiler/record.py,sha256=sQsU1r3x-pm94g5NBdgABGuO2zrgMzjTAlHiEdv7bzQ,17758
13
16
  siliconcompiler/schema_obj.py,sha256=0sxp6dRgqY-tAImtbXCjd4PzIK8yAKyqqy-QK2FM8P0,4181
14
- siliconcompiler/tool.py,sha256=ns5ScaSByFUpTPvFbWzDwtfk2W6Fo-ky0cu3jXUV20Q,54295
17
+ siliconcompiler/tool.py,sha256=P_wci3ttP6iVg7hnLqJ_mUwXBn2W7DromPS0VdKrTFc,58845
15
18
  siliconcompiler/use.py,sha256=zu17ogJv0x2t_6J9yb_5tH1DjridVQj0MrIRxJRJVGQ,6202
16
19
  siliconcompiler/apps/__init__.py,sha256=6LuAljPtVB6g5yXl_58ODoB4Svb6UfKaDbX1e0aNZfE,668
17
20
  siliconcompiler/apps/_common.py,sha256=YK5zNHHnHeEWwcK27wXwsaApsrphUenh9uQzGf2zKvs,4425
18
21
  siliconcompiler/apps/sc.py,sha256=yF2IoNQkFiSmmWNKJKESOoIhy5fDIv2oqoEG5x7TP5s,3284
19
22
  siliconcompiler/apps/sc_dashboard.py,sha256=60ccCeC6RxPSt4uxej6bEJlpwViiEvRbZlqXtAItf98,3633
20
23
  siliconcompiler/apps/sc_install.py,sha256=4U9o9-GyZckKz-iHPQ6FTZuFY9TlK8kZh-lRiM2JtJI,9040
21
- siliconcompiler/apps/sc_issue.py,sha256=UWL_wCPMWVRjKFNzfUMbfiItxPhquqB9XoLB9B0v3kc,6410
22
- siliconcompiler/apps/sc_remote.py,sha256=xEGs9E7JTPYb-2TZpk4tCa8mHzQti7uhzbLex88zaSE,7467
24
+ siliconcompiler/apps/sc_issue.py,sha256=EFXWSV5jPzlrKFhPvvhQjP6IzWId9iK-PszJTefQfAA,6430
25
+ siliconcompiler/apps/sc_remote.py,sha256=i5frMalzkTkEpXAYFT9TppSOkU0bAySA_1_0FexBcUo,6721
23
26
  siliconcompiler/apps/sc_server.py,sha256=d3SCfKtNneIBiAk7Udc5SqXvSIoFSK40iHWcKuY7unk,894
24
27
  siliconcompiler/apps/sc_show.py,sha256=ewfe1dwBC4IFgX7knAIynLePyXtnWbPvzS_VLQIVDyI,4847
25
28
  siliconcompiler/apps/smake.py,sha256=jj69IuMLf4jblpVGeLT3GAvC-zDLHwPq16YPKtHosdA,7124
26
- siliconcompiler/apps/utils/replay.py,sha256=H4BpKfB1iu2bPsGRCrIXQ1T3mQRtSZFRSaf1a6-DpNM,6043
29
+ siliconcompiler/apps/utils/replay.py,sha256=WUN-FS329AIXAPhyxisrN4tB28yb3-6dk2ow2Go26Z4,5986
27
30
  siliconcompiler/apps/utils/summarize.py,sha256=CC6YwyEShiuZekU-D1Uk_m074aj8LviwotcgJMvZhuY,1250
28
31
  siliconcompiler/checklists/__init__.py,sha256=xnrgpMdgDLoYinDXVXRIAhX__BiBpBw16_gmg2dAwYo,247
29
32
  siliconcompiler/checklists/oh_tapeout.py,sha256=xBXAHOVNslFUlOfVTLLoPEJazczP8MTsa5EGo5GYQk0,1441
@@ -41,7 +44,7 @@ siliconcompiler/data/templates/issue/README.txt,sha256=2vFnTt8Npy73GPrWwjeJ53H9t
41
44
  siliconcompiler/data/templates/issue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
45
  siliconcompiler/data/templates/issue/run.sh,sha256=pwWNRym9P06jtns7_acKTu1zrTEjK4dA9EDV_eKdLds,147
43
46
  siliconcompiler/data/templates/replay/replay.py.j2,sha256=gTnoO6WVc-1QLYqbinTGLyG_eHgxPcVdo3nmJim3DlY,1626
44
- siliconcompiler/data/templates/replay/replay.sh.j2,sha256=QLdRyv_RdDHTDm4MTIx24GFGf36TLGNv3voms45wI5Y,2516
47
+ siliconcompiler/data/templates/replay/replay.sh.j2,sha256=93rNXQ4CHFZlUVToIFBPTKn8eA4QdCCJN03gbIZT1uA,2953
45
48
  siliconcompiler/data/templates/replay/requirements.txt,sha256=7MAUxEkDe1GiOoJ6XN1uS3KSnMucy4eDTCIuFQhkG4E,149
46
49
  siliconcompiler/data/templates/replay/setup.sh,sha256=i_6_gb7LROeJxon_G-o2rUbXPB5zrlixNJpq9wIEQuA,2748
47
50
  siliconcompiler/data/templates/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -72,15 +75,15 @@ siliconcompiler/fpgas/lattice_ice40.py,sha256=NsFgGvTnBVXpJeg3IiKKufsUwV7TYl-XU6
72
75
  siliconcompiler/libs/__init__.py,sha256=KXw1vU0KP83fg3rB8iKkpDhJZBLz_PWGZG65L3lAQ1Q,86
73
76
  siliconcompiler/optimizer/__init__.py,sha256=wdSuv3U7hoSdZn-TkaQtYehVdhS5F35Mb1McgaUw3hc,6599
74
77
  siliconcompiler/optimizer/vizier.py,sha256=BgQVuGI2xdi_m-2MH8MVgAgpYhx3y788UvL4mKebRPo,9025
75
- siliconcompiler/package/__init__.py,sha256=jf8VbIvkkU3BvZqe6QRG3ZdhzKiulqoeg2KyOjNOmHk,8742
76
- siliconcompiler/package/git.py,sha256=c40uXesG1x-CgH7yat5Cq6iCjoUHp_jE_VXeHGtzeOk,3258
77
- siliconcompiler/package/github.py,sha256=NCTMkV3WKNwVasciC30qGglysRMgqEWzC-0TXSSwmbU,3768
78
- siliconcompiler/package/https.py,sha256=_o0VpvImgBlW_egwgWXc0JC0T0ixFSV-Gu8dGGso4hM,3210
78
+ siliconcompiler/package/__init__.py,sha256=saEf9lVvoB7ergG9yant54tnlUqhv-a1Ck7tkpEUBXY,13970
79
+ siliconcompiler/package/git.py,sha256=H9Wvi7_RLD7RqfubRTQaf_mbhBBxuYhNFNv2fi1NxSQ,2761
80
+ siliconcompiler/package/github.py,sha256=4yAe7m3_NX43bfbLnbg-uvJ84VMdByMITjRDJBzQjUg,3011
81
+ siliconcompiler/package/https.py,sha256=Hmuz5vXxNoY7XUO6N8E3eapFOTX45uBmUSbzKyLoOvA,2760
79
82
  siliconcompiler/pdks/__init__.py,sha256=bWhtNR-Kq3fEyknon-x5vQX877b88g9EJXAHBMiDyGM,81
80
83
  siliconcompiler/remote/__init__.py,sha256=MoYnC1lkgbT5hN5Qi-0gTItaTWI2U1E8OuleffdTDSQ,977
81
- siliconcompiler/remote/client.py,sha256=oMoSU66F25vq3ziIHC9wQO-kQJGVTkabNnrPyJNRFb8,35110
84
+ siliconcompiler/remote/client.py,sha256=XJTZfn5UGNa7b608yrXbQ6Gf-87sBIY_ImMsGj8DqDQ,36633
82
85
  siliconcompiler/remote/schema.py,sha256=1tc52nc1wHAIqOdYEEfviCrjCq-7VBHwRPZ89ONTThc,4614
83
- siliconcompiler/remote/server.py,sha256=c0-AejWXpnecD6Rk9LJi7PasuJSh1BsVkAgotJvdZ54,19849
86
+ siliconcompiler/remote/server.py,sha256=TW5BR_VpwCoj-0kmJs4Wjrtd0mBjk84pzig9D8ngQCA,21691
84
87
  siliconcompiler/remote/server_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
88
  siliconcompiler/remote/server_schema/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
89
  siliconcompiler/remote/server_schema/requests/cancel_job.json,sha256=PtVDOpPbjmWosSQf_kvmK1Re95G7BQnOFMbbqCFZTBI,1470
@@ -104,7 +107,7 @@ siliconcompiler/report/summary_table.py,sha256=q2efLmDzyVsZsSvPunz5j8RZism6S4YoM
104
107
  siliconcompiler/report/utils.py,sha256=UaYFpObjoonJeE7WN2WCsU9vgJ-00YfofX6guv24H48,6756
105
108
  siliconcompiler/report/dashboard/__init__.py,sha256=QHYxqusd6nRWTsvDrTgWRRrMtDkfNzKIytMijSdTEEQ,1780
106
109
  siliconcompiler/report/dashboard/cli/__init__.py,sha256=Mw3NHWYPRbaGTctkNkJ5fcQQZv3UALZIAxuwGrYCi-Y,2709
107
- siliconcompiler/report/dashboard/cli/board.py,sha256=8AYzn-LgYX_SvC_QO37PICXw42idnge-F_Pg64L9eBU,29784
110
+ siliconcompiler/report/dashboard/cli/board.py,sha256=tAgq-v6JH5sN4Y9EW5UW96A0Yaqt_G4Y1ubvITkEUV0,29703
108
111
  siliconcompiler/report/dashboard/web/__init__.py,sha256=YvHrljqH97S2rhM9uH4w5-5M9HU2cuPY_SzULvsWrfc,5872
109
112
  siliconcompiler/report/dashboard/web/state.py,sha256=fipysGAnTtVza-k5ut9dLPFlGW_Rvqo5-S9uYMu2iSQ,5923
110
113
  siliconcompiler/report/dashboard/web/viewer.py,sha256=FLwy7FpX34EP3-G07YqBg1YgmAcDK-Bq7nFEIS4g2Ho,1111
@@ -118,26 +121,28 @@ siliconcompiler/report/dashboard/web/layouts/vertical_flowgraph_node_tab.py,sha2
118
121
  siliconcompiler/report/dashboard/web/layouts/vertical_flowgraph_sac_tabs.py,sha256=MmCgSHVgdmvfs1MHtpW8-CNMZkY0ePS_wyHqDZpzLT0,4110
119
122
  siliconcompiler/report/dashboard/web/utils/__init__.py,sha256=lj8Exd87YkOGNTcFkqQZTbS-rEy_RxutUZJbXsoN0lQ,2726
120
123
  siliconcompiler/report/dashboard/web/utils/file_utils.py,sha256=5MKAyf7TGXQIc3yxwbP1H6xi0NGwUfzu2j3LOv1Yei0,3333
121
- siliconcompiler/scheduler/__init__.py,sha256=EGSLJZE9CFqvh9fzH61qZfHPJgy7pKwHYXsa5ks0IEo,53166
122
- siliconcompiler/scheduler/docker_runner.py,sha256=qu2xJ0mww-CHvdIWfQOF8FijQieB59gJuR1pcTKxqDQ,8110
123
- siliconcompiler/scheduler/run_node.py,sha256=_CcHMMf7imXL3WhZXlpQ2V_FRMrTpfvKBHAX6X4B8Gc,5271
124
+ siliconcompiler/scheduler/__init__.py,sha256=JTgpHKwESxjT1eSXRIUPSNzfOWTFBQSnGH0_QXczxMg,101
125
+ siliconcompiler/scheduler/docker.py,sha256=Vj7QwcAAcn5h3R-0LMpTQu0ERCla13PeUtVtQHefYMk,9078
126
+ siliconcompiler/scheduler/run_node.py,sha256=ffdANZwOBrCD-mPAcI6j-wiZLGiQHF6yQ6qBTQp64i4,5220
127
+ siliconcompiler/scheduler/scheduler.py,sha256=Sy-7K_g-E7LncJr0-QToQGt07hgNdQ40G4D44_HSXe0,12141
128
+ siliconcompiler/scheduler/schedulernode.py,sha256=aW0_aMo8zPK__3pYObyYBGW8UkOMouMUscgU9xWd8iY,36946
124
129
  siliconcompiler/scheduler/send_messages.py,sha256=fN95bExXbhKuYjRQ7oNIdLAQrj8D-U6Us5FMUOeL6o0,6868
125
- siliconcompiler/scheduler/slurm.py,sha256=fh2WeV6yQphHdJuwLnQlMJQeqqx1ckrrwUJDaXmz2TQ,5734
126
- siliconcompiler/scheduler/taskscheduler.py,sha256=l5yYZHEwrth745m3PdIqOTt_eW53WwJhHFWzDcstWww,11973
130
+ siliconcompiler/scheduler/slurm.py,sha256=gjaVDtusSTv21Y39wzfalsCSjg-bDnjE4KYWHxD7LH0,6117
131
+ siliconcompiler/scheduler/taskscheduler.py,sha256=M4gRkL-AhWoq5J9XEFof5qkttGMQfLLEjsSm03HlYfA,11489
127
132
  siliconcompiler/scheduler/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
133
  siliconcompiler/scheduler/validation/email_credentials.json,sha256=hkJs0U2h2Bgm1zxeXvanIJ-prPhpn_aU6e3qwIs7qA0,1997
129
- siliconcompiler/schema/__init__.py,sha256=gnnYZ1_uHYaTINMEKsjOuedpY3RHUxmpQYtCR3LFkkY,600
130
- siliconcompiler/schema/baseschema.py,sha256=Hm2T3V4RBx-AcEnILmY6rnHfE0MXKZfcIjIvow8bij0,16728
134
+ siliconcompiler/schema/__init__.py,sha256=aBq3q2nVhzfkag9Pss4v2yDFzAiv80Qy9QvAA5_I13Y,573
135
+ siliconcompiler/schema/baseschema.py,sha256=maTrNukTPR003Xh1W8juNv6297XYXmkU5Y7OUBzHZq8,26535
131
136
  siliconcompiler/schema/cmdlineschema.py,sha256=NCZJN-qQU1KQAZGRXDQDoHttdOfrDcYN91re4xs0ahU,10512
132
- siliconcompiler/schema/editableschema.py,sha256=x9GeBgYhRNWXgzHk28JAcVM_IpnerT5FVr16ZpjS7bo,4518
133
- siliconcompiler/schema/journalingschema.py,sha256=Z_Wa24En51NO9EyZoJOVr7ZRvDCGXdk7WJUE2soCzNM,7440
134
- siliconcompiler/schema/namedschema.py,sha256=SpQTvvo2HV3IurlG35qh4KDnyzlenbfkulHhHLPNPd8,1032
137
+ siliconcompiler/schema/editableschema.py,sha256=b-Jt5WMWzplyGj1uf96svrQS1lPgYQCOO89r3bs-DMA,4678
138
+ siliconcompiler/schema/journal.py,sha256=7-XXc6A0z7dbNddLnAxPL6p4xSHCG_VvUPFBnqDAz8I,5780
139
+ siliconcompiler/schema/namedschema.py,sha256=bVhFqN-6Ng7525yvFESYqDkaB_aUpteAkI4QmChBWY0,1788
135
140
  siliconcompiler/schema/packageschema.py,sha256=S35mZVLrFEwHRtL9VIqPJiM1rALb2KncK4nQYiKtEG8,3808
136
- siliconcompiler/schema/parameter.py,sha256=Tp6VYu-b6RNfl33Hpt9Liy6lI4HxVivdkT3FIpjMtrg,27253
141
+ siliconcompiler/schema/parameter.py,sha256=7pdW7u40VlNgtE4UEPM06kF9Xa5KcdlR7yZengxqM4c,27802
137
142
  siliconcompiler/schema/parametertype.py,sha256=U7e_eXpIBcMhlgUgFUoYlwe-iGTO60dhs_jcCZT515M,11454
138
- siliconcompiler/schema/parametervalue.py,sha256=4oi54JrkcRhsPZliSgTlZBo97cP6qdyEFcM4CcAquyA,21210
143
+ siliconcompiler/schema/parametervalue.py,sha256=BJ3WRwpS-cuN8UIRUkYpBO3LSvE_oYCn5Ox-YquyOXY,20282
139
144
  siliconcompiler/schema/safeschema.py,sha256=H4nDo6D_A4xkTiUFuOSUz974HIBM2DUjyXz1_2xS4lw,1241
140
- siliconcompiler/schema/schema_cfg.py,sha256=d2AVDFRk0wfdG4CTPFKMSjhzFaQoYHfkoqem5sMLwAY,110719
145
+ siliconcompiler/schema/schema_cfg.py,sha256=l7kN-6nOxyu5Tf7PaSfXCiRnp-JWF7XGCsjHW6zTanI,104670
141
146
  siliconcompiler/schema/utils.py,sha256=YNtwoeueoL-56lBGHZW75uZNfsnLARvtwzUAv4PgjuM,1494
142
147
  siliconcompiler/schema/docs/__init__.py,sha256=1DRpzj1hl3pE0g4duKolKr1ahqzsnHE0Z14YazU_hKo,1924
143
148
  siliconcompiler/schema/docs/dynamicgen.py,sha256=ZZi2LMr9Z4iBbVFYQTY5H6oxleAqvVlMrfx1X12Kfzg,34299
@@ -153,7 +158,7 @@ siliconcompiler/targets/ihp130_demo.py,sha256=3nCxfM0-XpZWjhE1yQezZKBGJwtf6Ajpei
153
158
  siliconcompiler/targets/interposer_demo.py,sha256=f9vH4NXhU2GUkPm8NJbo_MrTRJIPEr1hzQlkQwBbvOU,2234
154
159
  siliconcompiler/targets/skywater130_demo.py,sha256=ct-kdVuZm2idynFm8eEZlL2S4-rfzWe16in8lOZPqrU,2689
155
160
  siliconcompiler/tools/__init__.py,sha256=dulw1XiU58QYllrHuQU3hZOKyO4Hm_AQ-brSC9ZD5OY,1929
156
- siliconcompiler/tools/_common/__init__.py,sha256=197QjhtkMf-j22hcmJTVKkvwpMSG8WwI_WUxqBXqgxk,15001
161
+ siliconcompiler/tools/_common/__init__.py,sha256=5IPgqbIrCZLusPC8Acf3friaTj-TS2kIT_G029bikK0,15108
157
162
  siliconcompiler/tools/_common/asic.py,sha256=Pt2-CeXOZtYASCQqvJKvh1Ti4Ubo3CbzSDuqfsikoVo,9089
158
163
  siliconcompiler/tools/_common/asic_clock.py,sha256=JSd4Ne0TxISqcZGICNLQCVfPNdUYviROQXIUGIQyRf8,4090
159
164
  siliconcompiler/tools/_common/sdc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -168,13 +173,13 @@ siliconcompiler/tools/bluespec/convert.py,sha256=ukbD1x3gQMxwr5m4m7Xoqw16rLOsHGV
168
173
  siliconcompiler/tools/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
174
  siliconcompiler/tools/builtin/_common.py,sha256=x1BF7W7NZ3gqdxC72iqrbsUzne3-IZvTy4Q9GWM_mCE,5568
170
175
  siliconcompiler/tools/builtin/builtin.py,sha256=SfkmFaqLE8U-sjimVBtIgR8INRenV0eW0buTTgeTDPI,831
171
- siliconcompiler/tools/builtin/concatenate.py,sha256=503Hviy2QI8KWBB_ZEIad_L5r0R5iA1V8X0sZRXwxQY,3628
176
+ siliconcompiler/tools/builtin/concatenate.py,sha256=61E3uNR5VVYQPhJvFh2pKiRgHZmHOVJvYbUd4DDhibA,3656
172
177
  siliconcompiler/tools/builtin/join.py,sha256=-RLK7PG15wfHpqtm-MAV4xzxNjEm1-ieKFvBJN8zBYM,554
173
178
  siliconcompiler/tools/builtin/maximum.py,sha256=L9pz8s_uZWHPt_IQavuEQXaTyrI3fI2f-aLqLlk-odI,1295
174
179
  siliconcompiler/tools/builtin/minimum.py,sha256=Q52h_Y-UWXMzEMDbiLofSkoT2IRK7XX7X4M16M7_WKA,1920
175
180
  siliconcompiler/tools/builtin/mux.py,sha256=VFnBD49UJ3yPLU4dsKFQC7hgGnE_CL2FbZbYTfm2EaM,2494
176
181
  siliconcompiler/tools/builtin/nop.py,sha256=PZtDYkSdYvnkFvV60QBV7VsE_Gr1FzJfpdmkktlzelA,1183
177
- siliconcompiler/tools/builtin/verify.py,sha256=7CPT_0z234G7jffiQJLjENkbHLV-vcEHgep_BvdYg_s,3000
182
+ siliconcompiler/tools/builtin/verify.py,sha256=utiyzWREY3D_S8VCTAIo1gsjBRqv_PdSQ9UwbgAbFJE,2927
178
183
  siliconcompiler/tools/chisel/SCDriver.scala,sha256=VIdk2HrCnq10kAOxD4-WpqTiAVY4anuaBYBRt8Ylur8,194
179
184
  siliconcompiler/tools/chisel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
185
  siliconcompiler/tools/chisel/build.sbt,sha256=VDVbnZrk4MtNW-qKPKa7fzhKifOox8VXUuZQBTq3pCc,877
@@ -279,7 +284,7 @@ siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl,sha256=ouuinoPvf
279
284
  siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl,sha256=59YVHb1V1v1bwnicRg-1CAY7yLjQN-OvyAzshlNCvlg,4910
280
285
  siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl,sha256=devgUdULAW_ZAyI_XrxsqwLlIHOUz2-xtGBIAbWFtLM,3672
281
286
  siliconcompiler/tools/openroad/scripts/common/debugging.tcl,sha256=i4oNtC0rQq3JaFf1-oKyr_jZQyu5ZF_--zskvG0hdKg,943
282
- siliconcompiler/tools/openroad/scripts/common/procs.tcl,sha256=21103Jatqur1ap3NkYQ-mXGslRJA__HueIhF4cZolsg,27288
287
+ siliconcompiler/tools/openroad/scripts/common/procs.tcl,sha256=H4jphgjXPPH51Jf4NOu0ZeBq-HrhD8H3UNw2J858N1Y,27448
283
288
  siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl,sha256=fwHH95_9RFf8n-dzsJvu3K9-HfgHIxNVWA3Ur2C_RFM,1781
284
289
  siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl,sha256=GeXZ8H3a8fg8o-4KyfZj2N4Db_P9XArZl2T4apfMSZI,778
285
290
  siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl,sha256=fsHSSGXkrqOKXjwH7U8XMLMnEPoZpavBVkl4qzLugOU,515
@@ -302,7 +307,7 @@ siliconcompiler/tools/opensta/scripts/sc_check_library.tcl,sha256=1VLKsPCkY8joYO
302
307
  siliconcompiler/tools/opensta/scripts/sc_procs.tcl,sha256=JHOn1pn9VqaZY_PrGMstEfe6YzlbSHgnV-8KZ8kZMHY,1490
303
308
  siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl,sha256=M5zfz7xGYmQYnNM-Y-T18SUXN38YkO4M1gLroQ0m58I,2608
304
309
  siliconcompiler/tools/opensta/scripts/sc_timing.tcl,sha256=desO9bD9ZyjbI9gEhJTeXnVqX5JJOU7Yyow8OR7VRTU,9441
305
- siliconcompiler/tools/slang/__init__.py,sha256=VkFgm2sWxGSjcL1EEX443oMBreFQSr6INnB4whILeVg,6821
310
+ siliconcompiler/tools/slang/__init__.py,sha256=8G62eamPcuPoafE0qD6ksZjpkSm2pFrf5yTulS4eyEo,6845
306
311
  siliconcompiler/tools/slang/elaborate.py,sha256=lv1BoiSsKpjJuJkTLNOJHEDA9BJtG_p8GcsXqS7Opvk,4745
307
312
  siliconcompiler/tools/slang/lint.py,sha256=GdO4pSl4qKmmiLwQimxDt15YtWaYFDMwyIHleXOVF3Q,957
308
313
  siliconcompiler/tools/surelog/__init__.py,sha256=vngLIj7mmcpJwRwYdm-EAsNNjkCWRuC8sm2pW77FCi8,5594
@@ -335,7 +340,7 @@ siliconcompiler/tools/vpr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
335
340
  siliconcompiler/tools/vpr/_json_constraint.py,sha256=7cEKHmzgFKd0K3NLiIxVgiUOa1tbeSLv7M132SLuQig,2254
336
341
  siliconcompiler/tools/vpr/_xml_constraint.py,sha256=f7AeAtu4gDV08hPuorjRcniCyM5CLxJ6e8NgTbE79tw,2995
337
342
  siliconcompiler/tools/vpr/place.py,sha256=4tZGL4UivJGChbzQ4i5fkL5mC61QBdgvvNIselVChO4,5631
338
- siliconcompiler/tools/vpr/route.py,sha256=BNyEQ8snlwHY7DzLJloAJE07OJgXC6ZOqaW136QnITM,4908
343
+ siliconcompiler/tools/vpr/route.py,sha256=FQr_qvDKGtk2ikOhJvTHY9iFf1GG3GF798YfQnONo2k,8698
339
344
  siliconcompiler/tools/vpr/screenshot.py,sha256=0ielHnOnwHjqXzpKnVXOJLJjc8VUwy2isEIlpkyayUs,1809
340
345
  siliconcompiler/tools/vpr/show.py,sha256=y9SJ8f9pWaIq72LXb4IQvLZpGX0bEyhlYsFqncib7ds,3164
341
346
  siliconcompiler/tools/vpr/vpr.py,sha256=upuvbeDoaLQN7cACDWFZWMkZG6N7eIGmk2R9GRqhOvQ,17714
@@ -349,7 +354,7 @@ siliconcompiler/tools/yosys/prepareLib.py,sha256=yZGDNKCGpRr0_pWHfH-cM2rcJ7pqW0d
349
354
  siliconcompiler/tools/yosys/procs.tcl,sha256=qeoEO7oHF2ZsK_wKNxnvrqQQclvzzUfjzYNEdffW9D0,1783
350
355
  siliconcompiler/tools/yosys/sc_lec.tcl,sha256=0JzsPsv2lSI22xQ5UtGz1U5xwzu_DaSv6LOdeHoEmfU,3756
351
356
  siliconcompiler/tools/yosys/sc_screenshot.tcl,sha256=-7Bb-HhJsZjSdSIlYCTZnZgigwBoN_1FNik9Ba_flos,2853
352
- siliconcompiler/tools/yosys/sc_synth_asic.tcl,sha256=7jeKQY3AX76jhc6Qwkg5D6u7pPNkvl-EAaQlyOoz4bo,17514
357
+ siliconcompiler/tools/yosys/sc_synth_asic.tcl,sha256=xJPhdQ_pI-zNCrKX4C_vuNkT6S9YOsgqFOzf3NaZIgE,17404
353
358
  siliconcompiler/tools/yosys/sc_synth_fpga.tcl,sha256=4yoVlb_QtjxQN58FrSy6DfX5HVu1yOLx-ukTolPsqmY,10785
354
359
  siliconcompiler/tools/yosys/screenshot.py,sha256=KhSe33MVEaz001JLHac9Xrkl2NqRUwCJCS9iA0hBc34,5629
355
360
  siliconcompiler/tools/yosys/syn_asic.py,sha256=G0mbLGj8uq8K6vme_7IsseHpvfRRh4z_EAVhaVRCFCo,25482
@@ -359,7 +364,7 @@ siliconcompiler/tools/yosys/techmaps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
359
364
  siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v,sha256=M4T-ygiKmlsprl5eGGLaV5w6HVqlEepn0wlUDmOkapg,773
360
365
  siliconcompiler/tools/yosys/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
366
  siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLuEtjE4Gk8huBbTm1v-I,116
362
- siliconcompiler/toolscripts/_tools.json,sha256=PkIAXGCjz5ja7tshHeZ1tV_yVr1Q1ZRlpXcKViaXPcI,4923
367
+ siliconcompiler/toolscripts/_tools.json,sha256=sSUCHt_6x839LnAYV85NGeasMJHrpuQ1SZGylrn4Dxs,5231
363
368
  siliconcompiler/toolscripts/_tools.py,sha256=P30KY_xbbjl8eHGsPAxDcAzWvJJpiL07ZfGZZDQbdR8,7174
364
369
  siliconcompiler/toolscripts/rhel8/install-chisel.sh,sha256=RJ7BiZhsXBLTgQhHUcRZmHqhKB6syVaC2nvVoGrIXOI,709
365
370
  siliconcompiler/toolscripts/rhel8/install-icarus.sh,sha256=EW7308IUGYOx7A22s7s0tNq90nHhrpHHUMrx3cd9lMM,962
@@ -426,7 +431,7 @@ siliconcompiler/toolscripts/ubuntu22/install-ghdl.sh,sha256=cWQoZcheROqhZyGHj_YS
426
431
  siliconcompiler/toolscripts/ubuntu22/install-gtkwave.sh,sha256=WN4zAXPRsrzSb6druIFYBBPVF2GjsjzpktZzt8jZPIQ,791
427
432
  siliconcompiler/toolscripts/ubuntu22/install-icarus.sh,sha256=FU8vmbUOr3ulHGBQVUChL5l_hwIUWL9PTijRzolsY54,725
428
433
  siliconcompiler/toolscripts/ubuntu22/install-icepack.sh,sha256=DQghwOES2vh_5x4k9CfSY4TZwh5diIli_mBPFORZc8A,843
429
- siliconcompiler/toolscripts/ubuntu22/install-klayout.sh,sha256=Df-7Q_-YnbOx2qRsNqAuaPbuuZ9uwF9aQRcH_4_dddw,964
434
+ siliconcompiler/toolscripts/ubuntu22/install-klayout.sh,sha256=ztXgdNij-knCAXOWvmfuzch0qkCmse1Htq87g_Bvbjc,1043
430
435
  siliconcompiler/toolscripts/ubuntu22/install-magic.sh,sha256=6YOPM3u0gIxNkq8OwplGLrUSs0Rxrko7L0h_spacEsg,695
431
436
  siliconcompiler/toolscripts/ubuntu22/install-montage.sh,sha256=NEaYLdARAHOs7npQvxfVc74Xbig7uvEMILpwy8IfcWM,56
432
437
  siliconcompiler/toolscripts/ubuntu22/install-netgen.sh,sha256=mllGPYsiob9-ixOVi_9NQ1_HJTTYge9cF9nIRDFdCxA,682
@@ -453,7 +458,7 @@ siliconcompiler/toolscripts/ubuntu24/install-ghdl.sh,sha256=cWQoZcheROqhZyGHj_YS
453
458
  siliconcompiler/toolscripts/ubuntu24/install-gtkwave.sh,sha256=Mov1jdQOd3rIACo1blpdh_uBE7-ZRWHIn2ok-P1-G8E,797
454
459
  siliconcompiler/toolscripts/ubuntu24/install-icarus.sh,sha256=xVeYLMb_sHFai2k2sDZaIKROwh-d7obWE4lGP0i-ACs,736
455
460
  siliconcompiler/toolscripts/ubuntu24/install-icepack.sh,sha256=DQghwOES2vh_5x4k9CfSY4TZwh5diIli_mBPFORZc8A,843
456
- siliconcompiler/toolscripts/ubuntu24/install-klayout.sh,sha256=Q2x_fQNWFAXBDOofiy7ZZmqa1fx11-8Au10SMbNRIYA,1107
461
+ siliconcompiler/toolscripts/ubuntu24/install-klayout.sh,sha256=UuGHZi4xStsOqfIQRXJM4K6k7xWYldm9kXP3IMS4saQ,1186
457
462
  siliconcompiler/toolscripts/ubuntu24/install-magic.sh,sha256=6YOPM3u0gIxNkq8OwplGLrUSs0Rxrko7L0h_spacEsg,695
458
463
  siliconcompiler/toolscripts/ubuntu24/install-montage.sh,sha256=NEaYLdARAHOs7npQvxfVc74Xbig7uvEMILpwy8IfcWM,56
459
464
  siliconcompiler/toolscripts/ubuntu24/install-netgen.sh,sha256=atCUnf8siUYQbUuRsVF9JuBbR_CPl2cQfPuE3L6CzV0,685
@@ -473,16 +478,16 @@ siliconcompiler/toolscripts/ubuntu24/install-yosys-moosic.sh,sha256=hhv3wNIofWCQ
473
478
  siliconcompiler/toolscripts/ubuntu24/install-yosys-parmys.sh,sha256=Ps_mEXAM6cdzKtjiwxOLfLVyHeeNXPB0T4l7Tgp_bMg,2149
474
479
  siliconcompiler/toolscripts/ubuntu24/install-yosys-slang.sh,sha256=lbOsHj31XpCKUqtpfFX7RkbOEORvJkikou2AljIXKuI,706
475
480
  siliconcompiler/toolscripts/ubuntu24/install-yosys.sh,sha256=NeHQqbRp81xc2sg-MG_d-ilZM-3sjRugdsgicCXYpzo,912
476
- siliconcompiler/utils/__init__.py,sha256=HbJIy-iMCm1uJ26W0VvyH0AaucGNpDtldpGnr5i53OY,13107
481
+ siliconcompiler/utils/__init__.py,sha256=bRtMkPpL67JSOyWYZ9E09Fbzwzjsks7DiIFBsHvFQhY,12308
477
482
  siliconcompiler/utils/asic.py,sha256=cMLs7dneSmh5BlHS0-bZ1tLUpvghTw__gNaUCMpyBds,4986
478
- siliconcompiler/utils/flowgraph.py,sha256=AtleeFPOCfP1IQY5rMdT48iLbQFUyeFetNE2pENYbKs,10103
483
+ siliconcompiler/utils/flowgraph.py,sha256=d2YPBpRmFdBwmG5ap0L7Ri73jhs6b1ro0UHfEVDGqb8,10177
479
484
  siliconcompiler/utils/issue.py,sha256=Ub12ftzSUkrqoyLsIQY3978T-kNtjTZFxBv3D-pvLbs,10859
480
- siliconcompiler/utils/logging.py,sha256=0ub-q1ZdjOCfnmiNmo8M47kb32KjymBMcR5fmt_sLyo,4008
485
+ siliconcompiler/utils/logging.py,sha256=698R6oRh2i0A2MOy9f5UNoPntP4Z7EUfogFO7xj-YyI,4017
481
486
  siliconcompiler/utils/showtools.py,sha256=gaAvjMTFlx_0qLKOtpRJx8Bs51TEeQ-4Pjj8kHfFf3o,1871
482
487
  siliconcompiler/utils/units.py,sha256=M_ZxViSysymv8mFdCtbQwfccEwEsBeiCmc8TcnoXZbk,5845
483
- siliconcompiler-0.33.1.dist-info/licenses/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
484
- siliconcompiler-0.33.1.dist-info/METADATA,sha256=YNqJG8_fAkbLz3Wj5HqjE18DohfqJHWu4NDLXUe7KNo,11605
485
- siliconcompiler-0.33.1.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
486
- siliconcompiler-0.33.1.dist-info/entry_points.txt,sha256=zOgup2DTMyBOSX9tMOvtycVWmlk8MVEvub-C-tdTn78,1139
487
- siliconcompiler-0.33.1.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
488
- siliconcompiler-0.33.1.dist-info/RECORD,,
488
+ siliconcompiler-0.34.0.dist-info/licenses/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
489
+ siliconcompiler-0.34.0.dist-info/METADATA,sha256=vEgTEMiCD0YwuLYw5lJAHlPH4G_BSe2zeqXDIv19B28,11815
490
+ siliconcompiler-0.34.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
491
+ siliconcompiler-0.34.0.dist-info/entry_points.txt,sha256=zOgup2DTMyBOSX9tMOvtycVWmlk8MVEvub-C-tdTn78,1139
492
+ siliconcompiler-0.34.0.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
493
+ siliconcompiler-0.34.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,254 +0,0 @@
1
- import docker
2
- import os
3
- from siliconcompiler.package import get_cache_path
4
- from siliconcompiler.package import path as sc_path
5
- from siliconcompiler.utils import default_email_credentials_file
6
- from pathlib import Path
7
- import sys
8
-
9
-
10
- def get_image(chip, step, index):
11
- from siliconcompiler import __version__
12
-
13
- queue = chip.get('option', 'scheduler', 'queue', step=step, index=index)
14
- if queue:
15
- return queue
16
-
17
- return os.getenv(
18
- 'SC_DOCKER_IMAGE',
19
- f'ghcr.io/siliconcompiler/sc_runner:v{__version__}')
20
-
21
-
22
- def get_volumes_directories(chip, cache_dir, workdir, step, index):
23
- all_dirs = set()
24
- # Collect files
25
- for key in chip.allkeys():
26
- sc_type = chip.get(*key, field='type')
27
-
28
- if 'file' in sc_type or 'dir' in sc_type:
29
- cstep = step
30
- cindex = index
31
-
32
- if chip.get(*key, field='pernode').is_never():
33
- cstep = None
34
- cindex = None
35
-
36
- files = chip.find_files(*key, step=cstep, index=cindex, missing_ok=True)
37
- if files:
38
- if not isinstance(files, list):
39
- files = [files]
40
- for path in files:
41
- if path is None:
42
- continue
43
- if 'file' in sc_type:
44
- all_dirs.add(os.path.dirname(path))
45
- else:
46
- all_dirs.add(path)
47
-
48
- # Collect caches
49
- for package in chip.getkeys('package', 'source'):
50
- all_dirs.add(sc_path(chip, package))
51
-
52
- all_dirs = [
53
- Path(cache_dir),
54
- Path(workdir),
55
- Path(chip.scroot),
56
- *[Path(path) for path in all_dirs]]
57
-
58
- pruned_dirs = all_dirs.copy()
59
- for base_path in all_dirs:
60
- if base_path not in pruned_dirs:
61
- continue
62
-
63
- new_pruned_dirs = [base_path]
64
- for check_path in pruned_dirs:
65
- if base_path == check_path:
66
- continue
67
-
68
- if base_path not in check_path.parents:
69
- new_pruned_dirs.append(check_path)
70
- pruned_dirs = new_pruned_dirs
71
-
72
- pruned_dirs = set(pruned_dirs)
73
-
74
- builddir = chip.find_files('option', 'builddir')
75
-
76
- rw_volumes = set()
77
-
78
- for path in pruned_dirs:
79
- for rw_allow in (Path(builddir), Path(workdir), Path(cache_dir)):
80
- if path == rw_allow or path in rw_allow.parents:
81
- rw_volumes.add(path)
82
-
83
- ro_volumes = pruned_dirs.difference(rw_volumes)
84
-
85
- return rw_volumes, ro_volumes
86
-
87
-
88
- def init(chip):
89
- if sys.platform == 'win32':
90
- # this avoids the issue of different file system types
91
- chip.logger.error('Setting copy field to true for docker run on Windows')
92
- for key in chip.allkeys():
93
- if key[0] == 'history':
94
- continue
95
- sc_type = chip.get(*key, field='type')
96
- if 'dir' in sc_type or 'file' in sc_type:
97
- chip.set(*key, True, field='copy')
98
- chip.collect()
99
-
100
-
101
- def run(chip, step, index, replay):
102
- # Import here to avoid circular import
103
- from siliconcompiler.scheduler import _haltstep
104
-
105
- try:
106
- client = docker.from_env()
107
- client.version()
108
- except (docker.errors.DockerException, docker.errors.APIError) as e:
109
- chip.logger.error(f'Unable to connect to docker: {e}')
110
- _haltstep(chip, chip.get('option', 'flow'), step, index)
111
-
112
- is_windows = sys.platform == 'win32'
113
-
114
- workdir = chip.getworkdir()
115
- start_cwd = os.getcwd()
116
-
117
- # Remove handlers from logger
118
- for handler in chip.logger.handlers.copy():
119
- chip.logger.removeHandler(handler)
120
-
121
- # Reinit logger
122
- chip._init_logger(step=step, index=index, in_run=True)
123
-
124
- # Change working directory since the run may delete this folder
125
- os.chdir(workdir)
126
-
127
- image_name = get_image(chip, step, index)
128
-
129
- # Pull image if needed
130
- try:
131
- image = client.images.get(image_name)
132
- except docker.errors.ImageNotFound:
133
- # Needs a lock to avoid downloading a bunch in parallel
134
- image_repo, image_tag = image_name.split(':')
135
- chip.logger.info(f'Pulling docker image {image_name}')
136
- try:
137
- image = client.images.pull(image_repo, tag=image_tag)
138
- except docker.errors.APIError as e:
139
- chip.logger.error(f'Unable to pull image: {e}')
140
- image_src = image_repo.split('/')[0]
141
- chip.logger.error(f" if you are logged into {image_src} with expired credentials, "
142
- f"please use 'docker logout {image_src}'")
143
- _haltstep(chip, chip.get('option', 'flow'), step, index)
144
-
145
- email_file = default_email_credentials_file()
146
- if is_windows:
147
- # Hack to get around manifest merging
148
- chip.set('option', 'cachedir', None)
149
- cache_dir = '/sc_cache'
150
- cwd = '/sc_docker'
151
- builddir = f'{cwd}/build'
152
-
153
- local_cfg = os.path.join(start_cwd, 'sc_docker.json')
154
- job = chip.get('option', 'jobname')
155
- cfg = f'{builddir}/{chip.design}/{job}/{step}/{index}/sc_docker.json'
156
-
157
- user = None
158
-
159
- volumes = [
160
- f"{chip.cwd}:{cwd}:rw",
161
- f"{get_cache_path(chip)}:{cache_dir}:rw"
162
- ]
163
- chip.logger.debug(f'Volumes: {volumes}')
164
-
165
- env = {}
166
-
167
- if os.path.exists(email_file):
168
- env["HOME"] = "/sc_home"
169
-
170
- volumes.append(f'{os.path.dirname(email_file)}:/sc_home/.sc:ro')
171
- else:
172
- cache_dir = get_cache_path(chip)
173
- cwd = chip.cwd
174
- builddir = chip.find_files('option', 'builddir')
175
-
176
- local_cfg = os.path.abspath('sc_docker.json')
177
- cfg = local_cfg
178
-
179
- user = os.getuid()
180
-
181
- rw_volumes, ro_volumes = get_volumes_directories(chip, cache_dir, workdir, step, index)
182
- volumes = [
183
- *[
184
- f'{path}:{path}:rw' for path in rw_volumes
185
- ],
186
- *[
187
- f'{path}:{path}:ro' for path in ro_volumes
188
- ]
189
- ]
190
- chip.logger.debug(f'Read write volumes: {rw_volumes}')
191
- chip.logger.debug(f'Read only volumes: {ro_volumes}')
192
-
193
- env = {}
194
- if os.path.exists(email_file):
195
- env["HOME"] = "/sc_home"
196
-
197
- volumes.append(f'{os.path.dirname(email_file)}:/sc_home/.sc:ro')
198
-
199
- container = None
200
- try:
201
- container = client.containers.run(
202
- image.id,
203
- volumes=volumes,
204
- labels=[
205
- "siliconcompiler",
206
- f"sc_node:{chip.design}:{step}{index}"
207
- ],
208
- user=user,
209
- detach=True,
210
- tty=True,
211
- auto_remove=True,
212
- environment=env)
213
-
214
- # Write manifest to make it available to the docker runner
215
- chip.write_manifest(local_cfg)
216
-
217
- cachemap = []
218
- for package in chip.getkeys('package', 'source'):
219
- cachemap.append(f'{package}:{sc_path(chip, package)}')
220
-
221
- chip.logger.info(f'Running in docker container: {container.name} ({container.short_id})')
222
- args = [
223
- '-cfg', cfg,
224
- '-cwd', cwd,
225
- '-builddir', builddir,
226
- '-cachedir', cache_dir,
227
- '-step', step,
228
- '-index', index,
229
- '-unset_scheduler'
230
- ]
231
- if not is_windows and cachemap:
232
- args.append('-cachemap')
233
- args.append(' '.join(cachemap))
234
- cmd = f'python3 -m siliconcompiler.scheduler.run_node {" ".join(args)}'
235
- exec_handle = client.api.exec_create(container.name, cmd)
236
- stream = client.api.exec_start(exec_handle, stream=True)
237
-
238
- # Print the log
239
- for chunk in stream:
240
- for line in chunk.decode().splitlines():
241
- print(line)
242
-
243
- if client.api.exec_inspect(exec_handle['Id']).get('ExitCode') != 0:
244
- _haltstep(chip, chip.get('option', 'flow'), step, index, log=False)
245
- finally:
246
- # Ensure we clean up containers
247
- if container:
248
- try:
249
- container.stop()
250
- except docker.errors.APIError:
251
- chip.logger.error('Failed to stop docker container')
252
-
253
- # Restore working directory
254
- os.chdir(start_cwd)