librelane 2.4.0.dev9__py3-none-any.whl → 3.0.0.dev23__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.
Potentially problematic release.
This version of librelane might be problematic. Click here for more details.
- librelane/__main__.py +12 -15
- librelane/common/__init__.py +1 -1
- librelane/common/drc.py +88 -7
- librelane/common/misc.py +6 -6
- librelane/common/toolbox.py +1 -1
- librelane/config/config.py +5 -1
- librelane/config/flow.py +51 -66
- librelane/config/pdk_compat.py +79 -2
- librelane/config/preprocessor.py +1 -1
- librelane/config/variable.py +2 -2
- librelane/flows/classic.py +1 -0
- librelane/flows/flow.py +3 -6
- librelane/flows/sequential.py +85 -40
- librelane/plugins.py +1 -1
- librelane/scripts/magic/common/read.tcl +2 -2
- librelane/scripts/magic/gds/extras_mag.tcl +2 -2
- librelane/scripts/odbpy/diodes.py +2 -2
- librelane/scripts/openroad/common/dpl.tcl +1 -1
- librelane/scripts/openroad/common/grt.tcl +3 -3
- librelane/scripts/openroad/common/io.tcl +163 -45
- librelane/scripts/openroad/common/resizer.tcl +1 -40
- librelane/scripts/openroad/common/set_global_connections.tcl +2 -2
- librelane/scripts/openroad/common/set_power_nets.tcl +1 -1
- librelane/scripts/openroad/common/set_rc.tcl +159 -40
- librelane/scripts/openroad/cts.tcl +37 -6
- librelane/scripts/openroad/cut_rows.tcl +19 -4
- librelane/scripts/openroad/drt.tcl +59 -8
- librelane/scripts/openroad/dump_rc.tcl +105 -0
- librelane/scripts/openroad/fill.tcl +2 -2
- librelane/scripts/openroad/floorplan.tcl +5 -3
- librelane/scripts/openroad/gpl.tcl +7 -8
- librelane/scripts/openroad/insert_buffer.tcl +2 -2
- librelane/scripts/openroad/ioplacer.tcl +1 -2
- librelane/scripts/openroad/irdrop.tcl +3 -3
- librelane/scripts/openroad/pdn.tcl +17 -18
- librelane/scripts/openroad/rcx.tcl +1 -1
- librelane/scripts/openroad/repair_design.tcl +14 -7
- librelane/scripts/openroad/repair_design_postgrt.tcl +13 -6
- librelane/scripts/openroad/rsz_timing_postcts.tcl +13 -12
- librelane/scripts/openroad/rsz_timing_postgrt.tcl +13 -12
- librelane/scripts/openroad/sta/check_macro_instances.tcl +1 -1
- librelane/scripts/openroad/tapcell.tcl +13 -6
- librelane/scripts/openroad/ungpl.tcl +23 -0
- librelane/state/__init__.py +1 -1
- librelane/state/design_format.py +194 -142
- librelane/state/state.py +20 -21
- librelane/steps/checker.py +12 -1
- librelane/steps/common_variables.py +4 -4
- librelane/steps/cvc_rv.py +1 -1
- librelane/steps/klayout.py +14 -6
- librelane/steps/magic.py +18 -2
- librelane/steps/misc.py +1 -1
- librelane/steps/odb.py +50 -31
- librelane/steps/openroad.py +455 -128
- librelane/steps/pyosys.py +20 -5
- librelane/steps/step.py +17 -20
- librelane/steps/tclstep.py +9 -7
- librelane/steps/yosys.py +1 -1
- {librelane-2.4.0.dev9.dist-info → librelane-3.0.0.dev23.dist-info}/METADATA +1 -1
- {librelane-2.4.0.dev9.dist-info → librelane-3.0.0.dev23.dist-info}/RECORD +62 -60
- {librelane-2.4.0.dev9.dist-info → librelane-3.0.0.dev23.dist-info}/WHEEL +0 -0
- {librelane-2.4.0.dev9.dist-info → librelane-3.0.0.dev23.dist-info}/entry_points.txt +0 -0
librelane/steps/pyosys.py
CHANGED
|
@@ -135,6 +135,13 @@ verilog_rtl_cfg_vars = [
|
|
|
135
135
|
),
|
|
136
136
|
]
|
|
137
137
|
|
|
138
|
+
DesignFormat(
|
|
139
|
+
"json_h",
|
|
140
|
+
"h.json",
|
|
141
|
+
"Design JSON Header File",
|
|
142
|
+
alts=["JSON_HEADER"],
|
|
143
|
+
).register()
|
|
144
|
+
|
|
138
145
|
|
|
139
146
|
class PyosysStep(Step):
|
|
140
147
|
config_vars = [
|
|
@@ -201,6 +208,12 @@ class PyosysStep(Step):
|
|
|
201
208
|
"Which log level for Yosys. At WARNING or higher, the initialization splash is also disabled.",
|
|
202
209
|
default="ALL",
|
|
203
210
|
),
|
|
211
|
+
Variable(
|
|
212
|
+
"SYNTH_CORNER",
|
|
213
|
+
Optional[str],
|
|
214
|
+
"A fully qualified IPVT corner to use during synthesis. If unspecified, the value for `DEFAULT_CORNER` from the PDK will be used.",
|
|
215
|
+
pdk=True,
|
|
216
|
+
),
|
|
204
217
|
]
|
|
205
218
|
|
|
206
219
|
@abstractmethod
|
|
@@ -244,7 +257,9 @@ class VerilogStep(PyosysStep):
|
|
|
244
257
|
cmd = super().get_command(state_in)
|
|
245
258
|
|
|
246
259
|
blackbox_models = []
|
|
247
|
-
scl_lib_list = self.toolbox.filter_views(
|
|
260
|
+
scl_lib_list = self.toolbox.filter_views(
|
|
261
|
+
self.config, self.config["LIB"], self.config.get("SYNTH_CORNER")
|
|
262
|
+
)
|
|
248
263
|
if self.power_defines and self.config["CELL_VERILOG_MODELS"] is not None:
|
|
249
264
|
blackbox_models.extend(
|
|
250
265
|
[
|
|
@@ -319,14 +334,14 @@ class JsonHeader(VerilogStep):
|
|
|
319
334
|
def get_command(self, state_in: State) -> List[str]:
|
|
320
335
|
out_file = os.path.join(
|
|
321
336
|
self.step_dir,
|
|
322
|
-
f"{self.config['DESIGN_NAME']}.{DesignFormat.JSON_HEADER.
|
|
337
|
+
f"{self.config['DESIGN_NAME']}.{DesignFormat.JSON_HEADER.extension}",
|
|
323
338
|
)
|
|
324
339
|
return super().get_command(state_in) + ["--output", out_file]
|
|
325
340
|
|
|
326
341
|
def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
|
|
327
342
|
out_file = os.path.join(
|
|
328
343
|
self.step_dir,
|
|
329
|
-
f"{self.config['DESIGN_NAME']}.{DesignFormat.JSON_HEADER.
|
|
344
|
+
f"{self.config['DESIGN_NAME']}.{DesignFormat.JSON_HEADER.extension}",
|
|
330
345
|
)
|
|
331
346
|
views_updates, metrics_updates = super().run(state_in, **kwargs)
|
|
332
347
|
views_updates[DesignFormat.JSON_HEADER] = Path(out_file)
|
|
@@ -495,7 +510,7 @@ class SynthesisCommon(VerilogStep):
|
|
|
495
510
|
def get_command(self, state_in: State) -> List[str]:
|
|
496
511
|
out_file = os.path.join(
|
|
497
512
|
self.step_dir,
|
|
498
|
-
f"{self.config['DESIGN_NAME']}.{DesignFormat.NETLIST.
|
|
513
|
+
f"{self.config['DESIGN_NAME']}.{DesignFormat.NETLIST.extension}",
|
|
499
514
|
)
|
|
500
515
|
cmd = super().get_command(state_in)
|
|
501
516
|
if self.config["USE_LIGHTER"]:
|
|
@@ -520,7 +535,7 @@ class SynthesisCommon(VerilogStep):
|
|
|
520
535
|
def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
|
|
521
536
|
out_file = os.path.join(
|
|
522
537
|
self.step_dir,
|
|
523
|
-
f"{self.config['DESIGN_NAME']}.{DesignFormat.NETLIST.
|
|
538
|
+
f"{self.config['DESIGN_NAME']}.{DesignFormat.NETLIST.extension}",
|
|
524
539
|
)
|
|
525
540
|
|
|
526
541
|
view_updates, metric_updates = super().run(state_in, **kwargs)
|
librelane/steps/step.py
CHANGED
|
@@ -53,13 +53,7 @@ from ..config import (
|
|
|
53
53
|
Variable,
|
|
54
54
|
universal_flow_config_variables,
|
|
55
55
|
)
|
|
56
|
-
from ..state import
|
|
57
|
-
DesignFormat,
|
|
58
|
-
DesignFormatObject,
|
|
59
|
-
State,
|
|
60
|
-
InvalidState,
|
|
61
|
-
StateElement,
|
|
62
|
-
)
|
|
56
|
+
from ..state import DesignFormat, State, InvalidState, StateElement
|
|
63
57
|
from ..common import (
|
|
64
58
|
GenericDict,
|
|
65
59
|
GenericImmutableDict,
|
|
@@ -678,7 +672,7 @@ class Step(ABC):
|
|
|
678
672
|
raise StepException(
|
|
679
673
|
f"Output '{output}' is not a valid DesignFormat enum object."
|
|
680
674
|
)
|
|
681
|
-
output_str = f"{output.
|
|
675
|
+
output_str = f"{output.full_name} (.{output.extension})"
|
|
682
676
|
result += f"| {input_str} | {output_str} |\n"
|
|
683
677
|
|
|
684
678
|
if len(Self.config_vars):
|
|
@@ -742,9 +736,9 @@ class Step(ABC):
|
|
|
742
736
|
continue
|
|
743
737
|
|
|
744
738
|
if state_in.get(id) != value:
|
|
745
|
-
df = DesignFormat.
|
|
739
|
+
df = DesignFormat.factory.get(id)
|
|
746
740
|
assert df is not None
|
|
747
|
-
views_updated.append(df.
|
|
741
|
+
views_updated.append(df.full_name)
|
|
748
742
|
|
|
749
743
|
if len(views_updated):
|
|
750
744
|
result += "#### Views updated:\n"
|
|
@@ -1005,14 +999,14 @@ class Step(ABC):
|
|
|
1005
999
|
|
|
1006
1000
|
# 2. State
|
|
1007
1001
|
state_in: GenericDict[str, Any] = self.state_in.result().copy_mut()
|
|
1008
|
-
for
|
|
1009
|
-
|
|
1002
|
+
for format_id in state_in:
|
|
1003
|
+
format = DesignFormat.factory.get(format_id)
|
|
1010
1004
|
if format not in self.__class__.inputs and not (
|
|
1011
1005
|
format == DesignFormat.DEF
|
|
1012
1006
|
and DesignFormat.ODB
|
|
1013
1007
|
in self.__class__.inputs # hack to write tests a bit more easily
|
|
1014
1008
|
):
|
|
1015
|
-
state_in[format.
|
|
1009
|
+
state_in[format.id] = None
|
|
1016
1010
|
state_in["metrics"] = self.state_in.result().metrics.copy_mut()
|
|
1017
1011
|
dumpable_state = copy_recursive(state_in, translator=visitor)
|
|
1018
1012
|
state_path = os.path.join(target_dir, "state_in.json")
|
|
@@ -1149,10 +1143,10 @@ class Step(ABC):
|
|
|
1149
1143
|
self.start_time = time.time()
|
|
1150
1144
|
|
|
1151
1145
|
for input in self.inputs:
|
|
1152
|
-
value = state_in_result
|
|
1153
|
-
if value is None and not input.
|
|
1146
|
+
value = state_in_result.get_by_df(input)
|
|
1147
|
+
if value is None and not input.optional:
|
|
1154
1148
|
raise StepException(
|
|
1155
|
-
f"{type(self).__name__}: missing required input '{input.
|
|
1149
|
+
f"{type(self).__name__}: missing required input '{input.id}'"
|
|
1156
1150
|
) from None
|
|
1157
1151
|
|
|
1158
1152
|
try:
|
|
@@ -1324,9 +1318,12 @@ class Step(ABC):
|
|
|
1324
1318
|
link_start = f"[link=file://{os.path.abspath(log_path)}]"
|
|
1325
1319
|
link_end = "[/link]"
|
|
1326
1320
|
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1321
|
+
msg = f"Logging subprocess to [repr.filename]{link_start}'{os.path.relpath(log_path)}'{link_end}[/repr.filename]…"
|
|
1322
|
+
if logging.options.get_condensed_mode():
|
|
1323
|
+
info(msg)
|
|
1324
|
+
else:
|
|
1325
|
+
verbose(msg)
|
|
1326
|
+
|
|
1330
1327
|
process = _popen_callable(
|
|
1331
1328
|
cmd_str,
|
|
1332
1329
|
encoding="utf8",
|
|
@@ -1546,7 +1543,7 @@ class CompositeStep(Step):
|
|
|
1546
1543
|
for key in state:
|
|
1547
1544
|
if (
|
|
1548
1545
|
state_in.get(key) != state.get(key)
|
|
1549
|
-
and DesignFormat.
|
|
1546
|
+
and DesignFormat.factory.get(key) in self.outputs
|
|
1550
1547
|
):
|
|
1551
1548
|
views_updates[key] = state[key]
|
|
1552
1549
|
for key in state.metrics:
|
librelane/steps/tclstep.py
CHANGED
|
@@ -88,7 +88,9 @@ class TclStep(Step):
|
|
|
88
88
|
return value.name
|
|
89
89
|
elif isinstance(value, bool):
|
|
90
90
|
return "1" if value else "0"
|
|
91
|
-
elif isinstance(value, Decimal)
|
|
91
|
+
elif isinstance(value, Decimal):
|
|
92
|
+
return str(value) # f"{value:e}"
|
|
93
|
+
elif isinstance(value, int):
|
|
92
94
|
return str(value)
|
|
93
95
|
else:
|
|
94
96
|
return str(value)
|
|
@@ -158,15 +160,15 @@ class TclStep(Step):
|
|
|
158
160
|
env[element] = TclStep.value_to_tcl(value)
|
|
159
161
|
|
|
160
162
|
for input in self.inputs:
|
|
161
|
-
key = f"CURRENT_{input.
|
|
163
|
+
key = f"CURRENT_{input.id.upper()}"
|
|
162
164
|
env[key] = TclStep.value_to_tcl(state[input])
|
|
163
165
|
|
|
164
166
|
for output in self.outputs:
|
|
165
|
-
if output.
|
|
167
|
+
if output.multiple:
|
|
166
168
|
# Too step-specific.
|
|
167
169
|
continue
|
|
168
|
-
filename = f"{self.config['DESIGN_NAME']}.{output.
|
|
169
|
-
env[f"SAVE_{output.
|
|
170
|
+
filename = f"{self.config['DESIGN_NAME']}.{output.extension}"
|
|
171
|
+
env[f"SAVE_{output.id.upper()}"] = os.path.join(self.step_dir, filename)
|
|
170
172
|
|
|
171
173
|
return env
|
|
172
174
|
|
|
@@ -210,10 +212,10 @@ class TclStep(Step):
|
|
|
210
212
|
|
|
211
213
|
overrides: ViewsUpdate = {}
|
|
212
214
|
for output in self.outputs:
|
|
213
|
-
if output.
|
|
215
|
+
if output.multiple:
|
|
214
216
|
# Too step-specific.
|
|
215
217
|
continue
|
|
216
|
-
path = Path(env[f"SAVE_{output.
|
|
218
|
+
path = Path(env[f"SAVE_{output.id.upper()}"])
|
|
217
219
|
if not path.exists():
|
|
218
220
|
continue
|
|
219
221
|
overrides[output] = path
|
librelane/steps/yosys.py
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
librelane/__init__.py,sha256=EMpoZrRmS_wsweKjhyAg52OXCK7HWQ8o8CVrYaX4ub0,1220
|
|
2
|
-
librelane/__main__.py,sha256=
|
|
2
|
+
librelane/__main__.py,sha256=Zq2h2ZTQqA0T7qpGFELJ1bzVQnv-951nnhJ0-9WzNaM,14541
|
|
3
3
|
librelane/__version__.py,sha256=dbE4stCACDmIoxgKksesAkTa-_hi5dW6nPLWw9Pfq3Q,1486
|
|
4
|
-
librelane/common/__init__.py,sha256=
|
|
4
|
+
librelane/common/__init__.py,sha256=WTSw8kJaR6JJsi1FLUbKAekE7qmXLTYEeoInLRXQdEc,1529
|
|
5
5
|
librelane/common/cli.py,sha256=xi48GBGHRsYrLGwx40ARwpykHx7GnuHbJjHxjOwtZ5Y,2349
|
|
6
|
-
librelane/common/drc.py,sha256=
|
|
6
|
+
librelane/common/drc.py,sha256=3hFkUZir0d5D_uMO8-JuaJpcd3hAp9ex_teBc16XkNY,12774
|
|
7
7
|
librelane/common/generic_dict.py,sha256=ASa5wtVcLuGlsBqGfLxLYXrYksqQB62iHljV04plIqI,10010
|
|
8
8
|
librelane/common/metrics/__init__.py,sha256=nzdmeia1fN4CDPT604v-OHaBVydz-M4hz232g-jxJ6M,1521
|
|
9
9
|
librelane/common/metrics/__main__.py,sha256=VfoOHFkGXtei6GLkPUD42X6io8QKFCHhxLMWOXPz_5E,12473
|
|
10
10
|
librelane/common/metrics/library.py,sha256=CG7rubLdjuCQL9-9bzAC-64hf-KlH-iu_Fg0oKuesqs,7373
|
|
11
11
|
librelane/common/metrics/metric.py,sha256=h3Xd26z5M80IJgVmmrBTjKcdGLb4I0wyjM-H4jdyi_0,6990
|
|
12
12
|
librelane/common/metrics/util.py,sha256=Bl_9znlot7-Os2VigYLSmMf56aAkGdv3evWz9vfK7K4,9344
|
|
13
|
-
librelane/common/misc.py,sha256=
|
|
13
|
+
librelane/common/misc.py,sha256=HnkvnObQzPvPgzDmUhm8lG4eXvTb4vFOcGIPGAnmXj8,12408
|
|
14
14
|
librelane/common/ring_buffer.py,sha256=DGFen9y0JOmiL7E27tmzDTVSJKZtV-waF9hl5Rz9uek,1898
|
|
15
15
|
librelane/common/tcl.py,sha256=G0__oR6azVCS2Aue87zboba7vAR7v-SVQeUbqfviiDA,2709
|
|
16
|
-
librelane/common/toolbox.py,sha256=
|
|
16
|
+
librelane/common/toolbox.py,sha256=ijR__rVqQ_nJtfm34H-VdSCIeArKns7lVAc1TcTUSsQ,20975
|
|
17
17
|
librelane/common/tpe.py,sha256=Txj0fVscXSDJTYmEKZ2ESFHOeqrhHnaPPiwWBgyx4g8,1285
|
|
18
18
|
librelane/common/types.py,sha256=oclAQkeluz_iopI_28clHzxvac7gN5moT8Rzipy5mgM,3468
|
|
19
19
|
librelane/config/__init__.py,sha256=lbJmD5CbrrrnaNdIUWqFIK488ea0uyej3iExh-9mkgE,1107
|
|
20
20
|
librelane/config/__main__.py,sha256=6KSXxM4qNE2yJhizUsF1kdMsY1kY7hLHoPoz50POsS8,4532
|
|
21
|
-
librelane/config/config.py,sha256=
|
|
22
|
-
librelane/config/flow.py,sha256=
|
|
23
|
-
librelane/config/pdk_compat.py,sha256=
|
|
24
|
-
librelane/config/preprocessor.py,sha256=
|
|
21
|
+
librelane/config/config.py,sha256=bAxB0qpw95YoLGmMjvxAwrX1hcpHRvNhH7wjQdyW-DE,35031
|
|
22
|
+
librelane/config/flow.py,sha256=RS8uspcrepl8GT5SsWrBQ-kmssO4c15_lrc2nBPVK5M,16482
|
|
23
|
+
librelane/config/pdk_compat.py,sha256=ofqYuD-MgTcfvPVXpGJo8H1GKzCvN6sxHsK_OqCVXa8,12870
|
|
24
|
+
librelane/config/preprocessor.py,sha256=ATi29SHz0_OBq1IqUkGxvhHUDKB5z5jO0KqvoQXg8R8,14913
|
|
25
25
|
librelane/config/removals.py,sha256=lJ0xpkCqnZAdA_ug4yq0NDjRBFuw4XsdORwymbEVGyQ,2907
|
|
26
|
-
librelane/config/variable.py,sha256=
|
|
26
|
+
librelane/config/variable.py,sha256=5TLqeyLlGciuxzce5_vTUMy1MxZsI2XG2B0o2spGV30,26242
|
|
27
27
|
librelane/container.py,sha256=3KHxs3dUSVUZVYsS6fsA7dD3Q4QEQEzRxgXZZh9dzi0,7554
|
|
28
28
|
librelane/env_info.py,sha256=vAE9AZ_vDFLt7Srtg4ZywPzE6vgVhCrIvg8PP25-BJ8,10460
|
|
29
29
|
librelane/examples/spm/config.yaml,sha256=YKBm0lsY3AJZNcxAh1sQ1QMmJeVCpOpil6dw_RgQh4c,633
|
|
@@ -41,17 +41,17 @@ librelane/examples/spm-user_project_wrapper/template.def,sha256=7kl9l-oh4BDKuFHh
|
|
|
41
41
|
librelane/examples/spm-user_project_wrapper/user_project_wrapper.v,sha256=zc6GC583muuWtzw3p6v_B1k8j-Oo9WypuQf_8doA4uo,3364
|
|
42
42
|
librelane/flows/__init__.py,sha256=ghtmUG-taVpHJ3CKJRYZGn3dU0r93araT1EIGlBEsxg,896
|
|
43
43
|
librelane/flows/builtins.py,sha256=tR14Qc1ZUey2w-Ar4DWOvxuP7LGPtMecCJq8WgcYJpk,773
|
|
44
|
-
librelane/flows/classic.py,sha256=
|
|
44
|
+
librelane/flows/classic.py,sha256=JB9gVgP2hHPhMuCJg7hvoj2BvJcvRec7suEXPgHmz14,10971
|
|
45
45
|
librelane/flows/cli.py,sha256=P2LCFn5_RQ88yB0WuetpLAuWeKQXd-DrpCOMgnVh9Mg,16705
|
|
46
|
-
librelane/flows/flow.py,sha256=
|
|
46
|
+
librelane/flows/flow.py,sha256=VIPF8LqiqQX-MYv4yPiQL1oEqrOOboi6N1a2BKmYWHs,34069
|
|
47
47
|
librelane/flows/misc.py,sha256=32Om3isexesfKKiJZCajNmINc-xdv7eVx_tgoh9SR6U,2015
|
|
48
48
|
librelane/flows/optimizing.py,sha256=OwZz6WGmXpliwO8vtmhjKHD-kzDyNv-zoCECZIigXsI,6076
|
|
49
|
-
librelane/flows/sequential.py,sha256=
|
|
49
|
+
librelane/flows/sequential.py,sha256=kBpR9kxfEfdTaNy9Ter2KNQXkW6qojCwoBsFJBwTq6I,15359
|
|
50
50
|
librelane/flows/synth_explore.py,sha256=8mpeuG6oxeEXVQi4NwS4I415eCu7Ak6DN4oK30h1eCQ,7418
|
|
51
51
|
librelane/logging/__init__.py,sha256=mrTnzjpH6AOu2CiDZYfOMCVByAS2Xeg9HS4FJyXsJOE,1043
|
|
52
52
|
librelane/logging/logger.py,sha256=kA61TGsR00Fi6kQSxgTC1pHpS_-zqC1PdQnYqnk2TWY,8632
|
|
53
53
|
librelane/open_pdks_rev,sha256=_q6FiO0UljepWU99r9IgkbLrKLDIPbO-80--OFWrZxA,41
|
|
54
|
-
librelane/plugins.py,sha256=
|
|
54
|
+
librelane/plugins.py,sha256=G5o2h1LT4a1LO1Q0gKXXuhqcEdjdTFkYU8QUSg2D2eM,820
|
|
55
55
|
librelane/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
56
|
librelane/scripts/base.sdc,sha256=zGPSBLDt-5dbYvm3AGbjsZsyKxjFOc4znyjwZM4wIps,3145
|
|
57
57
|
librelane/scripts/klayout/Readme.md,sha256=hJs44QIB3lHPD3E-Z-tbAC1RBmt5Fl1khzQF2gRewLE,76
|
|
@@ -61,7 +61,7 @@ librelane/scripts/klayout/stream_out.py,sha256=0GALkaKkrjcnASng32Fxq93dsgC9Fi4Rr
|
|
|
61
61
|
librelane/scripts/klayout/xml_drc_report_to_json.py,sha256=6nwTymQ1ypA5OgSvqySxzIWqDgGlW_1tlbtauc0BUdE,1412
|
|
62
62
|
librelane/scripts/klayout/xor.drc,sha256=Nm_6JR_png-31uajL3DrW3dVGo7Kd6G-zS9RTftL25o,3131
|
|
63
63
|
librelane/scripts/magic/Readme.md,sha256=NaQrlxY8l8GT-kokJNlMHeAR3PksWVbFpSznOWWshhw,126
|
|
64
|
-
librelane/scripts/magic/common/read.tcl,sha256=
|
|
64
|
+
librelane/scripts/magic/common/read.tcl,sha256=BiKyRi2ExXaR7WcSSmbtLfW-CaJU2DAmgVAi-XXrPGA,3120
|
|
65
65
|
librelane/scripts/magic/def/antenna_check.tcl,sha256=T_r1CWgySFVlLMcoTrNXQ_aMRs_fBAUYUUjyXJV1Sg0,1019
|
|
66
66
|
librelane/scripts/magic/def/mag.tcl,sha256=PuL3MH6pmZP5Qh2cJ0GygWNzaYjdCSCoAbOli-JB4fs,707
|
|
67
67
|
librelane/scripts/magic/def/mag_gds.tcl,sha256=pPNKntSkVM0fzHuyVrUtxWc7HWY2-MIMoId6PW8SIT4,2137
|
|
@@ -69,7 +69,7 @@ librelane/scripts/magic/drc.tcl,sha256=slHVfI6QoApKc2S6V3MIqcV5xnKRMJ_1wSGleJzkH
|
|
|
69
69
|
librelane/scripts/magic/extract_spice.tcl,sha256=lFNXfjIIzAWb2wda9ZtBOecENOOXyFBsh9HgrPYf7VQ,2737
|
|
70
70
|
librelane/scripts/magic/gds/drc_batch.tcl,sha256=O76rwxSrQgoCuoxk36tRBZkQaeMfJknlHrQA3mtU2JU,2198
|
|
71
71
|
librelane/scripts/magic/gds/erase_box.tcl,sha256=wsVSwMlkZFJa_MEGNsdXLnXFvjZlrl_lzIWkJjcDBgg,929
|
|
72
|
-
librelane/scripts/magic/gds/extras_mag.tcl,sha256=
|
|
72
|
+
librelane/scripts/magic/gds/extras_mag.tcl,sha256=jUu7vBUlJIvgldEC0UiohJC9FGnB2yiTzT1YbG_lmIo,1312
|
|
73
73
|
librelane/scripts/magic/gds/mag_with_pointers.tcl,sha256=mK0MEeQMRPN0MopgMlF2v5mq9jkssHEFRKv5gssWbLI,1063
|
|
74
74
|
librelane/scripts/magic/get_bbox.tcl,sha256=iC0D5Pw09ZiNxHyy70Z0_axlc7eIT_jVGmvlutM8z_4,377
|
|
75
75
|
librelane/scripts/magic/lef/extras_maglef.tcl,sha256=PsLCHxLslS3UxspmYf_vniL4Jzq54nZTa2AB5F90i58,1594
|
|
@@ -83,7 +83,7 @@ librelane/scripts/odbpy/cell_frequency.py,sha256=NfGgM8wxIvjM1C_GHUghZPOh8gpdasL
|
|
|
83
83
|
librelane/scripts/odbpy/check_antenna_properties.py,sha256=dMD-RcoA7plcAu9IIqa2e-8XCO0EMcKG-6P39D3Gpic,3942
|
|
84
84
|
librelane/scripts/odbpy/contextualize.py,sha256=G8EEgmK6ISikXD2-Pw-RTs1JxLWPnuppwL7oPfAsb84,4020
|
|
85
85
|
librelane/scripts/odbpy/defutil.py,sha256=g0UaAQRt8hXb9nfI6SbMp_Hx__0o1POw33_fS6xyibU,17849
|
|
86
|
-
librelane/scripts/odbpy/diodes.py,sha256=
|
|
86
|
+
librelane/scripts/odbpy/diodes.py,sha256=qpsTW2RQlqNm4pzrUFm7d0Jj4x4zSQqladcv5SJF7XI,11752
|
|
87
87
|
librelane/scripts/odbpy/disconnected_pins.py,sha256=hS_Iletg7N6K6yN_ccvWxZ3nWNZp4ecUJM-oY0kkEfA,11139
|
|
88
88
|
librelane/scripts/odbpy/eco_buffer.py,sha256=QOL2J0UJQiVvuGFbpdyAj-RRsPfEL-rT_qro3Rp0KeE,6256
|
|
89
89
|
librelane/scripts/odbpy/eco_diode.py,sha256=2LN7fHh9uO9JP3PYIxIwUiP1lyeqdTNF2ADTcY_Bu-g,4281
|
|
@@ -104,66 +104,68 @@ librelane/scripts/openroad/antenna_check.tcl,sha256=HPnypzv45yvbgjMlJXr8qJoFk_bp
|
|
|
104
104
|
librelane/scripts/openroad/antenna_repair.tcl,sha256=Piu1wbt00EfleHLVktjCGuPURouWbb3G8pPTg_my88M,1180
|
|
105
105
|
librelane/scripts/openroad/basic_mp.tcl,sha256=B90ro0jlJ3HxjotCvUWniHQvqBsr6wGhZPsi0HTVZwI,788
|
|
106
106
|
librelane/scripts/openroad/buffer_list.tcl,sha256=sXygy1KRSUS4dZi1UOpBkGGOuXRVLME45iZUAshThps,185
|
|
107
|
-
librelane/scripts/openroad/common/dpl.tcl,sha256=
|
|
107
|
+
librelane/scripts/openroad/common/dpl.tcl,sha256=T_rzoZy8i7S9C92TOmiN79w0MCfudafEhkXcHmB1BAM,920
|
|
108
108
|
librelane/scripts/openroad/common/dpl_cell_pad.tcl,sha256=KWVuj8u1-y3ZUiQr48TAsFv1GSzOCVnAjdqfBjtoQxQ,1066
|
|
109
|
-
librelane/scripts/openroad/common/grt.tcl,sha256=
|
|
110
|
-
librelane/scripts/openroad/common/io.tcl,sha256=
|
|
109
|
+
librelane/scripts/openroad/common/grt.tcl,sha256=2qDLSj8lKKEJHH9V9npiSMXQdsIsIHE0DVmbVRStbk4,1132
|
|
110
|
+
librelane/scripts/openroad/common/io.tcl,sha256=Osl_8qvBxfXcHlWBsYE9IC0Oisu_SjG1puiyY4ULmyw,22207
|
|
111
111
|
librelane/scripts/openroad/common/pdn_cfg.tcl,sha256=KnQAxzlL_261Kp4M02cQ6usZHIRNBj56SAZNn1CqrZc,4552
|
|
112
|
-
librelane/scripts/openroad/common/resizer.tcl,sha256=
|
|
113
|
-
librelane/scripts/openroad/common/set_global_connections.tcl,sha256=
|
|
112
|
+
librelane/scripts/openroad/common/resizer.tcl,sha256=OhjpVxw_8IOx5Bmh2_gh_EIHxKaX84NS37Of9Rlchpw,2255
|
|
113
|
+
librelane/scripts/openroad/common/set_global_connections.tcl,sha256=M-3OdAbGQXx7BrTyRIuh9c8m0ajnaWgiqrcmuZg68nk,2920
|
|
114
114
|
librelane/scripts/openroad/common/set_layer_adjustments.tcl,sha256=xqAIDXsTa1_JsGmKXf6eG2Rni2EZSilSsHfJAhCl1xY,1037
|
|
115
|
-
librelane/scripts/openroad/common/set_power_nets.tcl,sha256=
|
|
116
|
-
librelane/scripts/openroad/common/set_rc.tcl,sha256=
|
|
115
|
+
librelane/scripts/openroad/common/set_power_nets.tcl,sha256=_2n2AKl8UTh9-KeUOOwKaeyRw_4zi1Ifgh8oa9HIWc4,1253
|
|
116
|
+
librelane/scripts/openroad/common/set_rc.tcl,sha256=oJJCQG9RvAltgB5KTFsJcCzVvwUIkXeI7KJehCEWex0,7224
|
|
117
117
|
librelane/scripts/openroad/common/set_routing_layers.tcl,sha256=fCQsIjcFRsHJPFQvk87ta4mPj-gl27KLOCK3SNXH0jM,1335
|
|
118
|
-
librelane/scripts/openroad/cts.tcl,sha256=
|
|
119
|
-
librelane/scripts/openroad/cut_rows.tcl,sha256=
|
|
118
|
+
librelane/scripts/openroad/cts.tcl,sha256=703n6gGekpOXbRhr390DSBIo4h7qNlHUd-Amai4pGgk,3888
|
|
119
|
+
librelane/scripts/openroad/cut_rows.tcl,sha256=8RN4_muN1FXkXCU1VGVI_nox3BQNVGVNlQn_21HRCKM,1403
|
|
120
120
|
librelane/scripts/openroad/dpl.tcl,sha256=U5iTPBf7H4w3cmCM8-yTjLTVr8npwc5G7hVuszljCVc,777
|
|
121
|
-
librelane/scripts/openroad/drt.tcl,sha256=
|
|
122
|
-
librelane/scripts/openroad/
|
|
123
|
-
librelane/scripts/openroad/
|
|
124
|
-
librelane/scripts/openroad/
|
|
121
|
+
librelane/scripts/openroad/drt.tcl,sha256=CtPVi51t3EEDUB3-UBBrE6faP6bf56TVvJHSsjcwWFw,3108
|
|
122
|
+
librelane/scripts/openroad/dump_rc.tcl,sha256=R0EaQqpu23TABO9b5LwwpuafdcCOvaN7jpH6PiLG2Wg,4365
|
|
123
|
+
librelane/scripts/openroad/fill.tcl,sha256=djxPglVtei5Wfi5cStdnowVNysXZ331R0rWT5tT1lVk,976
|
|
124
|
+
librelane/scripts/openroad/floorplan.tcl,sha256=Jpv7GL7hP8g4VCHYx0pLl11hfGJBx26WoAvEKYMYGvI,5487
|
|
125
|
+
librelane/scripts/openroad/gpl.tcl,sha256=WzxlyikUf70Q1FgaE6sIVvquYPZ8RU02_te1VBsAd5U,2614
|
|
125
126
|
librelane/scripts/openroad/grt.tcl,sha256=r_73hbvc4wMi2EFoPbGTh29Lh5ATT4vVwKjxyPIOFcM,1022
|
|
126
127
|
librelane/scripts/openroad/gui.tcl,sha256=BhKTcYEo-SajnYtdzXqpzjYbczy0qZ-OvEFlHMjPtlU,1255
|
|
127
|
-
librelane/scripts/openroad/insert_buffer.tcl,sha256=
|
|
128
|
-
librelane/scripts/openroad/ioplacer.tcl,sha256=
|
|
129
|
-
librelane/scripts/openroad/irdrop.tcl,sha256=
|
|
130
|
-
librelane/scripts/openroad/pdn.tcl,sha256=
|
|
131
|
-
librelane/scripts/openroad/rcx.tcl,sha256=
|
|
132
|
-
librelane/scripts/openroad/repair_design.tcl,sha256=
|
|
133
|
-
librelane/scripts/openroad/repair_design_postgrt.tcl,sha256=
|
|
134
|
-
librelane/scripts/openroad/rsz_timing_postcts.tcl,sha256
|
|
135
|
-
librelane/scripts/openroad/rsz_timing_postgrt.tcl,sha256=
|
|
136
|
-
librelane/scripts/openroad/sta/check_macro_instances.tcl,sha256=
|
|
128
|
+
librelane/scripts/openroad/insert_buffer.tcl,sha256=ST0tbr1LoutjjaouqgngiQZudlzzHMd5APB6DTE2TGw,4412
|
|
129
|
+
librelane/scripts/openroad/ioplacer.tcl,sha256=u7PQ8vaPKHAXeb2HNc5RZmOMc52j2LrccO0irnxDNLM,1861
|
|
130
|
+
librelane/scripts/openroad/irdrop.tcl,sha256=bXhNY_87xPV-ocF9v8wOWqjlnFPaVO_6K_DWbBHAAPs,1974
|
|
131
|
+
librelane/scripts/openroad/pdn.tcl,sha256=YlZp5T9A4ZEC5_05QXMyQuOfYtJhQ3uR2Gu3-xud9vM,1569
|
|
132
|
+
librelane/scripts/openroad/rcx.tcl,sha256=kyEhli4sGFMEj-He9UXZDGb0Tmxlw7d6iZD7t6adUx8,1057
|
|
133
|
+
librelane/scripts/openroad/repair_design.tcl,sha256=mSQKIT-uac2gJFia_xMNQtHJKD--aTI2T0gmM5mrWZA,2314
|
|
134
|
+
librelane/scripts/openroad/repair_design_postgrt.tcl,sha256=sEXdFfH2le-q0ggcsWGgCR-GCFyzPdxk4P3RZyWCnpI,1902
|
|
135
|
+
librelane/scripts/openroad/rsz_timing_postcts.tcl,sha256=ztDJ__R7f3eK7-xAg9SklGXqL5F1jydGPQDH7X5twNE,2553
|
|
136
|
+
librelane/scripts/openroad/rsz_timing_postgrt.tcl,sha256=F6ex9Ke85YzS4z9rf8SpqCKjMyzuiQEhYYSJfkN93sM,2699
|
|
137
|
+
librelane/scripts/openroad/sta/check_macro_instances.tcl,sha256=RYmQbLySaKekWGWLit1sCvTx6vhtwoqQZ_YhAagg_2g,1776
|
|
137
138
|
librelane/scripts/openroad/sta/corner.tcl,sha256=Vt_Qg60GddXs6HUBcgMu5iPE_v93mbH0L-sqVqI7Z9A,15209
|
|
138
|
-
librelane/scripts/openroad/tapcell.tcl,sha256=
|
|
139
|
+
librelane/scripts/openroad/tapcell.tcl,sha256=4Ouy5U-_ct5Cfy3vuLQudWL0c1xWF_auLsr9rYh6dP4,1177
|
|
140
|
+
librelane/scripts/openroad/ungpl.tcl,sha256=vhHxou1W3VROwJePoQzmWn0h0d5lQrrt1vofyt-Woek,761
|
|
139
141
|
librelane/scripts/openroad/write_views.tcl,sha256=-MxTJsB4EF7l5trDaZe-VBFjhfzqRt8F5_DZrADTs0U,892
|
|
140
142
|
librelane/scripts/pyosys/construct_abc_script.py,sha256=3CCDz5ZTEPpWLco-OvikTmn361-BNitqjQE_-5zHm14,6733
|
|
141
143
|
librelane/scripts/pyosys/json_header.py,sha256=2_oBI0HE6BgLYOJUVUPv-Lvz97csLndWLE6q5A8zgYw,2362
|
|
142
144
|
librelane/scripts/pyosys/synthesize.py,sha256=4SztMSmcUFAoxahg_Z_oerGb3BMbwecmKRJ_WWGL9jw,16879
|
|
143
145
|
librelane/scripts/pyosys/ys_common.py,sha256=mOni8WmKMNuLWsLRNcE15rcqCxGR1kf-9ckvIx-EzHY,4432
|
|
144
146
|
librelane/scripts/tclsh/hello.tcl,sha256=kkR3akY7QnGHYXsQODYwLkMkUEOgWcNFtzaMTTEV2bY,34
|
|
145
|
-
librelane/state/__init__.py,sha256=
|
|
147
|
+
librelane/state/__init__.py,sha256=DZ_RyKMr2oj4p5d32u8MmDKfCxR7OEdDw-1HWKTpatA,949
|
|
146
148
|
librelane/state/__main__.py,sha256=Ici4Ejg1ICUZNSYZRguC3BfEk_wFxsmE0ag0Vv8iY1I,1679
|
|
147
|
-
librelane/state/design_format.py,sha256=
|
|
148
|
-
librelane/state/state.py,sha256=
|
|
149
|
+
librelane/state/design_format.py,sha256=kOLMn2pqTO8NtTypSvLPwuCSa8Zw5hGKN8UORvV2HHg,6328
|
|
150
|
+
librelane/state/state.py,sha256=3CdihPR6lryQMt8ihSef0O2F8-qaqy1w7V0wiwie3nk,11710
|
|
149
151
|
librelane/steps/__init__.py,sha256=j3JYrdnWM74dYuEvE931oSrQI7FUz-hKWr8Mts8C0wg,1668
|
|
150
152
|
librelane/steps/__main__.py,sha256=GviXtDLISKJCufKxK3oFPOSMF1GyShZbG5RXpVCYFkk,13376
|
|
151
|
-
librelane/steps/checker.py,sha256=
|
|
152
|
-
librelane/steps/common_variables.py,sha256=
|
|
153
|
-
librelane/steps/cvc_rv.py,sha256=
|
|
154
|
-
librelane/steps/klayout.py,sha256=
|
|
155
|
-
librelane/steps/magic.py,sha256=
|
|
156
|
-
librelane/steps/misc.py,sha256=
|
|
153
|
+
librelane/steps/checker.py,sha256=HD5YFPAbHQKsFmBDrIAbo_0clZcCszNhIXb4lHaNIeQ,21629
|
|
154
|
+
librelane/steps/common_variables.py,sha256=XPNEvrojD-6oIvxgo55mi2lKmARWyYq-PtY1_c_0ZUs,10318
|
|
155
|
+
librelane/steps/cvc_rv.py,sha256=TNnEQDJI5tEUq8OQelVmBWmNbLzygrvKsZ36utKDvp4,5543
|
|
156
|
+
librelane/steps/klayout.py,sha256=EFtzu53bWm-Bg_xEovdR7fc1GbWTwqkcivtr1rivHWU,16615
|
|
157
|
+
librelane/steps/magic.py,sha256=Xtsy1KWu8dcNq3pRlqM9WRRxtwbCQJq24IyxC0W8D2o,20254
|
|
158
|
+
librelane/steps/misc.py,sha256=8ubCvFeFEspXrgnzNWINY5-TXTyalNtlvcX8TSw0qdg,5685
|
|
157
159
|
librelane/steps/netgen.py,sha256=R9sDWv-9wKMdi2rkuLQdOc4uLlbYhXcKKd6WsZsnLt0,8953
|
|
158
|
-
librelane/steps/odb.py,sha256=
|
|
159
|
-
librelane/steps/openroad.py,sha256=
|
|
160
|
+
librelane/steps/odb.py,sha256=rEvlmZmMxeAh5bg_xBCiyOpnaqjvZOOmQQeEWDU6j-0,39144
|
|
161
|
+
librelane/steps/openroad.py,sha256=LDXVqp9jr9KxhD4oQxjXtijH9JIiaDC7nxdSJvoqKTw,99726
|
|
160
162
|
librelane/steps/openroad_alerts.py,sha256=IJyB4piBDCKXhkJswHGMYCRDwbdQsR0GZlrGGDhmW6Q,3364
|
|
161
|
-
librelane/steps/pyosys.py,sha256=
|
|
162
|
-
librelane/steps/step.py,sha256=
|
|
163
|
-
librelane/steps/tclstep.py,sha256=
|
|
163
|
+
librelane/steps/pyosys.py,sha256=ASNuA_V-cCEka4I5FX4-2nQ0r3KgDXbxbNrnXpzxll4,23099
|
|
164
|
+
librelane/steps/step.py,sha256=T5z0Nm5z-fq_qj3BIwchnfUobmxX67cEmZ-5dUYT76s,55163
|
|
165
|
+
librelane/steps/tclstep.py,sha256=YwyiSXAjRIflH2vzYvTzYfN4FyAI8Td9B_CKLkBj08o,10084
|
|
164
166
|
librelane/steps/verilator.py,sha256=MWx2TpLqYyea9_jSeLG9c2S5ujvYERQZRFNaMhfHxZE,7916
|
|
165
|
-
librelane/steps/yosys.py,sha256=
|
|
166
|
-
librelane-
|
|
167
|
-
librelane-
|
|
168
|
-
librelane-
|
|
169
|
-
librelane-
|
|
167
|
+
librelane/steps/yosys.py,sha256=LYXd5ntLbnMPEFfJiMcUumgmaqw9ZTr14Ss5Dw4fyyc,12545
|
|
168
|
+
librelane-3.0.0.dev23.dist-info/METADATA,sha256=XDd5PZJA8kyc72hNxux8wFEJnqdqxluvVWv_hcZpCs0,6561
|
|
169
|
+
librelane-3.0.0.dev23.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
170
|
+
librelane-3.0.0.dev23.dist-info/entry_points.txt,sha256=GTBvXykNMMFsNKiJFgtEw7P1wb_VZIqVM35EFSpyZQE,263
|
|
171
|
+
librelane-3.0.0.dev23.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|