librelane 2.4.0.dev5__py3-none-any.whl → 2.4.0.dev7__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.

@@ -69,7 +69,7 @@ VT = TypeVar("VT")
69
69
 
70
70
  class GenericDict(Mapping[KT, VT]):
71
71
  """
72
- A dictionary with generic keys and values that is compatible with Python 3.8.
72
+ A dictionary with generic keys and values that is compatible with Python 3.8.1.
73
73
 
74
74
  :param copying: A base Mapping object to copy values from.
75
75
  :param overrides: Another mapping object to override the value from `copying`
@@ -12,4 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  source $::env(SCRIPTS_DIR)/openroad/common/io.tcl
15
- read_current_odb
15
+
16
+ read_current_odb
17
+ read_spefs
@@ -1,3 +1,7 @@
1
+ # Copyright 2025 LibreLane Contributors
2
+ #
3
+ # Adapted from OpenLane
4
+ #
1
5
  # Copyright 2023 Efabless Corporation
2
6
  #
3
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,7 +19,6 @@ import io
15
19
  import os
16
20
  import re
17
21
  import json
18
- import tempfile
19
22
  import functools
20
23
  import subprocess
21
24
  from enum import Enum
@@ -2414,30 +2417,47 @@ class DEFtoODB(OpenROADStep):
2414
2417
 
2415
2418
 
2416
2419
  @Step.factory.register()
2417
- class OpenGUI(Step):
2420
+ class OpenGUI(OpenSTAStep):
2418
2421
  """
2419
2422
  Opens the ODB view in the OpenROAD GUI. Useful to inspect some parameters,
