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