librelane 2.4.0__tar.gz

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.

Files changed (169) hide show
  1. librelane-2.4.0/PKG-INFO +169 -0
  2. librelane-2.4.0/Readme.md +134 -0
  3. librelane-2.4.0/librelane/__init__.py +38 -0
  4. librelane-2.4.0/librelane/__main__.py +479 -0
  5. librelane-2.4.0/librelane/__version__.py +43 -0
  6. librelane-2.4.0/librelane/common/__init__.py +63 -0
  7. librelane-2.4.0/librelane/common/cli.py +75 -0
  8. librelane-2.4.0/librelane/common/drc.py +246 -0
  9. librelane-2.4.0/librelane/common/generic_dict.py +319 -0
  10. librelane-2.4.0/librelane/common/metrics/__init__.py +35 -0
  11. librelane-2.4.0/librelane/common/metrics/__main__.py +413 -0
  12. librelane-2.4.0/librelane/common/metrics/library.py +354 -0
  13. librelane-2.4.0/librelane/common/metrics/metric.py +186 -0
  14. librelane-2.4.0/librelane/common/metrics/util.py +279 -0
  15. librelane-2.4.0/librelane/common/misc.py +456 -0
  16. librelane-2.4.0/librelane/common/ring_buffer.py +63 -0
  17. librelane-2.4.0/librelane/common/tcl.py +80 -0
  18. librelane-2.4.0/librelane/common/toolbox.py +549 -0
  19. librelane-2.4.0/librelane/common/tpe.py +41 -0
  20. librelane-2.4.0/librelane/common/types.py +116 -0
  21. librelane-2.4.0/librelane/config/__init__.py +32 -0
  22. librelane-2.4.0/librelane/config/__main__.py +155 -0
  23. librelane-2.4.0/librelane/config/config.py +1025 -0
  24. librelane-2.4.0/librelane/config/flow.py +490 -0
  25. librelane-2.4.0/librelane/config/pdk_compat.py +255 -0
  26. librelane-2.4.0/librelane/config/preprocessor.py +464 -0
  27. librelane-2.4.0/librelane/config/removals.py +45 -0
  28. librelane-2.4.0/librelane/config/variable.py +743 -0
  29. librelane-2.4.0/librelane/container.py +285 -0
  30. librelane-2.4.0/librelane/env_info.py +320 -0
  31. librelane-2.4.0/librelane/examples/spm/config.yaml +33 -0
  32. librelane-2.4.0/librelane/examples/spm/pin_order.cfg +14 -0
  33. librelane-2.4.0/librelane/examples/spm/src/impl.sdc +73 -0
  34. librelane-2.4.0/librelane/examples/spm/src/signoff.sdc +68 -0
  35. librelane-2.4.0/librelane/examples/spm/src/spm.v +73 -0
  36. librelane-2.4.0/librelane/examples/spm/verify/spm_tb.v +106 -0
  37. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/SPM_example.v +286 -0
  38. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +145 -0
  39. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/config-tut.json +12 -0
  40. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/config.json +13 -0
  41. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/defines.v +66 -0
  42. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/template.def +7656 -0
  43. librelane-2.4.0/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +123 -0
  44. librelane-2.4.0/librelane/flows/__init__.py +24 -0
  45. librelane-2.4.0/librelane/flows/builtins.py +18 -0
  46. librelane-2.4.0/librelane/flows/classic.py +327 -0
  47. librelane-2.4.0/librelane/flows/cli.py +463 -0
  48. librelane-2.4.0/librelane/flows/flow.py +1049 -0
  49. librelane-2.4.0/librelane/flows/misc.py +71 -0
  50. librelane-2.4.0/librelane/flows/optimizing.py +179 -0
  51. librelane-2.4.0/librelane/flows/sequential.py +367 -0
  52. librelane-2.4.0/librelane/flows/synth_explore.py +173 -0
  53. librelane-2.4.0/librelane/help/__main__.py +39 -0
  54. librelane-2.4.0/librelane/logging/__init__.py +40 -0
  55. librelane-2.4.0/librelane/logging/logger.py +323 -0
  56. librelane-2.4.0/librelane/open_pdks_rev +1 -0
  57. librelane-2.4.0/librelane/plugins.py +21 -0
  58. librelane-2.4.0/librelane/py.typed +0 -0
  59. librelane-2.4.0/librelane/scripts/base.sdc +80 -0
  60. librelane-2.4.0/librelane/scripts/klayout/Readme.md +2 -0
  61. librelane-2.4.0/librelane/scripts/klayout/open_design.py +63 -0
  62. librelane-2.4.0/librelane/scripts/klayout/render.py +121 -0
  63. librelane-2.4.0/librelane/scripts/klayout/stream_out.py +176 -0
  64. librelane-2.4.0/librelane/scripts/klayout/xml_drc_report_to_json.py +45 -0
  65. librelane-2.4.0/librelane/scripts/klayout/xor.drc +120 -0
  66. librelane-2.4.0/librelane/scripts/magic/Readme.md +1 -0
  67. librelane-2.4.0/librelane/scripts/magic/common/read.tcl +114 -0
  68. librelane-2.4.0/librelane/scripts/magic/def/antenna_check.tcl +35 -0
  69. librelane-2.4.0/librelane/scripts/magic/def/mag.tcl +19 -0
  70. librelane-2.4.0/librelane/scripts/magic/def/mag_gds.tcl +79 -0
  71. librelane-2.4.0/librelane/scripts/magic/drc.tcl +78 -0
  72. librelane-2.4.0/librelane/scripts/magic/extract_spice.tcl +98 -0
  73. librelane-2.4.0/librelane/scripts/magic/gds/drc_batch.tcl +74 -0
  74. librelane-2.4.0/librelane/scripts/magic/gds/erase_box.tcl +32 -0
  75. librelane-2.4.0/librelane/scripts/magic/gds/extras_mag.tcl +45 -0
  76. librelane-2.4.0/librelane/scripts/magic/gds/mag_with_pointers.tcl +31 -0
  77. librelane-2.4.0/librelane/scripts/magic/get_bbox.tcl +11 -0
  78. librelane-2.4.0/librelane/scripts/magic/lef/extras_maglef.tcl +61 -0
  79. librelane-2.4.0/librelane/scripts/magic/lef/maglef.tcl +26 -0
  80. librelane-2.4.0/librelane/scripts/magic/lef.tcl +57 -0
  81. librelane-2.4.0/librelane/scripts/magic/open.tcl +28 -0
  82. librelane-2.4.0/librelane/scripts/magic/wrapper.tcl +21 -0
  83. librelane-2.4.0/librelane/scripts/netgen/setup.tcl +28 -0
  84. librelane-2.4.0/librelane/scripts/odbpy/apply_def_template.py +49 -0
  85. librelane-2.4.0/librelane/scripts/odbpy/cell_frequency.py +107 -0
  86. librelane-2.4.0/librelane/scripts/odbpy/check_antenna_properties.py +116 -0
  87. librelane-2.4.0/librelane/scripts/odbpy/contextualize.py +109 -0
  88. librelane-2.4.0/librelane/scripts/odbpy/defutil.py +573 -0
  89. librelane-2.4.0/librelane/scripts/odbpy/diodes.py +373 -0
  90. librelane-2.4.0/librelane/scripts/odbpy/disconnected_pins.py +305 -0
  91. librelane-2.4.0/librelane/scripts/odbpy/eco_buffer.py +181 -0
  92. librelane-2.4.0/librelane/scripts/odbpy/eco_diode.py +139 -0
  93. librelane-2.4.0/librelane/scripts/odbpy/filter_unannotated.py +100 -0
  94. librelane-2.4.0/librelane/scripts/odbpy/io_place.py +482 -0
  95. librelane-2.4.0/librelane/scripts/odbpy/ioplace_parser/__init__.py +23 -0
  96. librelane-2.4.0/librelane/scripts/odbpy/ioplace_parser/parse.py +147 -0
  97. librelane-2.4.0/librelane/scripts/odbpy/label_macro_pins.py +277 -0
  98. librelane-2.4.0/librelane/scripts/odbpy/lefutil.py +97 -0
  99. librelane-2.4.0/librelane/scripts/odbpy/placers.py +162 -0
  100. librelane-2.4.0/librelane/scripts/odbpy/power_utils.py +397 -0
  101. librelane-2.4.0/librelane/scripts/odbpy/random_place.py +57 -0
  102. librelane-2.4.0/librelane/scripts/odbpy/reader.py +250 -0
  103. librelane-2.4.0/librelane/scripts/odbpy/remove_buffers.py +173 -0
  104. librelane-2.4.0/librelane/scripts/odbpy/snap_to_grid.py +57 -0
  105. librelane-2.4.0/librelane/scripts/odbpy/wire_lengths.py +93 -0
  106. librelane-2.4.0/librelane/scripts/openroad/antenna_check.tcl +20 -0
  107. librelane-2.4.0/librelane/scripts/openroad/antenna_repair.tcl +31 -0
  108. librelane-2.4.0/librelane/scripts/openroad/basic_mp.tcl +24 -0
  109. librelane-2.4.0/librelane/scripts/openroad/buffer_list.tcl +10 -0
  110. librelane-2.4.0/librelane/scripts/openroad/common/dpl.tcl +24 -0
  111. librelane-2.4.0/librelane/scripts/openroad/common/dpl_cell_pad.tcl +26 -0
  112. librelane-2.4.0/librelane/scripts/openroad/common/grt.tcl +32 -0
  113. librelane-2.4.0/librelane/scripts/openroad/common/io.tcl +540 -0
  114. librelane-2.4.0/librelane/scripts/openroad/common/pdn_cfg.tcl +135 -0
  115. librelane-2.4.0/librelane/scripts/openroad/common/resizer.tcl +103 -0
  116. librelane-2.4.0/librelane/scripts/openroad/common/set_global_connections.tcl +78 -0
  117. librelane-2.4.0/librelane/scripts/openroad/common/set_layer_adjustments.tcl +31 -0
  118. librelane-2.4.0/librelane/scripts/openroad/common/set_power_nets.tcl +30 -0
  119. librelane-2.4.0/librelane/scripts/openroad/common/set_rc.tcl +75 -0
  120. librelane-2.4.0/librelane/scripts/openroad/common/set_routing_layers.tcl +30 -0
  121. librelane-2.4.0/librelane/scripts/openroad/cts.tcl +80 -0
  122. librelane-2.4.0/librelane/scripts/openroad/cut_rows.tcl +24 -0
  123. librelane-2.4.0/librelane/scripts/openroad/dpl.tcl +24 -0
  124. librelane-2.4.0/librelane/scripts/openroad/drt.tcl +37 -0
  125. librelane-2.4.0/librelane/scripts/openroad/fill.tcl +30 -0
  126. librelane-2.4.0/librelane/scripts/openroad/floorplan.tcl +145 -0
  127. librelane-2.4.0/librelane/scripts/openroad/gpl.tcl +88 -0
  128. librelane-2.4.0/librelane/scripts/openroad/grt.tcl +30 -0
  129. librelane-2.4.0/librelane/scripts/openroad/gui.tcl +37 -0
  130. librelane-2.4.0/librelane/scripts/openroad/insert_buffer.tcl +127 -0
  131. librelane-2.4.0/librelane/scripts/openroad/ioplacer.tcl +67 -0
  132. librelane-2.4.0/librelane/scripts/openroad/irdrop.tcl +51 -0
  133. librelane-2.4.0/librelane/scripts/openroad/pdn.tcl +52 -0
  134. librelane-2.4.0/librelane/scripts/openroad/rcx.tcl +32 -0
  135. librelane-2.4.0/librelane/scripts/openroad/repair_design.tcl +70 -0
  136. librelane-2.4.0/librelane/scripts/openroad/repair_design_postgrt.tcl +48 -0
  137. librelane-2.4.0/librelane/scripts/openroad/rsz_timing_postcts.tcl +68 -0
  138. librelane-2.4.0/librelane/scripts/openroad/rsz_timing_postgrt.tcl +70 -0
  139. librelane-2.4.0/librelane/scripts/openroad/sta/check_macro_instances.tcl +53 -0
  140. librelane-2.4.0/librelane/scripts/openroad/sta/corner.tcl +393 -0
  141. librelane-2.4.0/librelane/scripts/openroad/tapcell.tcl +25 -0
  142. librelane-2.4.0/librelane/scripts/openroad/write_views.tcl +27 -0
  143. librelane-2.4.0/librelane/scripts/pyosys/construct_abc_script.py +177 -0
  144. librelane-2.4.0/librelane/scripts/pyosys/json_header.py +84 -0
  145. librelane-2.4.0/librelane/scripts/pyosys/synthesize.py +493 -0
  146. librelane-2.4.0/librelane/scripts/pyosys/ys_common.py +153 -0
  147. librelane-2.4.0/librelane/scripts/tclsh/hello.tcl +1 -0
  148. librelane-2.4.0/librelane/state/__init__.py +24 -0
  149. librelane-2.4.0/librelane/state/__main__.py +61 -0
  150. librelane-2.4.0/librelane/state/design_format.py +195 -0
  151. librelane-2.4.0/librelane/state/state.py +359 -0
  152. librelane-2.4.0/librelane/steps/__init__.py +61 -0
  153. librelane-2.4.0/librelane/steps/__main__.py +510 -0
  154. librelane-2.4.0/librelane/steps/checker.py +637 -0
  155. librelane-2.4.0/librelane/steps/common_variables.py +340 -0
  156. librelane-2.4.0/librelane/steps/cvc_rv.py +169 -0
  157. librelane-2.4.0/librelane/steps/klayout.py +509 -0
  158. librelane-2.4.0/librelane/steps/magic.py +576 -0
  159. librelane-2.4.0/librelane/steps/misc.py +160 -0
  160. librelane-2.4.0/librelane/steps/netgen.py +253 -0
  161. librelane-2.4.0/librelane/steps/odb.py +1088 -0
  162. librelane-2.4.0/librelane/steps/openroad.py +2460 -0
  163. librelane-2.4.0/librelane/steps/openroad_alerts.py +102 -0
  164. librelane-2.4.0/librelane/steps/pyosys.py +640 -0
  165. librelane-2.4.0/librelane/steps/step.py +1571 -0
  166. librelane-2.4.0/librelane/steps/tclstep.py +288 -0
  167. librelane-2.4.0/librelane/steps/verilator.py +222 -0
  168. librelane-2.4.0/librelane/steps/yosys.py +371 -0
  169. librelane-2.4.0/pyproject.toml +73 -0
