siliconcompiler 0.35.3__py3-none-any.whl → 0.35.4__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 (68) hide show
  1. siliconcompiler/_metadata.py +1 -1
  2. siliconcompiler/apps/sc_issue.py +18 -2
  3. siliconcompiler/checklist.py +2 -1
  4. siliconcompiler/constraints/asic_component.py +49 -11
  5. siliconcompiler/constraints/asic_floorplan.py +23 -21
  6. siliconcompiler/constraints/asic_pins.py +55 -17
  7. siliconcompiler/constraints/asic_timing.py +53 -22
  8. siliconcompiler/constraints/fpga_timing.py +5 -6
  9. siliconcompiler/data/templates/replay/replay.sh.j2 +27 -14
  10. siliconcompiler/package/__init__.py +17 -6
  11. siliconcompiler/project.py +9 -1
  12. siliconcompiler/scheduler/docker.py +24 -25
  13. siliconcompiler/scheduler/scheduler.py +82 -68
  14. siliconcompiler/scheduler/schedulernode.py +133 -20
  15. siliconcompiler/scheduler/slurm.py +113 -29
  16. siliconcompiler/scheduler/taskscheduler.py +0 -7
  17. siliconcompiler/schema/editableschema.py +29 -0
  18. siliconcompiler/schema/parametervalue.py +14 -2
  19. siliconcompiler/schema_support/option.py +82 -1
  20. siliconcompiler/schema_support/pathschema.py +7 -13
  21. siliconcompiler/tool.py +47 -25
  22. siliconcompiler/tools/klayout/__init__.py +3 -0
  23. siliconcompiler/tools/klayout/scripts/klayout_convert_drc_db.py +1 -0
  24. siliconcompiler/tools/klayout/scripts/klayout_export.py +1 -0
  25. siliconcompiler/tools/klayout/scripts/klayout_operations.py +1 -0
  26. siliconcompiler/tools/klayout/scripts/klayout_show.py +1 -0
  27. siliconcompiler/tools/klayout/scripts/klayout_utils.py +3 -4
  28. siliconcompiler/tools/openroad/__init__.py +27 -1
  29. siliconcompiler/tools/openroad/_apr.py +81 -4
  30. siliconcompiler/tools/openroad/clock_tree_synthesis.py +1 -0
  31. siliconcompiler/tools/openroad/global_placement.py +1 -0
  32. siliconcompiler/tools/openroad/init_floorplan.py +116 -7
  33. siliconcompiler/tools/openroad/power_grid_analysis.py +174 -0
  34. siliconcompiler/tools/openroad/repair_design.py +1 -0
  35. siliconcompiler/tools/openroad/repair_timing.py +1 -0
  36. siliconcompiler/tools/openroad/scripts/apr/preamble.tcl +1 -1
  37. siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl +42 -4
  38. siliconcompiler/tools/openroad/scripts/apr/sc_irdrop.tcl +146 -0
  39. siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl +1 -1
  40. siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl +4 -6
  41. siliconcompiler/tools/openroad/scripts/common/procs.tcl +1 -1
  42. siliconcompiler/tools/openroad/scripts/common/reports.tcl +1 -1
  43. siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl +2 -4
  44. siliconcompiler/tools/opensta/__init__.py +1 -1
  45. siliconcompiler/tools/opensta/scripts/sc_timing.tcl +17 -12
  46. siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl +11 -0
  47. siliconcompiler/tools/vivado/scripts/sc_place.tcl +11 -0
  48. siliconcompiler/tools/vivado/scripts/sc_route.tcl +11 -0
  49. siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl +10 -0
  50. siliconcompiler/tools/vpr/__init__.py +28 -0
  51. siliconcompiler/tools/yosys/scripts/sc_screenshot.tcl +1 -1
  52. siliconcompiler/tools/yosys/scripts/sc_synth_asic.tcl +40 -4
  53. siliconcompiler/tools/yosys/scripts/sc_synth_fpga.tcl +15 -5
  54. siliconcompiler/tools/yosys/syn_asic.py +42 -0
  55. siliconcompiler/tools/yosys/syn_fpga.py +8 -0
  56. siliconcompiler/toolscripts/_tools.json +6 -6
  57. siliconcompiler/utils/__init__.py +243 -51
  58. siliconcompiler/utils/curation.py +89 -56
  59. siliconcompiler/utils/issue.py +6 -1
  60. siliconcompiler/utils/multiprocessing.py +35 -2
  61. siliconcompiler/utils/paths.py +21 -0
  62. siliconcompiler/utils/settings.py +141 -0
  63. {siliconcompiler-0.35.3.dist-info → siliconcompiler-0.35.4.dist-info}/METADATA +4 -3
  64. {siliconcompiler-0.35.3.dist-info → siliconcompiler-0.35.4.dist-info}/RECORD +68 -65
  65. {siliconcompiler-0.35.3.dist-info → siliconcompiler-0.35.4.dist-info}/WHEEL +0 -0
  66. {siliconcompiler-0.35.3.dist-info → siliconcompiler-0.35.4.dist-info}/entry_points.txt +0 -0
  67. {siliconcompiler-0.35.3.dist-info → siliconcompiler-0.35.4.dist-info}/licenses/LICENSE +0 -0
  68. {siliconcompiler-0.35.3.dist-info → siliconcompiler-0.35.4.dist-info}/top_level.txt +0 -0