2420
- such as routing density and whatnot.
2423
+ such as routing density, timing paths, clock tree and whatnot.
2424
+ The LIBs are loaded by default and the SPEFs if available.
2421
2425
  """
2422
2426
 
2423
2427
  id = "OpenROAD.OpenGUI"
2424
2428
  name = "Open In GUI"
2425
2429
 
2426
- inputs = [DesignFormat.ODB]
2430
+ inputs = [
2431
+ DesignFormat.ODB,
2432
+ DesignFormat.SPEF.mkOptional(),
2433
+ ]
2427
2434
  outputs = []
2428
2435
 
2436
+ def get_script_path(self) -> str:
2437
+ return os.path.join(get_script_dir(), "openroad", "gui.tcl")
2438
+
2439
+ def get_command(self) -> List[str]:
2440
+ return [
2441
+ "openroad",
2442
+ "-no_splash",
2443
+ "-gui",
2444
+ self.get_script_path(),
2445
+ ]
2446
+
2429
2447
  def run(self, state_in: State, **kwargs) -> Tuple[ViewsUpdate, MetricsUpdate]:
2430
- with tempfile.NamedTemporaryFile("a+", suffix=".tcl") as f:
2431
- f.write(f"read_db \"{state_in['odb']}\"")
2432
- f.flush()
2433
-
2434
- subprocess.check_call(
2435
- [
2436
- "openroad",
2437
- "-no_splash",
2438
- "-gui",
2439
- f.name,
2440
- ]
2441
- )
2448
+ kwargs, env = self.extract_env(kwargs)
2449
+
2450
+ corner_name, file_list = self._get_corner_files(prioritize_nl=True)
2451
+ file_list.set_env(env)
2452
+ env["_CURRENT_CORNER_NAME"] = corner_name
2453
+
2454
+ env = self.prepare_env(env, state_in)
2455
+
2456
+ command = self.get_command()
2457
+ self.run_subprocess(
2458
+ command,
2459
+ env=env,
2460
+ **kwargs,
2461
+ )
2442
2462
 
2443
2463
  return {}, {}
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: librelane
3
- Version: 2.4.0.dev5
3
+ Version: 2.4.0.dev7
4
4
  Summary: An infrastructure for implementing chip design flows
5
5
  Home-page: https://github.com/librelane/librelane
6
6
  License: Apache-2.0
7
7
  Author: Mohamed Gaber
8
8
  Author-email: me@donn.website
9
- Requires-Python: >=3.8,<4
9
+ Requires-Python: >=3.8.1,<4
10
10
  Classifier: License :: OSI Approved :: Apache Software License
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.8
13
12
  Classifier: Programming Language :: Python :: 3.9
14
13
  Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
@@ -36,7 +35,7 @@ Description-Content-Type: text/markdown
36
35
  <h1 align="center">LibreLane</h1>
37
36
  <p align="center">
38
37
  <a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0"/></a>
39
- <a href="https://www.python.org"><img src="https://img.shields.io/badge/Python-3.8-3776AB.svg?style=flat&logo=python&logoColor=white" alt="Python 3.8 or higher" /></a>
38
+ <a href="https://www.python.org"><img src="https://img.shields.io/badge/Python-3.8-3776AB.svg?style=flat&logo=python&logoColor=white" alt="Python 3.8.1 or higher" /></a>
40
39
  <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code Style: black"/></a>
41
40
  <a href="https://mypy-lang.org/"><img src="https://www.mypy-lang.org/static/mypy_badge.svg" alt="Checked with mypy"/></a>
42
41
  <a href="https://nixos.org/"><img src="https://img.shields.io/static/v1?logo=nixos&logoColor=white&label=&message=Built%20with%20Nix&color=41439a" alt="Built with Nix"/></a>
@@ -73,7 +72,7 @@ Colaboratory by following
73
72
 
74
73
  You'll need the following:
75
74
 
76
- * Python **3.8** or higher with PIP, Venv and Tkinter
75
+ * Python **3.8.1** or higher with PIP, Venv and Tkinter
77
76
 
78
77
  ### Nix (Recommended)
79
78
 
@@ -4,7 +4,7 @@ librelane/__version__.py,sha256=dbE4stCACDmIoxgKksesAkTa-_hi5dW6nPLWw9Pfq3Q,1486
4
4
  librelane/common/__init__.py,sha256=LrzxjZKJu3-i8oEYdXtV1IxkXicHtoSUNRcOGrGVGsw,1516
5
5
  librelane/common/cli.py,sha256=xi48GBGHRsYrLGwx40ARwpykHx7GnuHbJjHxjOwtZ5Y,2349
6
6
  librelane/common/drc.py,sha256=2N5jPbM0cxnOj2Kci2AhHTTgHcynTtkV118ii3kq7IU,9603
7
- librelane/common/generic_dict.py,sha256=xJjHIRvhp4vDk98kvaj8VPa3nUubMedaSfB5OL08sOE,10008
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
@@ -123,7 +123,7 @@ librelane/scripts/openroad/fill.tcl,sha256=LzXVqnaFbsGnIRTXuvrGNHqqWBv-T2OGcP828
123
123
  librelane/scripts/openroad/floorplan.tcl,sha256=akWifUeTsfplmFi11_ApU6hRcCaCmCyd0Su5ZWiTf50,5397
124
124
  librelane/scripts/openroad/gpl.tcl,sha256=OkTGsatlgnTj-sGg20LOhV2Ws87up8K8Ts52vPMC_NM,2540
125
125
  librelane/scripts/openroad/grt.tcl,sha256=r_73hbvc4wMi2EFoPbGTh29Lh5ATT4vVwKjxyPIOFcM,1022
126
- librelane/scripts/openroad/gui.tcl,sha256=TQCUN_StadQ74mTcVCYA-MdAD0kOuP9P1vvyUXlWw1s,651
126
+ librelane/scripts/openroad/gui.tcl,sha256=PmZUOi06cNPUODaJF0PNWEaXLIITgcV90XXENj7R8Po,664
127
127
  librelane/scripts/openroad/insert_buffer.tcl,sha256=BMTovQa4_CO8LSCeEqqiDAcTs5ELZt7X3ifJy1pDBVs,4403
128
128
  librelane/scripts/openroad/ioplacer.tcl,sha256=FdBr8Yg_qT1VhNVTmvR-x6j_Fyh94ZuAm_K6D7k4jTY,1896
129
129
  librelane/scripts/openroad/irdrop.tcl,sha256=wouIIPS_C_PeYFkCBQz0ERHcsobf74QB2x1NYAxNpjc,1950
@@ -156,14 +156,14 @@ librelane/steps/magic.py,sha256=4o_WarBAQdTTuekP72uovjvqW5wsaDCpMB3LtAhC_IY,2005
156
156
  librelane/steps/misc.py,sha256=Xk_a6JJPljkk8pemu-NtlzDRs-8S7vuRKZKj4pnCRlE,5690
157
157
  librelane/steps/netgen.py,sha256=R9sDWv-9wKMdi2rkuLQdOc4uLlbYhXcKKd6WsZsnLt0,8953
158
158
  librelane/steps/odb.py,sha256=_WhAFEVbFioSGsVrGbXQVqcXYAnE22gLA4eF1v028EQ,38030
159
- librelane/steps/openroad.py,sha256=6YaGHgpvPmAqpC_zpPBBEEc-DRpkS4HwG79zd1P1iKs,85987
159
+ librelane/steps/openroad.py,sha256=8YLMPq22ceG3TVRGghafuCD5a7DxwLtSSuPu4_7thPs,86513
160
160
  librelane/steps/openroad_alerts.py,sha256=IJyB4piBDCKXhkJswHGMYCRDwbdQsR0GZlrGGDhmW6Q,3364
161
161
  librelane/steps/pyosys.py,sha256=mnbPR267XzJvDhtXW4cdTAB3IqvksUZt4ch5xQHgdY0,22705
162
162
  librelane/steps/step.py,sha256=OkFNyW86ZY9VlNQHUeJIOLHtOuO1bioXsnwky7_l1pc,55154
163
163
  librelane/steps/tclstep.py,sha256=0PMWJ6C3dKnlQf9mA9rZntgxUBCiByE9csHcEcM1iq0,10027
164
164
  librelane/steps/verilator.py,sha256=MWx2TpLqYyea9_jSeLG9c2S5ujvYERQZRFNaMhfHxZE,7916
165
165
  librelane/steps/yosys.py,sha256=GX6rTiQG-ZhDxfB9SxrPQ9Sab3WC84p0OUtqiL1Nubk,12533
166
- librelane-2.4.0.dev5.dist-info/METADATA,sha256=GkRScJalX2iq16FMMUHkxkmr-2Mf_rA0HXjKx9xqNdQ,6602
167
- librelane-2.4.0.dev5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
168
- librelane-2.4.0.dev5.dist-info/entry_points.txt,sha256=GTBvXykNMMFsNKiJFgtEw7P1wb_VZIqVM35EFSpyZQE,263
169
- librelane-2.4.0.dev5.dist-info/RECORD,,
166
+ librelane-2.4.0.dev7.dist-info/METADATA,sha256=Dpvz5yGVJ-3v0gkCKqENV4zi6HsPqAZR-iDmsrVHibA,6558
167
+ librelane-2.4.0.dev7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
168
+ librelane-2.4.0.dev7.dist-info/entry_points.txt,sha256=GTBvXykNMMFsNKiJFgtEw7P1wb_VZIqVM35EFSpyZQE,263
169
+ librelane-2.4.0.dev7.dist-info/RECORD,,