@@ -0,0 +1,169 @@
1
+ Metadata-Version: 2.1
2
+ Name: librelane
3
+ Version: 2.4.0
4
+ Summary: An infrastructure for implementing chip design flows
5
+ Home-page: https://github.com/librelane/librelane
6
+ License: Apache-2.0
7
+ Author: Mohamed Gaber
8
+ Author-email: me@donn.website
9
+ Requires-Python: >=3.8.1,<4
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Dist: ciel (>=2.0.3,<3)
18
+ Requires-Dist: click (>=8,<8.2)
19
+ Requires-Dist: cloup (>=3.0.5,<4)
20
+ Requires-Dist: deprecated (>=1.2.10,<2)
21
+ Requires-Dist: httpx (>=0.22.0,<0.29)
22
+ Requires-Dist: klayout (>=0.29.0,<0.31.0)
23
+ Requires-Dist: libparse (>=0.3.1,<1)
24
+ Requires-Dist: lxml (>=4.9.0)
25
+ Requires-Dist: psutil (>=5.9.0)
26
+ Requires-Dist: pyyaml (>=5,<7)
27
+ Requires-Dist: rapidfuzz (>=3.9.0,<4)
28
+ Requires-Dist: rich (>=12,<15)
29
+ Requires-Dist: semver (>=3.0.2,<4.0.0)
30
+ Requires-Dist: yamlcore (>=0.0.2,<0.0.3)
31
+ Project-URL: Documentation, https://librelane.readthedocs.io
32
+ Project-URL: Repository, https://github.com/librelane/librelane
33
+ Description-Content-Type: text/markdown
34
+
35
+ <h1 align="center">LibreLane</h1>
36
+ <p align="center">
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>
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>
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>
40
+ <a href="https://mypy-lang.org/"><img src="https://www.mypy-lang.org/static/mypy_badge.svg" alt="Checked with mypy"/></a>
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>
42
+ </p>
43
+ <p align="center">
44
+ <a href="https://colab.research.google.com/github/librelane/librelane/blob/main/notebook.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open in Colab"></a>
45
+ <a href="https://librelane.readthedocs.io/"><img src="https://readthedocs.org/projects/librelane/badge/?version=latest" alt="Documentation Build Status Badge"/></a>
46
+ <a href="https://fossi-chat.org"><img src="https://img.shields.io/badge/Community-FOSSi%20Chat-1bb378?logo=element" alt="Invite to FOSSi Chat"/></a>
47
+ </p>
48
+
49
+ LibreLane is an ASIC infrastructure library based on several components including
50
+ OpenROAD, Yosys, Magic, Netgen, CVC, KLayout and a number of custom scripts for
51
+ design exploration and optimization, currently developed and maintained by
52
+ members and affiliates of the
53
+ [American University in Cairo Open Hardware Lab](https://github.com/aucohl)
54
+ under the stewardship of the [FOSSi Foundation](https://fossi-foundation.org).
55
+
56
+ A reference flow, "Classic", performs all ASIC implementation steps from RTL all
57
+ the way down to GDSII.
58
+
59
+ You can find the documentation
60
+ [here](https://librelane.readthedocs.io/en/latest/getting_started/) to get
61
+ started. You can discuss LibreLane in the
62
+ [FOSSi Chat Matrix Server](https://fossi-chat.org).
63
+
64
+
65
+ ## Try it out
66
+
67
+ You can try LibreLane right in your browser, free-of-charge, using Google
68
+ Colaboratory by following
69
+ [**this link**](https://colab.research.google.com/github/librelane/librelane/blob/main/notebook.ipynb).
70
+
71
+ ## Installation
72
+
73
+ You'll need the following:
74
+
75
+ * Python **3.8.1** or higher with PIP, Venv and Tkinter
76
+
77
+ ### Nix (Recommended)
78
+
79
+ Works for macOS and Linux (x86-64 and aarch64). Recommended, as it is more
80
+ integrated with your filesystem and overall has less upload and download deltas.
81
+
82
+ See
83
+ [Nix-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/nix_installation/index.html)
84
+ in the docs for more info.
85
+
86
+ ### Docker
87
+
88
+ Works for Windows, macOS and Linux (x86-64 and aarch64).
89
+
90
+ See
91
+ [Docker-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/docker_installation/index.html)
92
+ in the docs for more info.
93
+
94
+ Do note you'll need to add `--dockerized` right after `librelane` in most CLI
95
+ invocations.
96
+
97
+ ### Python-only Installation (Advanced, Not Recommended)
98
+
99
+ **You'll need to bring your own compiled utilities**, but otherwise, simply
100
+ install LibreLane as follows:
101
+
102
+ ```sh
103
+ python3 -m pip install --upgrade librelane
104
+ ```
105
+
106
+ Python-only installations are presently unsupported and entirely at your own
107
+ risk.
108
+
109
+ ## Usage
110
+
111
+ In the root folder of the repository, you may invoke:
112
+
113
+ ```sh
114
+ python3 -m librelane --pdk-root <path/to/pdk> </path/to/config.json>
115
+ ```
116
+
117
+ To start with, you can try:
118
+
119
+ ```sh
120
+ python3 -m librelane --pdk-root $HOME/.ciel ./designs/spm/config.json
121
+ ```
122
+
123
+ ## Publication
124
+
125
+ If you use LibreLane in your research, please cite the following paper.
126
+
127
+ * M. Shalan and T. Edwards, “Building OpenLANE: A 130nm OpenROAD-based
128
+ Tapeout-Proven Flow: Invited Paper,” *2020 IEEE/ACM International Conference
129
+ On Computer Aided Design (ICCAD)*, San Diego, CA, USA, 2020, pp. 1-6.
130
+ [Paper](https://ieeexplore.ieee.org/document/9256623)
131
+
132
+ ```bibtex
133
+ @INPROCEEDINGS{9256623,
134
+ author={Shalan, Mohamed and Edwards, Tim},
135
+ booktitle={2020 IEEE/ACM International Conference On Computer Aided Design (ICCAD)},
136
+ title={Building OpenLANE: A 130nm OpenROAD-based Tapeout- Proven Flow : Invited Paper},
137
+ year={2020},
138
+ volume={},
139
+ number={},
140
+ pages={1-6},
141
+ doi={}}
142
+ ```
143
+
144
+ ## License and Legal Info
145
+
146
+ LibreLane is a trademark of the [FOSSi Foundation](https://fossi-foundation.org).
147
+
148
+ LibreLane code and binaries are available under
149
+ [The Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).
150
+
151
+ LibreLane is based on [OpenLane 2](https://github.com/efabless/openlane2)
152
+ by Efabless Corporation:
153
+
154
+ ```
155
+ Copyright 2022-2025 Efabless Corporation
156
+
157
+ Licensed under the Apache License, Version 2.0 (the "License");
158
+ you may not use this file except in compliance with the License.
159
+ You may obtain a copy of the License at
160
+
161
+ http://www.apache.org/licenses/LICENSE-2.0
162
+
163
+ Unless required by applicable law or agreed to in writing, software
164
+ distributed under the License is distributed on an "AS IS" BASIS,
165
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
166
+ See the License for the specific language governing permissions and
167
+ limitations under the License.
168
+ ```
169
+
@@ -0,0 +1,134 @@
1
+ <h1 align="center">LibreLane</h1>
2
+ <p align="center">
3
+ <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>
4
+ <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>
5
+ <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code Style: black"/></a>
6
+ <a href="https://mypy-lang.org/"><img src="https://www.mypy-lang.org/static/mypy_badge.svg" alt="Checked with mypy"/></a>
7
+ <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>
8
+ </p>
9
+ <p align="center">
10
+ <a href="https://colab.research.google.com/github/librelane/librelane/blob/main/notebook.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open in Colab"></a>
11
+ <a href="https://librelane.readthedocs.io/"><img src="https://readthedocs.org/projects/librelane/badge/?version=latest" alt="Documentation Build Status Badge"/></a>
12
+ <a href="https://fossi-chat.org"><img src="https://img.shields.io/badge/Community-FOSSi%20Chat-1bb378?logo=element" alt="Invite to FOSSi Chat"/></a>
13
+ </p>
14
+
15
+ LibreLane is an ASIC infrastructure library based on several components including
16
+ OpenROAD, Yosys, Magic, Netgen, CVC, KLayout and a number of custom scripts for
17
+ design exploration and optimization, currently developed and maintained by
18
+ members and affiliates of the
19
+ [American University in Cairo Open Hardware Lab](https://github.com/aucohl)
20
+ under the stewardship of the [FOSSi Foundation](https://fossi-foundation.org).
21
+
22
+ A reference flow, "Classic", performs all ASIC implementation steps from RTL all
23
+ the way down to GDSII.
24
+
25
+ You can find the documentation
26
+ [here](https://librelane.readthedocs.io/en/latest/getting_started/) to get
27
+ started. You can discuss LibreLane in the
28
+ [FOSSi Chat Matrix Server](https://fossi-chat.org).
29
+
30
+
31
+ ## Try it out
32
+
33
+ You can try LibreLane right in your browser, free-of-charge, using Google
34
+ Colaboratory by following
35
+ [**this link**](https://colab.research.google.com/github/librelane/librelane/blob/main/notebook.ipynb).
36
+
37
+ ## Installation
38
+
39
+ You'll need the following:
40
+
41
+ * Python **3.8.1** or higher with PIP, Venv and Tkinter
42
+
43
+ ### Nix (Recommended)
44
+
45
+ Works for macOS and Linux (x86-64 and aarch64). Recommended, as it is more
46
+ integrated with your filesystem and overall has less upload and download deltas.
47
+
48
+ See
49
+ [Nix-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/nix_installation/index.html)
50
+ in the docs for more info.
51
+
52
+ ### Docker
53
+
54
+ Works for Windows, macOS and Linux (x86-64 and aarch64).
55
+
56
+ See
57
+ [Docker-based installation](https://librelane.readthedocs.io/en/latest/getting_started/common/docker_installation/index.html)
58
+ in the docs for more info.
59
+
60
+ Do note you'll need to add `--dockerized` right after `librelane` in most CLI
61
+ invocations.
62
+
63
+ ### Python-only Installation (Advanced, Not Recommended)
64
+
65
+ **You'll need to bring your own compiled utilities**, but otherwise, simply
66
+ install LibreLane as follows:
67
+
68
+ ```sh
69
+ python3 -m pip install --upgrade librelane
70
+ ```
71
+
72
+ Python-only installations are presently unsupported and entirely at your own
73
+ risk.
74
+
75
+ ## Usage
76
+
77
+ In the root folder of the repository, you may invoke:
78
+
79
+ ```sh
80
+ python3 -m librelane --pdk-root <path/to/pdk> </path/to/config.json>
81
+ ```
82
+
83
+ To start with, you can try:
84
+
85
+ ```sh
86
+ python3 -m librelane --pdk-root $HOME/.ciel ./designs/spm/config.json
87
+ ```
88
+
89
+ ## Publication
90
+
91
+ If you use LibreLane in your research, please cite the following paper.
92
+
93
+ * M. Shalan and T. Edwards, “Building OpenLANE: A 130nm OpenROAD-based
94
+ Tapeout-Proven Flow: Invited Paper,” *2020 IEEE/ACM International Conference
95
+ On Computer Aided Design (ICCAD)*, San Diego, CA, USA, 2020, pp. 1-6.
96
+ [Paper](https://ieeexplore.ieee.org/document/9256623)
97
+
98
+ ```bibtex
99
+ @INPROCEEDINGS{9256623,
100
+ author={Shalan, Mohamed and Edwards, Tim},
101
+ booktitle={2020 IEEE/ACM International Conference On Computer Aided Design (ICCAD)},
102
+ title={Building OpenLANE: A 130nm OpenROAD-based Tapeout- Proven Flow : Invited Paper},
103
+ year={2020},
104
+ volume={},
105
+ number={},
106
+ pages={1-6},
107
+ doi={}}
108
+ ```
109
+
110
+ ## License and Legal Info
111
+
112
+ LibreLane is a trademark of the [FOSSi Foundation](https://fossi-foundation.org).
113
+
114
+ LibreLane code and binaries are available under
115
+ [The Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).
116
+
117
+ LibreLane is based on [OpenLane 2](https://github.com/efabless/openlane2)
118
+ by Efabless Corporation:
119
+
120
+ ```
121
+ Copyright 2022-2025 Efabless Corporation
122
+
123
+ Licensed under the Apache License, Version 2.0 (the "License");
124
+ you may not use this file except in compliance with the License.
125
+ You may obtain a copy of the License at
126
+
127
+ http://www.apache.org/licenses/LICENSE-2.0
128
+
129
+ Unless required by applicable law or agreed to in writing, software
130
+ distributed under the License is distributed on an "AS IS" BASIS,
131
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132
+ See the License for the specific language governing permissions and
133
+ limitations under the License.
134
+ ```
@@ -0,0 +1,38 @@
1
+ # Copyright 2023 Efabless Corporation
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """
15
+ The LibreLane API
16
+ ----------------
17
+
18
+ Documented elements of this API represent the primary programming interface for
19
+ the LibreLane infrastructure.
20
+
21
+ The various elements of LibreLane are organized into modules. You may import them
22
+ using their module name as follows:
23
+
24
+ .. code-block:: python
25
+
26
+ import librelane.common
27
+
28
+ .. no-imported-members
29
+
30
+ .. comment
31
+ .. data:: discovered_plugins
32
+
33
+ A dictionary of detected LibreLane plugins, with the module name as a key and
34
+ the module version as a version.
35
+ """
36
+ from .plugins import discovered_plugins
37
+ from .__version__ import __version__
38
+ from .env_info import env_info_cli