@@ -237,6 +237,10 @@ def generate_testcase(project: "Project",
237
237
  with open(issue_path, 'w') as fd:
238
238
  json.dump(issue_information, fd, indent=4, sort_keys=True)
239
239
 
240
+ gitignore_path = os.path.join(issue_dir.name, '.gitignore')
241
+ with open(gitignore_path, 'w') as fd:
242
+ fd.write("/*\n")
243
+
240
244
  readme_path = os.path.join(issue_dir.name, 'README.txt')
241
245
  with open(readme_path, 'w') as f:
242
246
  f.write(get_file_template('issue/README.txt').render(
@@ -268,7 +272,8 @@ def generate_testcase(project: "Project",
268
272
  # Add individual files
269
273
  add_files = [manifest_path,
270
274
  issue_path,
271
- readme_path]
275
+ readme_path,
276
+ gitignore_path]
272
277
  if not is_python_tool and run_path:
273
278
  add_files.append(run_path)
274
279
  for path in add_files:
@@ -8,7 +8,11 @@ import os.path
8
8
  from typing import Union, Optional
9
9
 
10
10
  from datetime import datetime
11
- from multiprocessing.managers import SyncManager
11
+ from logging.handlers import QueueHandler
12
+ from multiprocessing.managers import SyncManager, RemoteError
13
+
14
+ from siliconcompiler.utils.settings import SettingsManager
15
+ from siliconcompiler.utils import default_sc_path
12
16
 
13
17
  from siliconcompiler.report.dashboard.cli.board import Board
14
18
 
@@ -139,6 +143,9 @@ class MPManager(metaclass=_ManagerSingleton):
139
143
  self.__board_lock = self.__manager.Lock()
140
144
  self.__board = None
141
145
 
146
+ # Settings
147
+ self.__settings = SettingsManager(default_sc_path("settings.json"), self.__logger)
148
+
142
149
  # Register cleanup function to run at exit
143
150
  atexit.register(MPManager.stop)
144
151
 
@@ -205,7 +212,13 @@ class MPManager(metaclass=_ManagerSingleton):
205
212
 
206
213
  # Stop the dashboard service if it's running
207
214
  if manager.__board:
208
- with manager.__board_lock:
215
+ try:
216
+ with manager.__board_lock:
217
+ if manager.__board:
218
+ manager.__board.stop()
219
+ manager.__board = None
220
+ except RemoteError:
221
+ # Try without the lock
209
222
  if manager.__board:
210
223
  manager.__board.stop()
211
224
  manager.__board = None
@@ -249,6 +262,16 @@ class MPManager(metaclass=_ManagerSingleton):
249
262
  """
250
263
  return MPManager().__manager
251
264
 
265
+ @staticmethod
266
+ def get_settings() -> SettingsManager:
267
+ """
268
+ Provides access to the shared SettingsManager instance.
269
+
270
+ Returns:
271
+ SettingsManager: The singleton settings instance.
272
+ """
273
+ return MPManager().__settings
274
+
252
275
  @staticmethod
253
276
  def get_dashboard() -> Board:
254
277
  """
@@ -292,3 +315,13 @@ class MPManager(metaclass=_ManagerSingleton):
292
315
  Get the address of the manager
293
316
  """
294
317
  return MPManager.__address
318
+
319
+
320
+ class MPQueueHandler(QueueHandler):
321
+ def enqueue(self, record):
322
+ try:
323
+ super().enqueue(record)
324
+ except BrokenPipeError:
325
+ # The pipe is broken so fail silently as this is likely
326
+ # at exit
327
+ pass
@@ -13,6 +13,27 @@ def cwdir(project: "Project") -> str:
13
13
  return project._Project__cwd
14
14
 
15
15
 
16
+ def cwdirsafe(project: "Project") -> str:
17
+ """
18
+ Returns the current working directory for the project, with safe fallback.
19
+
20
+ This function attempts to retrieve the project's current working directory.
21
+ If the provided object is not a valid Project instance, it falls back to
22
+ the system's current working directory.
23
+
24
+ Args:
25
+ project (Project): The SiliconCompiler project object.
26
+
27
+ Returns:
28
+ str: The absolute path to the project's working directory, or the
29
+ system's current working directory if the project is invalid.
30
+ """
31
+ try:
32
+ return cwdir(project)
33
+ except TypeError:
34
+ return os.getcwd()
35
+
36
+
16
37
  def builddir(project: "Project") -> str:
17
38
  """
18
39
  Returns the absolute path to the project's build directory.
@@ -0,0 +1,141 @@
1
+ import json
2
+ import os
3
+ import logging
4
+
5
+ import os.path
6
+
7
+ from typing import Optional
8
+
9
+ from fasteners import InterProcessLock
10
+
11
+ from siliconcompiler import sc_open
12
+
13
+
14
+ class SettingsManager:
15
+ """
16
+ A class to manage user settings stored in a JSON file.
17
+ Supports categories, robust error handling for malformed files,
18
+ and simple get/set operations.
19
+ """
20
+
21
+ def __init__(self, filepath: str, logger: logging.Logger, timeout: float = 1.0):
22
+ """
23
+ Initialize the settings manager.
24
+
25
+ Args:
26
+ filepath (str): The path to the JSON file where settings are stored.
27
+ """
28
+ self.__filepath = filepath
29
+ self.__lock = InterProcessLock(self.__filepath + ".lock")
30
+ self.__timeout = timeout
31
+ self.__logger = logger.getChild("settings")
32
+ self.__settings = {}
33
+ self._load()
34
+
35
+ def _load(self):
36
+ """
37
+ Internal method to load settings from disk.
38
+ It handles missing files and malformed JSON gracefully.
39
+ """
40
+ if not os.path.exists(self.__filepath):
41
+ self.__settings = {}
42
+ return
43
+
44
+ try:
45
+ if self.__lock.acquire(timeout=self.__timeout):
46
+ try:
47
+ with sc_open(self.__filepath, encoding='utf-8') as f:
48
+ data = json.load(f)
49
+ finally:
50
+ self.__lock.release()
51
+ else:
52
+ self.__logger.error(f"Timeout acquiring lock for {self.__filepath}. "
53
+ "Starting with empty settings.")
54
+ data = {}
55
+
56
+ # Ensure the loaded data is actually a dictionary
57
+ if isinstance(data, dict):
58
+ self.__settings = data
59
+ else:
60
+ # If valid JSON but not a dict (e.g. a list), reset to empty
61
+ self.__logger.warning(f"File {self.__filepath} did not contain a JSON object. "
62
+ "Resetting.")
63
+ self.__settings = {}
64
+
65
+ except json.JSONDecodeError:
66
+ self.__logger.error(f"File {self.__filepath} is malformed. "
67
+ "Starting with empty settings.")
68
+ self.__settings = {}
69
+ except Exception as e:
70
+ # Catch-all for permission errors, etc., to ensure __init__ doesn't crash
71
+ self.__logger.error(f"Unexpected error loading settings: {e}")
72
+ self.__settings = {}
73
+
74
+ def save(self):
75
+ """
76
+ Save the current settings to the disk in JSON format.
77
+ """
78
+ try:
79
+ # Ensure directory exists
80
+ directory = os.path.dirname(self.__filepath)
81
+ if directory and not os.path.exists(directory):
82
+ os.makedirs(directory)
83
+
84
+ with self.__lock:
85
+ with open(self.__filepath, 'w', encoding='utf-8') as f:
86
+ json.dump(self.__settings, f, indent=4)
87
+ except Exception as e:
88
+ self.__logger.error(f"Failed to save settings to {self.__filepath}: {e}")
89
+ raise e
90
+
91
+ def set(self, category: str, key: str, value):
92
+ """
93
+ Set a specific setting within a category.
94
+
95
+ Args:
96
+ category (str): The group name (e.g., 'showtools', 'options').
97
+ key (str): The specific setting name.
98
+ value: The value to store (must be JSON serializable).
99
+ """
100
+ if category not in self.__settings:
101
+ self.__settings[category] = {}
102
+
103
+ self.__settings[category][key] = value
104
+
105
+ def get(self, category: str, key: str, default=None):
106
+ """
107
+ Retrieve a setting.
108
+
109
+ Args:
110
+ category (str): The group name.
111
+ key (str): The specific setting name.
112
+ default: The value to return if the category or key is missing.
113
+
114
+ Returns:
115
+ The stored value or the default.
116
+ """
117
+ if category not in self.__settings:
118
+ return default
119
+
120
+ return self.__settings[category].get(key, default)
121
+
122
+ def get_category(self, category: str):
123
+ """
124
+ Retrieve all settings for a specific category.
125
+ Returns an empty dict if category does not exist.
126
+ """
127
+ return self.__settings.get(category, {})
128
+
129
+ def delete(self, category: str, key: Optional[str] = None):
130
+ """
131
+ Remove a setting.
132
+ """
133
+ if category in self.__settings:
134
+ if key:
135
+ if key in self.__settings[category]:
136
+ del self.__settings[category][key]
137
+ # Clean up empty categories
138
+ if not self.__settings[category]:
139
+ del self.__settings[category]
140
+ else:
141
+ del self.__settings[category]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: siliconcompiler
3
- Version: 0.35.3
3
+ Version: 0.35.4
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author: Zero ASIC
6
6
  License: Apache License 2.0
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
19
20
  Classifier: Operating System :: POSIX :: Linux
20
21
  Classifier: Operating System :: MacOS
21
22
  Classifier: Operating System :: Microsoft :: Windows
@@ -60,7 +61,7 @@ Requires-Dist: responses==0.25.8; extra == "test"
60
61
  Requires-Dist: PyVirtualDisplay==3.0; extra == "test"
61
62
  Provides-Extra: lint
62
63
  Requires-Dist: flake8==7.3.0; extra == "lint"
63
- Requires-Dist: tclint==0.6.1; extra == "lint"
64
+ Requires-Dist: tclint==0.6.2; extra == "lint"
64
65
  Requires-Dist: codespell==2.4.1; extra == "lint"
65
66
  Provides-Extra: docs
66
67
  Requires-Dist: Sphinx<8.3,>=7.4; extra == "docs"
@@ -102,7 +103,7 @@ SiliconCompiler is a modular hardware build system ("make for silicon"). The pro
102
103
  # Getting Started
103
104
 
104
105
  SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and
105
- Linux platforms. For working Python 3.9-3.13 environment, just use pip.
106
+ Linux platforms. For working Python 3.9-3.14 environment, just use pip.
106
107
 
107
108
  ```sh
108
109
  pip install --upgrade siliconcompiler
@@ -1,21 +1,21 @@
1
1
  siliconcompiler/__init__.py,sha256=I1RN8BMRpuAx9tdx5CLNlpIqT-xg2EwvOB8TcqHQSN0,1114
2
2
  siliconcompiler/_common.py,sha256=1bY1qdFxnstAyhJrkJCBhSlZ614dlmcwL0Bf7NOneyY,1047
3
- siliconcompiler/_metadata.py,sha256=me0mZsXtXvHJUlLtY9lFoe2_NdjSmCNju4hEeNZ5CzM,1286
3
+ siliconcompiler/_metadata.py,sha256=41z6X_WgZYacn-LI3m1ax_ddyf9ye0qU76KAk8jtc84,1286
4
4
  siliconcompiler/asic.py,sha256=KXs-mjFHjiCRlyUClNIb-Zvdkxa8dGafStHm-rX3vu8,28912
5
- siliconcompiler/checklist.py,sha256=KOBHvSnJQCwmhP5hERABk7tHIMHdWsFBhqzTJ687ewY,24887
5
+ siliconcompiler/checklist.py,sha256=MD0cVYm5RrxSDCBVO1nakGC6LH5hWnzisaF4e0V6eV8,24909
6
6
  siliconcompiler/design.py,sha256=vFcenCV1Q3IVsdpeh4h9wCm4lyAfJMH5e-Oqg4Ji4sQ,34555
7
7
  siliconcompiler/flowgraph.py,sha256=OGaXd88alyrSQizHyeRPK9UkNz1fqrLg0AkIkrc70y4,63295
8
8
  siliconcompiler/fpga.py,sha256=8uvmIyvWOWx5X1JP3xaSpkA9hVyox4l-hK63aYzN8-w,9075
9
9
  siliconcompiler/library.py,sha256=5MnryNBF9Dsg9mcD-Nl0NWrsE6hBlUo3tE2fdWXqt5E,16033
10
10
  siliconcompiler/pdk.py,sha256=rENDQve5edt7EkdgnNfW-mfgJVklShLbvYddaEA1-_k,31581
11
- siliconcompiler/project.py,sha256=WLP131DoQGa8rrafrCE7DZuPGqhWRyrK_f7DElHcc1E,51190
11
+ siliconcompiler/project.py,sha256=2qtXA_J-biNj5yjSPAL3GSVAsjphyu9Zsn0sqyAUjho,51678
12
12
  siliconcompiler/schematic.py,sha256=0PVFqZvJZW_e2NRGvv6DJPHGjwOlao1qHgZLhgCaEcQ,18385
13
- siliconcompiler/tool.py,sha256=jzXR554oYqcUc23gGww9rv9HBPiXnMUoq6f9F771QFE,109809
13
+ siliconcompiler/tool.py,sha256=sS6oOX9gvGn29WGawL11OWm8DcDFZmLP1_hsOoNpzp8,110305
14
14
  siliconcompiler/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  siliconcompiler/apps/_common.py,sha256=uldDgTeAEfo1Y0X_hxpr0yjSW0W0c5UaiuSpgk7aUuk,8605
16
16
  siliconcompiler/apps/sc_dashboard.py,sha256=BU3hPC7OzfUpkKEVsBD_46zd4OzHO86eJMB5CaWpVf0,3496
17
17
  siliconcompiler/apps/sc_install.py,sha256=OiYZ4Z6D-oFvHy789dmHpi8Y8WCqquX11Zi_k7kjcq8,13848
18
- siliconcompiler/apps/sc_issue.py,sha256=_ClYgvpYC9z1KsM83AiTfcHG4tKp6NKIAiGfTq0bFSg,6465
18
+ siliconcompiler/apps/sc_issue.py,sha256=m8BUxvtZo_ce_ceK4Z44Sz91rlf9Q3mXD_ZHFtpaREw,7230
19
19
  siliconcompiler/apps/sc_remote.py,sha256=ve-4Z3c79noYe9PcYY-V7DfkLMa603J16SiIpmOCLQg,6887
20
20
  siliconcompiler/apps/sc_server.py,sha256=Jup3QYs6R3LRbok4PO7h8l9-1Q1I82P9nJMjjojt4YA,814
21
21
  siliconcompiler/apps/sc_show.py,sha256=w-AuHjDEOiyHoKu68fWf_ImsbGgyfnrv5afI9Vr6Ib4,3506
@@ -25,11 +25,11 @@ siliconcompiler/apps/utils/summarize.py,sha256=NbY04DDRSjEDhu0at46dRXX8-0iHxWIcP
25
25
  siliconcompiler/checklists/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  siliconcompiler/checklists/oh_tapeout.py,sha256=mw2JX9wy2rhRhHZ0kmfifDoi9l8yasM0ci1G1gGPDls,968
27
27
  siliconcompiler/constraints/__init__.py,sha256=Tc8QtY-DGcluZqJTpZvst4h3F8pbiiTgH3dm2F0aB74,940
28
- siliconcompiler/constraints/asic_component.py,sha256=2a5tdW0RophoZ8BfgeDDUvgcwxu2bmza46m9oothTaI,16187
29
- siliconcompiler/constraints/asic_floorplan.py,sha256=aEn8PhJsnV1STmXHk0MkiUQizqeUHaE9OCICsa-mHyI,21199
30
- siliconcompiler/constraints/asic_pins.py,sha256=-MBEQTveHUB-fqnRQe3WwrTewBjyxjPosk5UaQh7uhw,19438
31
- siliconcompiler/constraints/asic_timing.py,sha256=wb-WkblCwCcb5o5-1wIzSZ1RreDGPand25ZvXEvEAHQ,20149
32
- siliconcompiler/constraints/fpga_timing.py,sha256=eRF_Ng_FCtTUXMqTQ24LeYtmAjGTcmHpAX66XySF4WU,7257
28
+ siliconcompiler/constraints/asic_component.py,sha256=VPied32JQdoFBo8LsBKjo8r1-f9PXMdxCXpsOjUqwxA,17872
29
+ siliconcompiler/constraints/asic_floorplan.py,sha256=79Qqm3MhWrXDXBEG3tkoIFcxg5GGRqZZzrrzuVn0tww,21507
30
+ siliconcompiler/constraints/asic_pins.py,sha256=hpJ1tWcAt45EInHGLcRBtY5xgvff3_QuOF8eeHZbuW8,21179
31
+ siliconcompiler/constraints/asic_timing.py,sha256=Vgdlg_Z7ncLyIEZU5M8Pv6q0jP9wKH7bc-V9bPpT_FY,21768
32
+ siliconcompiler/constraints/fpga_timing.py,sha256=x36PVBYaR2JPCFOY8V59lyyPfj-fq3cPgsYMxLV-p90,7310
33
33
  siliconcompiler/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  siliconcompiler/data/heartbeat.sdc,sha256=4VirwToHzr1PI4sxiEx8ArRoDdxbIPnMiNKaMVUs22g,139
35
35
  siliconcompiler/data/heartbeat.v,sha256=6HKc1j1JuuCj8oTIsbFBlDEoytzzEheUyTyokte2b18,420
@@ -54,7 +54,7 @@ siliconcompiler/data/templates/issue/README.txt,sha256=hbJsLPWLgxN5WfSJluhQYCxdf
54
54
  siliconcompiler/data/templates/issue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  siliconcompiler/data/templates/issue/run.sh,sha256=pwWNRym9P06jtns7_acKTu1zrTEjK4dA9EDV_eKdLds,147
56
56
  siliconcompiler/data/templates/replay/replay.py.j2,sha256=LbkPlRldsJNyREV4WfY5o6PlnlBzr6-7gqj4bWI7I6o,1552
57
- siliconcompiler/data/templates/replay/replay.sh.j2,sha256=93rNXQ4CHFZlUVToIFBPTKn8eA4QdCCJN03gbIZT1uA,2953
57
+ siliconcompiler/data/templates/replay/replay.sh.j2,sha256=HtURC0DG9DRtAob8R3grbCWPVcVy_7zDhbaHUT3l1u8,3128
58
58
  siliconcompiler/data/templates/replay/requirements.txt,sha256=7MAUxEkDe1GiOoJ6XN1uS3KSnMucy4eDTCIuFQhkG4E,149
59
59
  siliconcompiler/data/templates/replay/setup.sh,sha256=bZMAd_moGtqDB8wRWMJBbktdFwoVyodLWamW3llQE80,2747
60
60
  siliconcompiler/data/templates/slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -82,7 +82,7 @@ siliconcompiler/metrics/asic.py,sha256=SwhBh2xSni4yYcV-PMfW4V3UhBptLtHhKlv-sv7CJ
82
82
  siliconcompiler/metrics/fpga.py,sha256=UgAi0O67aIc2evdBvSsy226UcHlxqYOZqPv8NfEfys8,10057
83
83
  siliconcompiler/optimizer/__init__.py,sha256=wdSuv3U7hoSdZn-TkaQtYehVdhS5F35Mb1McgaUw3hc,6599
84
84
  siliconcompiler/optimizer/vizier.py,sha256=JtoPktsa-qHN0i4PsfRnxvQAT0yVvQVRfdyYNOCYgU4,9011
85
- siliconcompiler/package/__init__.py,sha256=SKkoGECbYN6HEFmfx2ZZZ3DmKMpq8o0xtI8UQrAaiw0,25251
85
+ siliconcompiler/package/__init__.py,sha256=DYM7FASvn1uonQyvu7bx1xTP2RQ0Pyifr3Ap2jOwGyU,25646
86
86
  siliconcompiler/package/git.py,sha256=xq8_qi-2pmhswJ9ssUtRgSUNxpMGKZLDmnkdFYeq9iA,5950
87
87
  siliconcompiler/package/github.py,sha256=bzV-XrcmFMloa7_yhdxFjfe4r9OH36xHGY6ZCgHv0mA,6785
88
88
  siliconcompiler/package/https.py,sha256=OJL1PxOf6FbuGUrEx3gWpLEocd7p9gf9uvKh6a-7OQc,5753
@@ -126,26 +126,26 @@ siliconcompiler/report/dashboard/web/layouts/vertical_flowgraph_sac_tabs.py,sha2
126
126
  siliconcompiler/report/dashboard/web/utils/__init__.py,sha256=xfzH8OL3eN3LQlB6ghJxAyVOkrU7GvPV5hTpsYxlZY4,5147
127
127
  siliconcompiler/report/dashboard/web/utils/file_utils.py,sha256=4VV-WUE4O0uYeo56L0Xg-elb0lZIhP0U1V76xc56vug,5602
128
128
  siliconcompiler/scheduler/__init__.py,sha256=4ugpwR-X1BoSn38wEtR8nB1ZW77ktQW3eqANNROkuGg,525
129
- siliconcompiler/scheduler/docker.py,sha256=jVKiu-1OkoxieBm3tMnx_RvBpOqcKeDlCVbgJ9UHwXw,12706
129
+ siliconcompiler/scheduler/docker.py,sha256=7eYlV0aMZISLov0af-LoX2TV3BnG8XYjGGhWXe3pgUY,12243
130
130
  siliconcompiler/scheduler/error.py,sha256=B1DhBhzqK5f8OCodmQIXdrGzRwE2cnfL9zbHLLQZPzw,193
131
131
  siliconcompiler/scheduler/run_node.py,sha256=MALxjvpM-pFkT9qzCQ9l_N12NMbFek3h8VYk5S2X5Tg,5739
132
- siliconcompiler/scheduler/scheduler.py,sha256=ePH5C6y7x20KQUpr_bwtXDgs1BEWSBbm3t4nQanqL7k,40752
133
- siliconcompiler/scheduler/schedulernode.py,sha256=y-fCzPjIo-0xvl0p2feymomPPNrfdbzmpQ6YsfPmEhA,54580
132
+ siliconcompiler/scheduler/scheduler.py,sha256=BXiSmCS2yaGk6vAxa-QpHNAVuJndKW95BwgUjpEGc5k,40788
133
+ siliconcompiler/scheduler/schedulernode.py,sha256=mX7vvHjG9SF1K5_oS2dvK-1yZSjzY70c-aHJ9f98slg,59164
134
134
  siliconcompiler/scheduler/send_messages.py,sha256=zK5JVHu9qKlwFDiDboGJcy32zdnHBKxnafOTfFNzMl8,9411
135
- siliconcompiler/scheduler/slurm.py,sha256=trbVdpHRDbJPbDr6qA0Dkvn-EjB-Q9sBFMPmaW7I9gE,8783
136
- siliconcompiler/scheduler/taskscheduler.py,sha256=jC70KTQvSQxaM9b_kCcR5D-XTl28I7JCJMywYk38epQ,17839
135
+ siliconcompiler/scheduler/slurm.py,sha256=oYvGr5Uxbo4G2lK2F3IS5hhSFKm3a5nEdiucUg4T-E4,11901
136
+ siliconcompiler/scheduler/taskscheduler.py,sha256=yNfFNVTCPPeMX14-umjJA-b6UbmClcRFjrmK3xAtbWw,17645
137
137
  siliconcompiler/scheduler/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  siliconcompiler/scheduler/validation/email_credentials.json,sha256=hkJs0U2h2Bgm1zxeXvanIJ-prPhpn_aU6e3qwIs7qA0,1997
139
139
  siliconcompiler/schema/__init__.py,sha256=z5zc_4MG53d-Io5ZOFQT0suHkW8oN5CrdpJx28mwGUk,547
140
140
  siliconcompiler/schema/_metadata.py,sha256=SFDemUQc9rU-_cnUpbqbcecVVB1ceLxzcuPZALPqzGI,63
141
141
  siliconcompiler/schema/baseschema.py,sha256=ZSXwGaF7HiiSSxUFZwYczCOruxnnW1FnPz4_2MRKum8,51690
142
142
  siliconcompiler/schema/docschema.py,sha256=Hzmq_YDxXDol2iWAwP1grhqYga43NvqVtysCCVMBn3E,924
143
- siliconcompiler/schema/editableschema.py,sha256=2wZBSQ4SmUWEeMg7--klkBxZJHgIHEhDzRS3GSCjHgk,5116
143
+ siliconcompiler/schema/editableschema.py,sha256=3U_pIi_BFrFIdeXgJP-xj8GfUe0ZVvDtPmYGHDgxlSE,6067
144
144
  siliconcompiler/schema/journal.py,sha256=i3TYcuqdwq-FCCit8M02W8YbIUsY61mlPHSS-7Y0axc,6538
145
145
  siliconcompiler/schema/namedschema.py,sha256=bu3x0D7UdnkeZs3RXksn_5llUFrWwO3QItOEEWKLCDw,3820
146
146
  siliconcompiler/schema/parameter.py,sha256=Y-TfK__m6NsudJXG3iTZHr5XlUg8JbIUZsg-VG6jnPo,34721
147
147
  siliconcompiler/schema/parametertype.py,sha256=oEkZN81sftAgnEEv84M9Vz8UPxwIRioxE6sJszV1A8o,11549
148
- siliconcompiler/schema/parametervalue.py,sha256=h1DvtB-z-SnGQLHomaF236G6FrNJK5EDprrZzUqAQAs,29837
148
+ siliconcompiler/schema/parametervalue.py,sha256=uqzWZ9lEmvqZsc0izkCd-anQVjdlLLitj4utEQQQzCY,30163
149
149
  siliconcompiler/schema/safeschema.py,sha256=otjZCv2jS4qsqhbIfdoR8IQ2oPo5ee87BSm-bt-gQTU,2655
150
150
  siliconcompiler/schema/utils.py,sha256=-rNHCElu7z6Y5ig3lCZVxqIHq7VM6m7Wnyhll5VfxBM,1438
151
151
  siliconcompiler/schema/docs/__init__.py,sha256=alRd_dr35ryJDKRaMx1dPpQ-NMBI-ldwHpZQBRyi-qY,993
@@ -156,9 +156,9 @@ siliconcompiler/schema_support/cmdlineschema.py,sha256=B4eQS7goBB4lq1tGb-qgssXrs
156
156
  siliconcompiler/schema_support/dependencyschema.py,sha256=KTpDV_e4frVnbHQLNcQPbC7uPKODWAvEqXmEHgiI8vo,10238
157
157
  siliconcompiler/schema_support/filesetschema.py,sha256=CE_JpDJYWqQzGgImgwPWOS7z_ymk4hY3H5I0qVU33Qo,11513
158
158
  siliconcompiler/schema_support/metric.py,sha256=mLzdtpM76l2cPINGWONrAjBMU28ZnQR_yLOGMYBLBV4,16158
159
- siliconcompiler/schema_support/option.py,sha256=lMB7Us3VPmxK56HK969YtmCcJ__nKfIT5Aa-qnYhNMY,53544
159
+ siliconcompiler/schema_support/option.py,sha256=URcEzo4qL34BU5j55hw0hnGy1Q-cVaHefTVmuYzYnOE,56105
160
160
  siliconcompiler/schema_support/packageschema.py,sha256=tB6wYEhZliaUVZDq40DlEfoo8ken6-Xh6zIafBRrxr4,10508
161
- siliconcompiler/schema_support/pathschema.py,sha256=6ovpEjC1oDAxi5OaNpIrXmDSY8MaIxt_1KeNVZxQXBA,21123
161
+ siliconcompiler/schema_support/pathschema.py,sha256=Itr7HXf2xpGrZYzh4KIwBpuMqiD8KvWGyqHwkFyffVw,20876
162
162
  siliconcompiler/schema_support/record.py,sha256=pmo353Rw2_ptAPCfc5e-odYSgsVD5vF38udpwJ5HIZw,19646
163
163
  siliconcompiler/targets/__init__.py,sha256=eWgvV4DeombChYqLxs5z_rOZ7Mt1q7N0WEetuBcNjZ4,1678
164
164
  siliconcompiler/targets/asap7_demo.py,sha256=sG3GdqkqGjhco43JHVV6-ys734fYTksx68VIJpZ4_IU,4760
@@ -207,18 +207,18 @@ siliconcompiler/tools/icarus/__init__.py,sha256=D6gM01JUjLySY6kf8gVXee_xVXr6oDzJ
207
207
  siliconcompiler/tools/icarus/compile.py,sha256=xPMuYw_UHc1Dq_hbSTQQF0yGUbenobDj7FzHrigJqAk,4755
208
208
  siliconcompiler/tools/icepack/__init__.py,sha256=FJnRz9I3Y5c2stJJXHSSBySTkpwJsYJ_HP1IuTPNZTo,226
209
209
  siliconcompiler/tools/icepack/bitstream.py,sha256=3tkwpZ84kQT7Rk0BlWdNEcx1KginTqNkKfyXIrcYKlY,598
210
- siliconcompiler/tools/klayout/__init__.py,sha256=0whbRoOEEbYkWouArjYqhE3P9r2K_4lJxBudgVJTuXw,8476
210
+ siliconcompiler/tools/klayout/__init__.py,sha256=t2WHhiUAltGLFkw0N7wzs0m9Hx1xZo2tGx4d3uKSusY,8670
211
211
  siliconcompiler/tools/klayout/convert_drc_db.py,sha256=ekzfQJ5Gef0Xo9KzrbXgCC4P5KpGKS4ZSfWHrM9Gmic,812
212
212
  siliconcompiler/tools/klayout/drc.py,sha256=SbCl9PxlJ0irGmUZE-Ls8asF0M8jMorcQEWhtgbMMBM,2971
213
213
  siliconcompiler/tools/klayout/export.py,sha256=cdw-VcuBIybl2cAl923QpSnPHoRSfeok0003wkJXelg,3317
214
214
  siliconcompiler/tools/klayout/operations.py,sha256=Mjolv916cGpKSOI6b5o9KMWA5SXr_odW3wMFH8UbXmA,6942
215
215
  siliconcompiler/tools/klayout/screenshot.py,sha256=fZkvjvNuV93AlbE5WXZqDoTF2mRkJY0l-8OGF7ZOv-k,1910
216
216
  siliconcompiler/tools/klayout/show.py,sha256=Lkmf90qOomLvrYELRhSSzH9F2i7cgsAfETHU2lVRxDs,1494
217
- siliconcompiler/tools/klayout/scripts/klayout_convert_drc_db.py,sha256=YCWUyIoG8sUGRo3kCoCr4y9YixjVDgAdDia6aApD6OA,5748
218
- siliconcompiler/tools/klayout/scripts/klayout_export.py,sha256=GQTkNQLfvLyAPCoJsIHucKKtws4CV9s6phkdq-IHgnk,7494
219
- siliconcompiler/tools/klayout/scripts/klayout_operations.py,sha256=VpQb7e9M5qlNsNwu_TTHOJhhqe7sGoIoUGNF_okhkBA,13221
220
- siliconcompiler/tools/klayout/scripts/klayout_show.py,sha256=gzkFTpJPyFN1_5b0j4XBF_cs1hXT0fOMjHCRbHQpAL0,10189
221
- siliconcompiler/tools/klayout/scripts/klayout_utils.py,sha256=otiMTrdMkJ_kQRxhwqqKEqTXqBNnQfeLidlfMvXZDOg,7296
217
+ siliconcompiler/tools/klayout/scripts/klayout_convert_drc_db.py,sha256=QHsaiKybpj6Uisq7wLapx5xjABA1OMvxXYBHoaopPV4,5791
218
+ siliconcompiler/tools/klayout/scripts/klayout_export.py,sha256=2kN05dejM3RbK1BzYS9fPfDpB2vxSDKnXLP9PkGp2DI,7537
219
+ siliconcompiler/tools/klayout/scripts/klayout_operations.py,sha256=whe-S6APZ9kreybanTvGGotd043NgatbFg6NEd6eka0,13264
220
+ siliconcompiler/tools/klayout/scripts/klayout_show.py,sha256=CHXhr7tNQjlx4jbKkQv0E95xYq-l0a3pVlkAaQUfGRg,10232
221
+ siliconcompiler/tools/klayout/scripts/klayout_utils.py,sha256=G0EcphgWqQU6C3ar4yhSkMhbPZY_dwD3fb8DMSYsqDU,7258
222
222
  siliconcompiler/tools/magic/__init__.py,sha256=NtsbRts5QE17ffDw08rtASAw2ZVDH0nTj3jYSb23r5o,3052
223
223
  siliconcompiler/tools/magic/drc.py,sha256=qqO7byf2OgrGXSjL-90Mx21CviEaP0dZZS9mJZjuBVY,626
224
224
  siliconcompiler/tools/magic/extspice.py,sha256=DQN9dSPdFoq_gd3-Zii9Q7k5qZkUA99ya3WoykHmomI,295
@@ -233,27 +233,28 @@ siliconcompiler/tools/netgen/lvs.py,sha256=IWgQfUEUMsBu8w7FXyjg7MQJAL1wTjXbDAD8v
233
233
  siliconcompiler/tools/netgen/scripts/sc_lvs.tcl,sha256=8zZGe5WS6LNnvNiw7zouCvOycxeb6XUvxM01Iz2n4AM,1552
234
234
  siliconcompiler/tools/nextpnr/__init__.py,sha256=IbOR4eOErXQ2fETrFZTW1LYECkp-umXad2iNBGnp7rk,274
235
235
  siliconcompiler/tools/nextpnr/apr.py,sha256=pWkV3gnz4m8Nap7HvMSJNCfYBnhEE6EtfU4fzADGMzs,2540
236
- siliconcompiler/tools/openroad/__init__.py,sha256=CUWTrSRLq4bEqTu3u3-8TYMC8LaA8j9Vy4dhgwxq0Wk,17760
237
- siliconcompiler/tools/openroad/_apr.py,sha256=vHlsaOfgGeGzWrzwe86TfgAxrrn7rhFCMZji44q5h-E,42323
236
+ siliconcompiler/tools/openroad/__init__.py,sha256=Tz8btFKq0yx0G4A6QrPQY9uf8Twf99tColXwg9jKblw,19077
237
+ siliconcompiler/tools/openroad/_apr.py,sha256=L7Mgf5L70IjGszqXAFoDcmo5zKo8BqAa7uj_HUuyI6Y,45888
238
238
  siliconcompiler/tools/openroad/antenna_repair.py,sha256=eKKGKR85RGLWZXHR8uXU5X4j-FdbUrbrjnBVbvoTM3M,1727
239
- siliconcompiler/tools/openroad/clock_tree_synthesis.py,sha256=7djwaOioqljXPxmG0n95iYyaTG2_aLgpqUexTekzLas,979
239
+ siliconcompiler/tools/openroad/clock_tree_synthesis.py,sha256=w6xXtx3y1hXnjIYk3qX46JyghGne2yCTfgRz97sACIU,1009
240
240
  siliconcompiler/tools/openroad/detailed_placement.py,sha256=dZDRwjkExZjPRRJjgxQLX3khpOR3mJe5mnJ7rc_32Os,911
241
241
  siliconcompiler/tools/openroad/detailed_route.py,sha256=al8Ib8esbCQbLByL6Xb0uyk_xIc35cDEBZwS_CXqxrQ,988
242
242
  siliconcompiler/tools/openroad/endcap_tapcell_insertion.py,sha256=Kl9-e9SLOvn-GaigdK7Ii7HM1scN5nquzhlysbVW6Wg,558
243
243
  siliconcompiler/tools/openroad/fillercell_insertion.py,sha256=80cqMQDNjD-jAX0QGWfGE-qVJnpjZPtAVxKHUkk3RM8,875
244
244
  siliconcompiler/tools/openroad/fillmetal_insertion.py,sha256=23nkzQ2MTrj5IGVtqT6f9ugyGHE1eKF8x5sFIzFVA_o,2218
245
- siliconcompiler/tools/openroad/global_placement.py,sha256=GDaXFM0B1vGwM3hVqLNGF1aLAVZrCnp1xMH_iHQ8PWo,2111
245
+ siliconcompiler/tools/openroad/global_placement.py,sha256=HXZDmc0oOyKhhOrUC9w70agABqABGoBpmJ4gRv_K_Uk,2141
246
246
  siliconcompiler/tools/openroad/global_route.py,sha256=Ffi9btkzIiK-w28AyjWK19ynWts1ucQX9DZDBeB_Kv8,1232
247
- siliconcompiler/tools/openroad/init_floorplan.py,sha256=bHtYUa3h7j3p3jZdVjNJsXdhcR1sI5f16IxEtE6RF7w,2691
247
+ siliconcompiler/tools/openroad/init_floorplan.py,sha256=gsH0Q14atsD5FON7sjvh68xHKgh3-ccNhsSydBejMMs,8307
248
248
  siliconcompiler/tools/openroad/macro_placement.py,sha256=-hCxwFywui0Rr8m5MsVRAeb8gMZnAY8iQuOFdz3b4tU,7124
249
249
  siliconcompiler/tools/openroad/metrics.py,sha256=rJc3Ea9PS6C6Qp1dOJqcIFRF3sX-FnyvYIKNRQm1I1s,771
250
250
  siliconcompiler/tools/openroad/pin_placement.py,sha256=utwYKDk0SlZVoBkPCp_40qzjHRN_7P8lVasT47T8WEw,768
251
251
  siliconcompiler/tools/openroad/power_grid.py,sha256=XSQ0hCUJfZ7JMf-qmUWa7k4z8FeSfv1taNtOfcNjZHw,2527
252
+ siliconcompiler/tools/openroad/power_grid_analysis.py,sha256=p3AZ9-yGtEC0a4jsDAeWJwcCtuUuwmXW563FHQXSHOo,7233
252
253
  siliconcompiler/tools/openroad/rcx_bench.py,sha256=lhYhqSYwLZmp73ytgHcW5RG9oH1nkT5maJ7FdA98O-Y,769
253
254
  siliconcompiler/tools/openroad/rcx_extract.py,sha256=wQtqXnwtK0-WBvZjfKHWVA7tvpp3lud3q_-YDn3c_Jo,687
254
255
  siliconcompiler/tools/openroad/rdlroute.py,sha256=d14hpYJPOlvG3cGIaZ8CYibqBxqsOMKKdiM_qWRf_Aw,1838
255
- siliconcompiler/tools/openroad/repair_design.py,sha256=rh9ETVH_S5R_IyYnnhrV8e59lWtAVr-qy1G3VGEADUM,1606
256
- siliconcompiler/tools/openroad/repair_timing.py,sha256=ezF8XBOzb7OsknWYKsRXldLNKW5oI7JweyRf8nlB2nI,1920
256
+ siliconcompiler/tools/openroad/repair_design.py,sha256=8TG7jhZXIPI-GTTJRaEj_Xb3PA8FECmw2VFtM11fPnY,1636
257
+ siliconcompiler/tools/openroad/repair_timing.py,sha256=eQc64Jvnmn4duwiTPJkrZkNrX5Ir6KxDNw2Ptrx279A,1950
257
258
  siliconcompiler/tools/openroad/screenshot.py,sha256=Smduxvuvi1HZAhjxh77VNOIYENlCVXshfIm0FnXlMxI,1192
258
259
  siliconcompiler/tools/openroad/show.py,sha256=53YN-0kdWl55WY8BBzj72Ueeun-iw0_w8su4UvB9c9U,2539
259
260
  siliconcompiler/tools/openroad/write_data.py,sha256=RY4S9oIk62ctSyOyAZWwgtCUH31zpmT9ahV9e2LmDts,3523
@@ -261,7 +262,7 @@ siliconcompiler/tools/openroad/scripts/sc_rcx.tcl,sha256=UEmadWu1jtLtFVtWWdEriWO
261
262
  siliconcompiler/tools/openroad/scripts/sc_rdlroute.tcl,sha256=uXr-W-YmHejS6v8rPyit7aoPr4vcqLwlmD-4ZzrfhVA,4223
262
263
  siliconcompiler/tools/openroad/scripts/sc_show.tcl,sha256=1pWahJDOUh1PUMLkvm1mtEH9y8q__gGgy8ar92A-iKY,1750
263
264
  siliconcompiler/tools/openroad/scripts/apr/postamble.tcl,sha256=i6hAGfQxeYc3VxcwTaisoKoX-1pez7V7EzUlp741J_4,1103
264
- siliconcompiler/tools/openroad/scripts/apr/preamble.tcl,sha256=3lJzRb2LfwjKHlvzpS6fIIxPbYokNu-FwPtxbAWl0-0,2318
265
+ siliconcompiler/tools/openroad/scripts/apr/preamble.tcl,sha256=hoJBQyolVyDadagS78I7M_wuLWKpc5SGONH8foJjdO4,2381
265
266
  siliconcompiler/tools/openroad/scripts/apr/sc_antenna_repair.tcl,sha256=lb-O3AhU678Xc1X-qm4eVnZnqMa6gJWeAMVaTv8ubBM,1462
266
267
  siliconcompiler/tools/openroad/scripts/apr/sc_clock_tree_synthesis.tcl,sha256=G31-Zqan3Bmet_TjSVHASV7GCvGaiIwMrK0oya6bL0Y,1956
267
268
  siliconcompiler/tools/openroad/scripts/apr/sc_detailed_placement.tcl,sha256=EPbnsSzBOM9L2rZ_OicRDQsPlgsS8oF-ghbxPXWdlOE,868
@@ -271,30 +272,31 @@ siliconcompiler/tools/openroad/scripts/apr/sc_fillercell_insertion.tcl,sha256=SI
271
272
  siliconcompiler/tools/openroad/scripts/apr/sc_fillmetal_insertion.tcl,sha256=6pk8zBEsOiHrhh0HiktiIDn0MnKmFh7uPKm8tI-toDo,879
272
273
  siliconcompiler/tools/openroad/scripts/apr/sc_global_placement.tcl,sha256=fPS0lTd-_8Mss7TGpp-B_ddNcFtl2SXAtXiTOxvvDZA,2446
273
274
  siliconcompiler/tools/openroad/scripts/apr/sc_global_route.tcl,sha256=1GyLe5vnacYyyxCFvJJCzNuQkVFo63pzd2-Q7V5jzgI,2029
274
- siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl,sha256=apzWt4-kS2pjRjMZ_BGlXTZSOwObcdmTYYMlHQKc4qc,10367
275
+ siliconcompiler/tools/openroad/scripts/apr/sc_init_floorplan.tcl,sha256=91VMK5za6S6kYumjvq4OUN2Rie8t0_vXtIjqLIpLPtE,11467
276
+ siliconcompiler/tools/openroad/scripts/apr/sc_irdrop.tcl,sha256=vKKJ_LZyqq0U_SERXX4-UWWTEmgaNhdjtImHmuKZ5ZI,4373
275
277
  siliconcompiler/tools/openroad/scripts/apr/sc_macro_placement.tcl,sha256=3Nw3MJTmf-QtF2OIHpJMIGUbko_a9x71hWGOzkbR77M,4326
276
278
  siliconcompiler/tools/openroad/scripts/apr/sc_metrics.tcl,sha256=SzCv0_evux_3ROliKkcXDl8__4cS4I1RPk2ufBoBOtE,476
277
279
  siliconcompiler/tools/openroad/scripts/apr/sc_pin_placement.tcl,sha256=Hn8Il8F2TH3qwF1Sn6gMhonLOCKHrYypfstpouD-Mjg,1067
278
280
  siliconcompiler/tools/openroad/scripts/apr/sc_power_grid.tcl,sha256=7_a2sj1hEXzP5nb7MJY0jZ5DR2fLN-NC1OfEBuYdeVw,3618
279
- siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl,sha256=iCp7bJTJ0ChNVLW5NXm_Zz2JQjKYDeCh2aAqqzGIwMc,1728
281
+ siliconcompiler/tools/openroad/scripts/apr/sc_repair_design.tcl,sha256=7tdUjfjYJ9mMX3SUW5vUrxPBielxPyGx17LgmNPbLMo,1717
280
282
  siliconcompiler/tools/openroad/scripts/apr/sc_repair_timing.tcl,sha256=18YF3C4K0G4DcO0k1bw1kW_5FjdoPH_EfqvrrvuZaVA,4686
281
- siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl,sha256=amFBmzog6svFZpnXXIPLuQtuDT4B6ibQgcCZrJNmqvI,3942
283
+ siliconcompiler/tools/openroad/scripts/apr/sc_write_data.tcl,sha256=wnKt9b6ht_3uuLEWH9J6DuH25VjeRiQohHMCVk6_BuE,3869
282
284
  siliconcompiler/tools/openroad/scripts/common/debugging.tcl,sha256=i4oNtC0rQq3JaFf1-oKyr_jZQyu5ZF_--zskvG0hdKg,943
283
- siliconcompiler/tools/openroad/scripts/common/procs.tcl,sha256=i8Y5Kob_l-bPx4n0yp3TttRIqIp6opUUWzg3WyrM1oE,26090
285
+ siliconcompiler/tools/openroad/scripts/common/procs.tcl,sha256=YaeE25Au68rztovytoJil9KSIttDCbWE8JS3OtURG8w,26079
284
286
  siliconcompiler/tools/openroad/scripts/common/read_input_files.tcl,sha256=ghCw5V7GzM6sNUrNVh31rHd36re-ueZWtWaqesFcQmc,1888
285
287
  siliconcompiler/tools/openroad/scripts/common/read_liberty.tcl,sha256=uGcRJO4UULQ24vdWEPPhhDLbmYrlh5zSdudUs9eQFG0,862
286
288
  siliconcompiler/tools/openroad/scripts/common/read_timing_constraints.tcl,sha256=gUYXIH_cUXBU1WnJOd6_V2sVKkoDz_3TrTGSV7IC05Q,723
287
- siliconcompiler/tools/openroad/scripts/common/reports.tcl,sha256=9w048ckePDIwReFAR0k3yBdw5z2krRXaTfDyuecyF3A,7260
289
+ siliconcompiler/tools/openroad/scripts/common/reports.tcl,sha256=i7oZJqB4zOMOXRFgCCd5RDkvF8qy8QbrrvmS-Vwo0W0,7249
288
290
  siliconcompiler/tools/openroad/scripts/common/screenshot.tcl,sha256=8_1_-YFW4Q9-8hUdj-QcAcFImQ9Q6ByFyQEZYkEIjxg,333
289
291
  siliconcompiler/tools/openroad/scripts/common/write_data.tcl,sha256=xFFgR6mCpQEy8ATfSz1kUFr2BBnaPsv4cSHnWh7JqC8,100
290
292
  siliconcompiler/tools/openroad/scripts/common/write_data_physical.tcl,sha256=0djFSkFDZF8oEqbAcZcL_nMM1ustsMXaf0TGwznQBWM,139
291
293
  siliconcompiler/tools/openroad/scripts/common/write_data_timing.tcl,sha256=_Axy9V9r0xWU0xLVwMdgkPUF6-C3cVmtE8J-j0OIzII,40
292
294
  siliconcompiler/tools/openroad/scripts/common/write_images.tcl,sha256=c2-346XfqJaMQjgDsBeJSqSKGZld4aG6_cZHTSwe0EQ,13626
293
- siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl,sha256=qZclG3TzDAWrwSQ23Q9SI0kUYNhIAOaPp6HoO1WLKTg,698
295
+ siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_bench.tcl,sha256=eEYI8U26LYGR-zIaYPKCxg1IzohudquhpmuWYkTA4-Q,664
294
296
  siliconcompiler/tools/openroad/scripts/rcx/sc_rcx_extract.tcl,sha256=1mPpVpBAX7uiBESb1rVBrYk-IzCkd-GaH2ghFSuguMo,487
295
297
  siliconcompiler/tools/openroad/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
298
  siliconcompiler/tools/openroad/templates/pex.tcl,sha256=t-54kEYkIFkC5hIiMWw6IZD9guRwG90zT4Mt9erYUnY,299
297
- siliconcompiler/tools/opensta/__init__.py,sha256=lNxpwoTv09uH6Syz84wsaykhQDJp-q_lIA-OFPuKPZ8,3139
299
+ siliconcompiler/tools/opensta/__init__.py,sha256=pIXOzzUQoTR5wpjD0BPt63lhxS2mvQqWAtXT1GNVFC8,3146
298
300
  siliconcompiler/tools/opensta/check_library.py,sha256=MmMgJAwDTAv7ob93pr7YBUjJa7UiQqBfFVit7a3vwiY,342
299
301
  siliconcompiler/tools/opensta/report_libraries.py,sha256=Mn5O2LYKhOh9DVidGzJaTi4lEDAxx4x8YeCjv2IXX4Q,313
300
302
  siliconcompiler/tools/opensta/timing.py,sha256=GPuuXG2rkg6R2BS9M9qpkMqtVYj4dp17_6jhVy4sxUI,10928
@@ -302,7 +304,7 @@ siliconcompiler/tools/opensta/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
302
304
  siliconcompiler/tools/opensta/scripts/sc_check_library.tcl,sha256=1VLKsPCkY8joYOJl7WQ1iX8KZnSp18Z2n7rbk7Wqvz0,8783
303
305
  siliconcompiler/tools/opensta/scripts/sc_procs.tcl,sha256=JHOn1pn9VqaZY_PrGMstEfe6YzlbSHgnV-8KZ8kZMHY,1490
304
306
  siliconcompiler/tools/opensta/scripts/sc_report_libraries.tcl,sha256=M5zfz7xGYmQYnNM-Y-T18SUXN38YkO4M1gLroQ0m58I,2608
305
- siliconcompiler/tools/opensta/scripts/sc_timing.tcl,sha256=rhx3_-CTKHfcZCWEcCzUt8mr5n5Jr8b_h_83O7LeRcI,10892
307
+ siliconcompiler/tools/opensta/scripts/sc_timing.tcl,sha256=caaNlYJufoHfpE3KrgSzYtGxTcRsai7gGHFVy89InvI,10995
306
308
  siliconcompiler/tools/slang/__init__.py,sha256=ZGxjqXIUnhZs5vBp5ZJVeCKqsGSNwyAN9hKFnIJc2cA,8270
307
309
  siliconcompiler/tools/slang/elaborate.py,sha256=9uqbMGZyOegKKXklyz9eHWzjq7dWgPu58yiCvXRMTlc,3990
308
310
  siliconcompiler/tools/slang/lint.py,sha256=BxDBZjdgegiPNKhFctTxZQlN_ce4cAm7ATThBdohlLs,562
@@ -323,12 +325,12 @@ siliconcompiler/tools/vivado/place.py,sha256=3ovfmKlwzotTTI39R_qmDW8e1T2ouKf1dPT
323
325
  siliconcompiler/tools/vivado/route.py,sha256=zzgaBj1lu28ePO284lUv8yaJNgYlKk2VmtQSYmad87I,359
324
326
  siliconcompiler/tools/vivado/syn_fpga.py,sha256=c6DjcmGSEcHMrLflNrv8ESIRwWovttMGknJvbjTS7nk,711
325
327
  siliconcompiler/tools/vivado/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
326
- siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl,sha256=HH7n3ga3w5KtVSiSrqXpf8ZoIdBL92TXnfCKHtt-GxM,104
327
- siliconcompiler/tools/vivado/scripts/sc_place.tcl,sha256=jK_uF5VFHQ2G07FQho8QOg5PWbGiJ3H-0MMAi1q6Vhg,58
328
- siliconcompiler/tools/vivado/scripts/sc_route.tcl,sha256=DmjKX9KoVtKaxwxsBRGCAK4iuuxcyi1s09hWXeQqS5Y,91
328
+ siliconcompiler/tools/vivado/scripts/sc_bitstream.tcl,sha256=xJrZK9iiGkPz0nTJMKRFBEyCURsbAwkv-eZOeNgl7ZQ,380
329
+ siliconcompiler/tools/vivado/scripts/sc_place.tcl,sha256=QwxhxL69lCrReqwx_lnHMqfszP7wFzBdJH7bLTEMEIk,334
330
+ siliconcompiler/tools/vivado/scripts/sc_route.tcl,sha256=rdKwlSkpTEh_c95GnSaywfeh14sddBKjXaKZ3l-rqLA,367
329
331
  siliconcompiler/tools/vivado/scripts/sc_run.tcl,sha256=FwW6-_EdryI3eZ7lFKSRK3oVIk5Y51B9tRVSSlDEPrY,1052
330
- siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl,sha256=G3lQb3SyaHaQDRLoA7z8i6pA4YY5YCG0HNaJ1qP3f3g,984
331
- siliconcompiler/tools/vpr/__init__.py,sha256=HAr9Rw52ICNkkloRoWU1MwkqVG34Xdtb55vNs-MqUqk,21852
332
+ siliconcompiler/tools/vivado/scripts/sc_syn_fpga.tcl,sha256=Eyc1zxdmm0K0g8efee3qbWhhXs61XwIHcg6-0l28V4Q,1259
333
+ siliconcompiler/tools/vpr/__init__.py,sha256=n55Cghyzlw_gQ7gdSdAh1hHMXYqrbUcs-vfV_hKtl10,23014
332
334
  siliconcompiler/tools/vpr/_json_constraint.py,sha256=KcNcOQq7LZDiOXmQTwcGKczljs-7ugr-b8CNGHilnRc,2251
333
335
  siliconcompiler/tools/vpr/_xml_constraint.py,sha256=f7AeAtu4gDV08hPuorjRcniCyM5CLxJ6e8NgTbE79tw,2995
334
336
  siliconcompiler/tools/vpr/place.py,sha256=2D_Uc_-rRLIBABDUobXTFLkAktjuchVpSLsC2hFtgxU,3175
@@ -342,19 +344,19 @@ siliconcompiler/tools/xyce/simulate.py,sha256=XzFcbmn9-BSTE9sqyPyL3WVbY6zE_3kjFx
342
344
  siliconcompiler/tools/yosys/__init__.py,sha256=prf36_x6A61lMnLXM3FRzlRZrJqEEMv-C7hyEi1b2Oo,18451
343
345
  siliconcompiler/tools/yosys/lec_asic.py,sha256=tA2N_nU3hkgv6DpJv68nEg_IJgLXV-9Lm1GE3HjHyFE,1593
344
346
  siliconcompiler/tools/yosys/prepareLib.py,sha256=8ppIR-o_EJiNZrpGg_sewJ4qyjtFXre9-iwo-a5Ev_g,2438
345
- siliconcompiler/tools/yosys/syn_asic.py,sha256=os-xUull6pnIjZwrIWYMuu1ffVyCrfy6XjORSN2y57M,19034
346
- siliconcompiler/tools/yosys/syn_fpga.py,sha256=_6z9NWciUAcagQXTa9dzRetjRr1Dkxvv8odw6ECSPYg,3577
347
+ siliconcompiler/tools/yosys/syn_asic.py,sha256=wk6zpAdKLgRljsr_k-ZT25Tvoao1J-nBNdPvC_Cmj1g,20882
348
+ siliconcompiler/tools/yosys/syn_fpga.py,sha256=NT1StMpm8zOGELeGxXSZS7VDz6P1KzXxoaxNN9cqwFM,3859
347
349
  siliconcompiler/tools/yosys/scripts/procs.tcl,sha256=oJZJrcMHUyBLEKlUEd3PwwNBIDSCUIZlpfjsAuM2WUQ,4607
348
350
  siliconcompiler/tools/yosys/scripts/sc_lec.tcl,sha256=K2gsSg2cs1Dx3g4MP1EbkSv-ZkYDnU4iSHepj20TXSE,2996
349
- siliconcompiler/tools/yosys/scripts/sc_screenshot.tcl,sha256=-7Bb-HhJsZjSdSIlYCTZnZgigwBoN_1FNik9Ba_flos,2853
350
- siliconcompiler/tools/yosys/scripts/sc_synth_asic.tcl,sha256=zbVJ_3AEt6LX8q4ARsOdXU3Ij1L-T1wORn0U1h0L-ak,15107
351
- siliconcompiler/tools/yosys/scripts/sc_synth_fpga.tcl,sha256=ZTV6SoxUnc8EcRTvPOvUq35ZbGERB65KYAwdNXOSnOU,6467
351
+ siliconcompiler/tools/yosys/scripts/sc_screenshot.tcl,sha256=Ss1c4ebLHy7QU1qX5Dn3OsDUOUVXmW9kvkMbr5TcMMw,2842
352
+ siliconcompiler/tools/yosys/scripts/sc_synth_asic.tcl,sha256=jc7H9wm8g8CJaKJhV0Mcbz5J4iyLC0i_SRXIJVOVQgk,16004
353
+ siliconcompiler/tools/yosys/scripts/sc_synth_fpga.tcl,sha256=-OldBAFM7LqqiTKyH7pCJ3JfH0lcGT3xAZn-HnrRSqU,6669
352
354
  siliconcompiler/tools/yosys/scripts/syn_strategies.tcl,sha256=YJ5bXCdUNDZZ4EY4wBGS-9m0EeNlANBIO9e5a_6A0KA,5329
353
355
  siliconcompiler/tools/yosys/techmaps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
356
  siliconcompiler/tools/yosys/techmaps/lcu_kogge_stone.v,sha256=M4T-ygiKmlsprl5eGGLaV5w6HVqlEepn0wlUDmOkapg,773
355
357
  siliconcompiler/tools/yosys/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
356
358
  siliconcompiler/tools/yosys/templates/abc.const,sha256=TAq9ThdLMYCJGrtToEU0gWcLuEtjE4Gk8huBbTm1v-I,116
357
- siliconcompiler/toolscripts/_tools.json,sha256=3ODm2JNw76BJfLN-XUZ1WMpLOW8gaEkFKCvqem5rW2s,5094
359
+ siliconcompiler/toolscripts/_tools.json,sha256=PLlv0wQwGkr8h1jk7M-Zy89Hb9rdjeUwRDl6c1ogiwI,5094
358
360
  siliconcompiler/toolscripts/_tools.py,sha256=P30KY_xbbjl8eHGsPAxDcAzWvJJpiL07ZfGZZDQbdR8,7174
359
361
  siliconcompiler/toolscripts/rhel8/install-chisel.sh,sha256=RJ7BiZhsXBLTgQhHUcRZmHqhKB6syVaC2nvVoGrIXOI,709
360
362
  siliconcompiler/toolscripts/rhel8/install-icarus.sh,sha256=EW7308IUGYOx7A22s7s0tNq90nHhrpHHUMrx3cd9lMM,962
@@ -464,17 +466,18 @@ siliconcompiler/toolscripts/ubuntu24/install-xyce.sh,sha256=AV_4rEBN3iYIlBS0SUVW
464
466
  siliconcompiler/toolscripts/ubuntu24/install-yosys-moosic.sh,sha256=UAmqse5nQtInjsz7jSqtsuC7FPhPLBYMDjl8Lf9F_dA,571
465
467
  siliconcompiler/toolscripts/ubuntu24/install-yosys-slang.sh,sha256=0cYzZ5HNPYubCYgMq1u2oUUUDi5maXp1Ygf1KNXe0vY,727
466
468
  siliconcompiler/toolscripts/ubuntu24/install-yosys.sh,sha256=0ZKbB8f7MrNd_u8IVavYrZVoJougO_R_bVJbTeXP_Zo,943
467
- siliconcompiler/utils/__init__.py,sha256=VNXipt7z8SJdLPK5rB1l2JFcw_QRM0aRyxw44jLFDgk,13009
468
- siliconcompiler/utils/curation.py,sha256=rljSgOaWNVrs2hLCTKz1Z7ErmiPYXdmYqKNzQJIPjZ0,7826
469
- siliconcompiler/utils/issue.py,sha256=FE3SvA-ikT-DRvCROE9CokgDRcUGVwwJKABMJaqt-oc,10860
469
+ siliconcompiler/utils/__init__.py,sha256=bGyb85ncMnc4NpKR4y3g4I6WX9mQPhFw6l_AlSpYCg4,19444
470
+ siliconcompiler/utils/curation.py,sha256=xVozvS1w77hLUomeVyWKUWxD5LJ7BZPjpd35D7zoY50,9228
471
+ siliconcompiler/utils/issue.py,sha256=R6_HvVgp5uPQ72QKwAM8CQfDfKs3IKutykisq8Ht5vs,11029
470
472
  siliconcompiler/utils/logging.py,sha256=V3l07YocXPfD_0QbBDiW11bnnF4AWQMEmFvJfQscJnI,4667
471
- siliconcompiler/utils/multiprocessing.py,sha256=u8hf1EX-0dWheNoHJ0LNfnQc4dqLsccJAbimVnXhvGw,10216
472
- siliconcompiler/utils/paths.py,sha256=_7UqxNzUnRFtdZAZSpI75lqs22YnKJBXJzkpoWbUIcU,4152
473
+ siliconcompiler/utils/multiprocessing.py,sha256=-J2DLVJ7uDeRVuF9SyBHsCm_vVM9WTW4fXEndW78NsM,11243
474
+ siliconcompiler/utils/paths.py,sha256=322TbbEaU5wM-06Xo-E8IlzMNV3DRi4GKDwg2EgTry4,4813
475
+ siliconcompiler/utils/settings.py,sha256=UHrxUqCB-_mIGggiYFqvx78eS2cHsHaezogMPzZOCaQ,4746
473
476
  siliconcompiler/utils/showtools.py,sha256=ZWD2frgt0t2Eh8S9Hl3CwGEa1cnNiQx-06pWtyDTiic,1375
474
477
  siliconcompiler/utils/units.py,sha256=mppo7T5xI2P2S7SweE_qsOuoTc7RezVX61G2whCzpV4,6261
475
- siliconcompiler-0.35.3.dist-info/licenses/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
476
- siliconcompiler-0.35.3.dist-info/METADATA,sha256=4zk1eBcCNpNe_D56ebakCkq_3pMji90p9kF2LEz_Ipw,11251
477
- siliconcompiler-0.35.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
478
- siliconcompiler-0.35.3.dist-info/entry_points.txt,sha256=5I-z7cmFNPRpD_x1dMQnm-oLwTPOMURxD5frvUM0GE8,832
479
- siliconcompiler-0.35.3.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
480
- siliconcompiler-0.35.3.dist-info/RECORD,,
478
+ siliconcompiler-0.35.4.dist-info/licenses/LICENSE,sha256=lbLR6sRo_CYJOf7SVgHi-U6CZdD8esESEZE5TZazOQE,10766
479
+ siliconcompiler-0.35.4.dist-info/METADATA,sha256=T6zMN9O35Xp9sSeV1dCdGJqFiUasxtdBACex4nA7-B4,11302
480
+ siliconcompiler-0.35.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
481
+ siliconcompiler-0.35.4.dist-info/entry_points.txt,sha256=5I-z7cmFNPRpD_x1dMQnm-oLwTPOMURxD5frvUM0GE8,832
482
+ siliconcompiler-0.35.4.dist-info/top_level.txt,sha256=H8TOYhnEUZAV1RJTa8JRtjLIebwHzkQUhA2wkNU2O6M,16
483
+ siliconcompiler-0.35.4.dist-info/RECORD,,