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.
- librelane-2.4.0/PKG-INFO +169 -0
- librelane-2.4.0/Readme.md +134 -0
- librelane-2.4.0/librelane/__init__.py +38 -0
- librelane-2.4.0/librelane/__main__.py +479 -0
- librelane-2.4.0/librelane/__version__.py +43 -0
- librelane-2.4.0/librelane/common/__init__.py +63 -0
- librelane-2.4.0/librelane/common/cli.py +75 -0
- librelane-2.4.0/librelane/common/drc.py +246 -0
- librelane-2.4.0/librelane/common/generic_dict.py +319 -0
- librelane-2.4.0/librelane/common/metrics/__init__.py +35 -0
- librelane-2.4.0/librelane/common/metrics/__main__.py +413 -0
- librelane-2.4.0/librelane/common/metrics/library.py +354 -0
- librelane-2.4.0/librelane/common/metrics/metric.py +186 -0
- librelane-2.4.0/librelane/common/metrics/util.py +279 -0
- librelane-2.4.0/librelane/common/misc.py +456 -0
- librelane-2.4.0/librelane/common/ring_buffer.py +63 -0
- librelane-2.4.0/librelane/common/tcl.py +80 -0
- librelane-2.4.0/librelane/common/toolbox.py +549 -0
- librelane-2.4.0/librelane/common/tpe.py +41 -0
- librelane-2.4.0/librelane/common/types.py +116 -0
- librelane-2.4.0/librelane/config/__init__.py +32 -0
- librelane-2.4.0/librelane/config/__main__.py +155 -0
- librelane-2.4.0/librelane/config/config.py +1025 -0
- librelane-2.4.0/librelane/config/flow.py +490 -0
- librelane-2.4.0/librelane/config/pdk_compat.py +255 -0
- librelane-2.4.0/librelane/config/preprocessor.py +464 -0
- librelane-2.4.0/librelane/config/removals.py +45 -0
- librelane-2.4.0/librelane/config/variable.py +743 -0
- librelane-2.4.0/librelane/container.py +285 -0
- librelane-2.4.0/librelane/env_info.py +320 -0
- librelane-2.4.0/librelane/examples/spm/config.yaml +33 -0
- librelane-2.4.0/librelane/examples/spm/pin_order.cfg +14 -0
- librelane-2.4.0/librelane/examples/spm/src/impl.sdc +73 -0
- librelane-2.4.0/librelane/examples/spm/src/signoff.sdc +68 -0
- librelane-2.4.0/librelane/examples/spm/src/spm.v +73 -0
- librelane-2.4.0/librelane/examples/spm/verify/spm_tb.v +106 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/SPM_example.v +286 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/base_sdc_file.sdc +145 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/config-tut.json +12 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/config.json +13 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/defines.v +66 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/template.def +7656 -0
- librelane-2.4.0/librelane/examples/spm-user_project_wrapper/user_project_wrapper.v +123 -0
- librelane-2.4.0/librelane/flows/__init__.py +24 -0
- librelane-2.4.0/librelane/flows/builtins.py +18 -0
- librelane-2.4.0/librelane/flows/classic.py +327 -0
- librelane-2.4.0/librelane/flows/cli.py +463 -0
- librelane-2.4.0/librelane/flows/flow.py +1049 -0
- librelane-2.4.0/librelane/flows/misc.py +71 -0
- librelane-2.4.0/librelane/flows/optimizing.py +179 -0
- librelane-2.4.0/librelane/flows/sequential.py +367 -0
- librelane-2.4.0/librelane/flows/synth_explore.py +173 -0
- librelane-2.4.0/librelane/help/__main__.py +39 -0
- librelane-2.4.0/librelane/logging/__init__.py +40 -0
- librelane-2.4.0/librelane/logging/logger.py +323 -0
- librelane-2.4.0/librelane/open_pdks_rev +1 -0
- librelane-2.4.0/librelane/plugins.py +21 -0
- librelane-2.4.0/librelane/py.typed +0 -0
- librelane-2.4.0/librelane/scripts/base.sdc +80 -0
- librelane-2.4.0/librelane/scripts/klayout/Readme.md +2 -0
- librelane-2.4.0/librelane/scripts/klayout/open_design.py +63 -0
- librelane-2.4.0/librelane/scripts/klayout/render.py +121 -0
- librelane-2.4.0/librelane/scripts/klayout/stream_out.py +176 -0
- librelane-2.4.0/librelane/scripts/klayout/xml_drc_report_to_json.py +45 -0
- librelane-2.4.0/librelane/scripts/klayout/xor.drc +120 -0
- librelane-2.4.0/librelane/scripts/magic/Readme.md +1 -0
- librelane-2.4.0/librelane/scripts/magic/common/read.tcl +114 -0
- librelane-2.4.0/librelane/scripts/magic/def/antenna_check.tcl +35 -0
- librelane-2.4.0/librelane/scripts/magic/def/mag.tcl +19 -0
- librelane-2.4.0/librelane/scripts/magic/def/mag_gds.tcl +79 -0
- librelane-2.4.0/librelane/scripts/magic/drc.tcl +78 -0
- librelane-2.4.0/librelane/scripts/magic/extract_spice.tcl +98 -0
- librelane-2.4.0/librelane/scripts/magic/gds/drc_batch.tcl +74 -0
- librelane-2.4.0/librelane/scripts/magic/gds/erase_box.tcl +32 -0
- librelane-2.4.0/librelane/scripts/magic/gds/extras_mag.tcl +45 -0
- librelane-2.4.0/librelane/scripts/magic/gds/mag_with_pointers.tcl +31 -0
- librelane-2.4.0/librelane/scripts/magic/get_bbox.tcl +11 -0
- librelane-2.4.0/librelane/scripts/magic/lef/extras_maglef.tcl +61 -0
- librelane-2.4.0/librelane/scripts/magic/lef/maglef.tcl +26 -0
- librelane-2.4.0/librelane/scripts/magic/lef.tcl +57 -0
- librelane-2.4.0/librelane/scripts/magic/open.tcl +28 -0
- librelane-2.4.0/librelane/scripts/magic/wrapper.tcl +21 -0
- librelane-2.4.0/librelane/scripts/netgen/setup.tcl +28 -0
- librelane-2.4.0/librelane/scripts/odbpy/apply_def_template.py +49 -0
- librelane-2.4.0/librelane/scripts/odbpy/cell_frequency.py +107 -0
- librelane-2.4.0/librelane/scripts/odbpy/check_antenna_properties.py +116 -0
- librelane-2.4.0/librelane/scripts/odbpy/contextualize.py +109 -0
- librelane-2.4.0/librelane/scripts/odbpy/defutil.py +573 -0
- librelane-2.4.0/librelane/scripts/odbpy/diodes.py +373 -0
- librelane-2.4.0/librelane/scripts/odbpy/disconnected_pins.py +305 -0
- librelane-2.4.0/librelane/scripts/odbpy/eco_buffer.py +181 -0
- librelane-2.4.0/librelane/scripts/odbpy/eco_diode.py +139 -0
- librelane-2.4.0/librelane/scripts/odbpy/filter_unannotated.py +100 -0
- librelane-2.4.0/librelane/scripts/odbpy/io_place.py +482 -0
- librelane-2.4.0/librelane/scripts/odbpy/ioplace_parser/__init__.py +23 -0
- librelane-2.4.0/librelane/scripts/odbpy/ioplace_parser/parse.py +147 -0
- librelane-2.4.0/librelane/scripts/odbpy/label_macro_pins.py +277 -0
- librelane-2.4.0/librelane/scripts/odbpy/lefutil.py +97 -0
- librelane-2.4.0/librelane/scripts/odbpy/placers.py +162 -0
- librelane-2.4.0/librelane/scripts/odbpy/power_utils.py +397 -0
- librelane-2.4.0/librelane/scripts/odbpy/random_place.py +57 -0
- librelane-2.4.0/librelane/scripts/odbpy/reader.py +250 -0
- librelane-2.4.0/librelane/scripts/odbpy/remove_buffers.py +173 -0
- librelane-2.4.0/librelane/scripts/odbpy/snap_to_grid.py +57 -0
- librelane-2.4.0/librelane/scripts/odbpy/wire_lengths.py +93 -0
- librelane-2.4.0/librelane/scripts/openroad/antenna_check.tcl +20 -0
- librelane-2.4.0/librelane/scripts/openroad/antenna_repair.tcl +31 -0
- librelane-2.4.0/librelane/scripts/openroad/basic_mp.tcl +24 -0
- librelane-2.4.0/librelane/scripts/openroad/buffer_list.tcl +10 -0
- librelane-2.4.0/librelane/scripts/openroad/common/dpl.tcl +24 -0
- librelane-2.4.0/librelane/scripts/openroad/common/dpl_cell_pad.tcl +26 -0
- librelane-2.4.0/librelane/scripts/openroad/common/grt.tcl +32 -0
- librelane-2.4.0/librelane/scripts/openroad/common/io.tcl +540 -0
- librelane-2.4.0/librelane/scripts/openroad/common/pdn_cfg.tcl +135 -0
- librelane-2.4.0/librelane/scripts/openroad/common/resizer.tcl +103 -0
- librelane-2.4.0/librelane/scripts/openroad/common/set_global_connections.tcl +78 -0
- librelane-2.4.0/librelane/scripts/openroad/common/set_layer_adjustments.tcl +31 -0
- librelane-2.4.0/librelane/scripts/openroad/common/set_power_nets.tcl +30 -0
- librelane-2.4.0/librelane/scripts/openroad/common/set_rc.tcl +75 -0
- librelane-2.4.0/librelane/scripts/openroad/common/set_routing_layers.tcl +30 -0
- librelane-2.4.0/librelane/scripts/openroad/cts.tcl +80 -0
- librelane-2.4.0/librelane/scripts/openroad/cut_rows.tcl +24 -0
- librelane-2.4.0/librelane/scripts/openroad/dpl.tcl +24 -0
- librelane-2.4.0/librelane/scripts/openroad/drt.tcl +37 -0
- librelane-2.4.0/librelane/scripts/openroad/fill.tcl +30 -0
- librelane-2.4.0/librelane/scripts/openroad/floorplan.tcl +145 -0
- librelane-2.4.0/librelane/scripts/openroad/gpl.tcl +88 -0
- librelane-2.4.0/librelane/scripts/openroad/grt.tcl +30 -0
- librelane-2.4.0/librelane/scripts/openroad/gui.tcl +37 -0
- librelane-2.4.0/librelane/scripts/openroad/insert_buffer.tcl +127 -0
- librelane-2.4.0/librelane/scripts/openroad/ioplacer.tcl +67 -0
- librelane-2.4.0/librelane/scripts/openroad/irdrop.tcl +51 -0
- librelane-2.4.0/librelane/scripts/openroad/pdn.tcl +52 -0
- librelane-2.4.0/librelane/scripts/openroad/rcx.tcl +32 -0
- librelane-2.4.0/librelane/scripts/openroad/repair_design.tcl +70 -0
- librelane-2.4.0/librelane/scripts/openroad/repair_design_postgrt.tcl +48 -0
- librelane-2.4.0/librelane/scripts/openroad/rsz_timing_postcts.tcl +68 -0
- librelane-2.4.0/librelane/scripts/openroad/rsz_timing_postgrt.tcl +70 -0
- librelane-2.4.0/librelane/scripts/openroad/sta/check_macro_instances.tcl +53 -0
- librelane-2.4.0/librelane/scripts/openroad/sta/corner.tcl +393 -0
- librelane-2.4.0/librelane/scripts/openroad/tapcell.tcl +25 -0
- librelane-2.4.0/librelane/scripts/openroad/write_views.tcl +27 -0
- librelane-2.4.0/librelane/scripts/pyosys/construct_abc_script.py +177 -0
- librelane-2.4.0/librelane/scripts/pyosys/json_header.py +84 -0
- librelane-2.4.0/librelane/scripts/pyosys/synthesize.py +493 -0
- librelane-2.4.0/librelane/scripts/pyosys/ys_common.py +153 -0
- librelane-2.4.0/librelane/scripts/tclsh/hello.tcl +1 -0
- librelane-2.4.0/librelane/state/__init__.py +24 -0
- librelane-2.4.0/librelane/state/__main__.py +61 -0
- librelane-2.4.0/librelane/state/design_format.py +195 -0
- librelane-2.4.0/librelane/state/state.py +359 -0
- librelane-2.4.0/librelane/steps/__init__.py +61 -0
- librelane-2.4.0/librelane/steps/__main__.py +510 -0
- librelane-2.4.0/librelane/steps/checker.py +637 -0
- librelane-2.4.0/librelane/steps/common_variables.py +340 -0
- librelane-2.4.0/librelane/steps/cvc_rv.py +169 -0
- librelane-2.4.0/librelane/steps/klayout.py +509 -0
- librelane-2.4.0/librelane/steps/magic.py +576 -0
- librelane-2.4.0/librelane/steps/misc.py +160 -0
- librelane-2.4.0/librelane/steps/netgen.py +253 -0
- librelane-2.4.0/librelane/steps/odb.py +1088 -0
- librelane-2.4.0/librelane/steps/openroad.py +2460 -0
- librelane-2.4.0/librelane/steps/openroad_alerts.py +102 -0
- librelane-2.4.0/librelane/steps/pyosys.py +640 -0
- librelane-2.4.0/librelane/steps/step.py +1571 -0
- librelane-2.4.0/librelane/steps/tclstep.py +288 -0
- librelane-2.4.0/librelane/steps/verilator.py +222 -0
- librelane-2.4.0/librelane/steps/yosys.py +371 -0
- librelane-2.4.0/pyproject.toml +73 -0
librelane-2.4.0/PKG-INFO
ADDED
|
@@ -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
|