ciel 0.21.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.
@@ -0,0 +1,168 @@
1
+ Metadata-Version: 2.3
2
+ Name: ciel
3
+ Version: 0.21.0.dev0
4
+ Summary: An PDK builder/version manager for PDKs in the open_pdks format
5
+ License: Apache-2.0
6
+ Author: Efabless Corporation and Contributors
7
+ Author-email: donn@efabless.com
8
+ Requires-Python: >=3.8
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: MacOS :: MacOS X
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Dist: click (>=8,<9)
21
+ Requires-Dist: httpx (>=0.22.0,<0.29)
22
+ Requires-Dist: pcpp (>=1.2,<2)
23
+ Requires-Dist: pyyaml (>=5,<7)
24
+ Requires-Dist: rich (>=12,<14)
25
+ Requires-Dist: zstandard (>=0.19.0,<1)
26
+ Project-URL: Repository, https://github.com/donn/cielo
27
+ Description-Content-Type: text/markdown
28
+
29
+ <h1 align="center">☁️ Cielo</h1>
30
+ <p align="center">
31
+ <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>
32
+ <img src="https://github.com/efabless/cielo/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI Status" />
33
+ <a href="https://invite.skywater.tools"><img src="https://img.shields.io/badge/Community-Skywater%20PDK%20Slack-ff69b4?logo=slack" alt="Invite to the Skywater PDK Slack"/></a>
34
+ <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code Style: Black"/></a>
35
+ </p>
36
+
37
+ <p align="center">Cielo is a version manager (and builder) for builds of <a href="https://github.com/google/open-source-pdks">Google open-source PDKs</a> using <a href="https://github.com/rtimothyedwards/open_pdks">open_pdks</a>.</p>
38
+
39
+ # Requirements
40
+ * Python 3.8+ with PIP
41
+ * macOS or GNU/Linux
42
+
43
+ ## macOS
44
+ Get [Homebrew](https://brew.sh) then:
45
+
46
+ ```sh
47
+ brew install python3
48
+ ```
49
+
50
+ ## Debian and Ubuntu
51
+ Debian 11+ or Ubuntu 20.04+ is required.
52
+
53
+ ```sh
54
+ sudo apt-get update
55
+ sudo apt-get install python3 python3-pip xz-utils
56
+ ```
57
+
58
+ ## RHEL and Derivatives
59
+ RHEL 8+ or compatible operating system required.
60
+ ```sh
61
+ sudo yum install -y python3 python3-pip
62
+ ```
63
+
64
+
65
+ # Installation and Upgrades
66
+ ```sh
67
+ # To install (or upgrade)
68
+ python3 -m pip install --user --upgrade --no-cache-dir cielo
69
+
70
+ # To verify it works
71
+ cielo --version
72
+ ```
73
+
74
+ # About the builds
75
+ In its current inception, cielo supports builds of **sky130** and **gf180mcu** PDKs using [Open_PDKs](https://github.com/efabless/open_pdks), including the following libraries:
76
+
77
+ |sky130|gf180mcu|
78
+ |-|-|
79
+ |sky130_fd_io|gf180mcu_fd_io|
80
+ |sky130_fd_pr|gf180mcu_fd_pr|
81
+ |sky130_fd_sc_hd|gf180mcu_fd_sc_mcu7t5v0|
82
+ |sky130_fd_sc_hvl|gf180mcu_fd_sc_mcu9t5v0|
83
+ |sky130 sram modules|gf180mcu_fd_ip_sram|
84
+
85
+ All builds are identified by their **open_pdks** commit hash.
86
+
87
+ # Usage
88
+ Cielo requires a so-called **PDK Root**. This PDK root can be anywhere on your computer, but by default it's the folder `~/.cielo` in your home directory. If you have the variable `PDK_ROOT` set, cielo will use that instead. You can also manually override both values by supplying the `--pdk-root` commandline argument.
89
+
90
+ ## Listing All Available PDKs
91
+ To list all available pre-built PDKs hosted in this repository, you can just invoke `cielo ls-remote --pdk <PDK>`. If you omit the `--pdk` argument, `sky130` will be used as a default.
92
+
93
+ ```sh
94
+ $ cielo ls-remote --pdk sky130
95
+ Pre-built sky130 PDK versions
96
+ ├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
97
+ ├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29) (installed)
98
+ ├── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14) (installed)
99
+ ├── 660c6bdc8715dc7b3db95a1ce85392bbf2a2b195 (2022.04.08)
100
+ ├── 5890e791e37699239abedfd2a67e55162e25cd94 (2022.04.06)
101
+ ├── 8fe7f760ece2bb49b1c310e60243f0558977dae5 (2022.04.06)
102
+ └── 7519dfb04400f224f140749cda44ee7de6f5e095 (2022.02.10)
103
+
104
+ $ cielo ls-remote --pdk gf180mcu
105
+ Pre-built gf180mcu PDK versions
106
+ └── 120b0bd69c745825a0b8b76f364043a1cd08bb6a (2022.09.22)
107
+ ```
108
+
109
+ It includes a commit hash, which is the `open_pdks` version used to build this particular PDK, the date that this commit was created, and whether you already installed this PDK and/or if it is the currently enabled PDK.
110
+
111
+ ## Listing Installed PDKs
112
+ Typing `cielo ls --pdk <pdk>` in the terminal shows you your PDK Root and the PDKs you currently have installed. Again, if you omit the `--pdk` argument, `sky130` will be used as a default.
113
+
114
+ ```sh
115
+ $ cielo ls --pdk sky130
116
+ /home/test/cielo/sky130/versions
117
+ ├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
118
+ ├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29)
119
+ └── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14)
120
+ ```
121
+
122
+ (If you're not connected to the Internet, the release date of the commit will not be included.)
123
+
124
+
125
+ ## Downloading and Enabling PDKs
126
+ You can enable a particular sky130 PDK by invoking `cielo enable --pdk <pdk> <open_pdks commit hash>`. This will automatically download that particular version of the PDK, if found, and set it as your currently used PDK.
127
+
128
+ For example, to activate a build of sky130 using open_pdks `7519dfb04400f224f140749cda44ee7de6f5e095`, you invoke `cielo enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095`, as shown below:
129
+
130
+ ```sh
131
+ $ cielo enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095
132
+ Downloading pre-built tarball for 7519dfb04400f224f140749cda44ee7de6f5e095… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
133
+ Unpacking… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
134
+ PDK version 7519dfb04400f224f140749cda44ee7de6f5e095 enabled.
135
+ ```
136
+
137
+ What's more is: if you're using a repository with a `tool_metadata.yml` file, such as [OpenLane](https://github.com/The-OpenROAD-Project/OpenLane) or [DFFRAM](https://github.com/Cloud-V/DFFRAM), you can just invoke `cielo enable --pdk sky130` without the commit hash and Cielo will automatically extract the version required by the utility. Once again, if you omit the `--pdk` argument, `sky130` will be used as a default.
138
+
139
+ ## Building PDKs
140
+ For special cases, you may have to build the PDK yourself, which Cielo does support.
141
+
142
+ You'll need Magic installed and in PATH. You can either do that manually or, if you have [Nix](https://nixos.org), invoke `nix shell github:efabless/openlane2#magic` before building.
143
+
144
+ You can invoke `cielo build --help` for more options. Be aware, the built PDK won't automatically be enabled and you'll have to `cielo enable` the appropriate version.
145
+
146
+ # License
147
+ The Apache License, version 2.0. See 'License'.
148
+
149
+
150
+ Cielo is based on [Volare](https://github.com/efabless/volare) by Efabless
151
+ Corporation:
152
+
153
+ ```
154
+ Copyright 2022-2025 Efabless Corporation
155
+
156
+ Licensed under the Apache License, Version 2.0 (the "License");
157
+ you may not use this file except in compliance with the License.
158
+ You may obtain a copy of the License at
159
+
160
+ http://www.apache.org/licenses/LICENSE-2.0
161
+
162
+ Unless required by applicable law or agreed to in writing, software
163
+ distributed under the License is distributed on an "AS IS" BASIS,
164
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
165
+ See the License for the specific language governing permissions and
166
+ limitations under the License.
167
+ ```
168
+
@@ -0,0 +1,139 @@
1
+ <h1 align="center">☁️ Cielo</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
+ <img src="https://github.com/efabless/cielo/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI Status" />
5
+ <a href="https://invite.skywater.tools"><img src="https://img.shields.io/badge/Community-Skywater%20PDK%20Slack-ff69b4?logo=slack" alt="Invite to the Skywater PDK Slack"/></a>
6
+ <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code Style: Black"/></a>
7
+ </p>
8
+
9
+ <p align="center">Cielo is a version manager (and builder) for builds of <a href="https://github.com/google/open-source-pdks">Google open-source PDKs</a> using <a href="https://github.com/rtimothyedwards/open_pdks">open_pdks</a>.</p>
10
+
11
+ # Requirements
12
+ * Python 3.8+ with PIP
13
+ * macOS or GNU/Linux
14
+
15
+ ## macOS
16
+ Get [Homebrew](https://brew.sh) then:
17
+
18
+ ```sh
19
+ brew install python3
20
+ ```
21
+
22
+ ## Debian and Ubuntu
23
+ Debian 11+ or Ubuntu 20.04+ is required.
24
+
25
+ ```sh
26
+ sudo apt-get update
27
+ sudo apt-get install python3 python3-pip xz-utils
28
+ ```
29
+
30
+ ## RHEL and Derivatives
31
+ RHEL 8+ or compatible operating system required.
32
+ ```sh
33
+ sudo yum install -y python3 python3-pip
34
+ ```
35
+
36
+
37
+ # Installation and Upgrades
38
+ ```sh
39
+ # To install (or upgrade)
40
+ python3 -m pip install --user --upgrade --no-cache-dir cielo
41
+
42
+ # To verify it works
43
+ cielo --version
44
+ ```
45
+
46
+ # About the builds
47
+ In its current inception, cielo supports builds of **sky130** and **gf180mcu** PDKs using [Open_PDKs](https://github.com/efabless/open_pdks), including the following libraries:
48
+
49
+ |sky130|gf180mcu|
50
+ |-|-|
51
+ |sky130_fd_io|gf180mcu_fd_io|
52
+ |sky130_fd_pr|gf180mcu_fd_pr|
53
+ |sky130_fd_sc_hd|gf180mcu_fd_sc_mcu7t5v0|
54
+ |sky130_fd_sc_hvl|gf180mcu_fd_sc_mcu9t5v0|
55
+ |sky130 sram modules|gf180mcu_fd_ip_sram|
56
+
57
+ All builds are identified by their **open_pdks** commit hash.
58
+
59
+ # Usage
60
+ Cielo requires a so-called **PDK Root**. This PDK root can be anywhere on your computer, but by default it's the folder `~/.cielo` in your home directory. If you have the variable `PDK_ROOT` set, cielo will use that instead. You can also manually override both values by supplying the `--pdk-root` commandline argument.
61
+
62
+ ## Listing All Available PDKs
63
+ To list all available pre-built PDKs hosted in this repository, you can just invoke `cielo ls-remote --pdk <PDK>`. If you omit the `--pdk` argument, `sky130` will be used as a default.
64
+
65
+ ```sh
66
+ $ cielo ls-remote --pdk sky130
67
+ Pre-built sky130 PDK versions
68
+ ├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
69
+ ├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29) (installed)
70
+ ├── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14) (installed)
71
+ ├── 660c6bdc8715dc7b3db95a1ce85392bbf2a2b195 (2022.04.08)
72
+ ├── 5890e791e37699239abedfd2a67e55162e25cd94 (2022.04.06)
73
+ ├── 8fe7f760ece2bb49b1c310e60243f0558977dae5 (2022.04.06)
74
+ └── 7519dfb04400f224f140749cda44ee7de6f5e095 (2022.02.10)
75
+
76
+ $ cielo ls-remote --pdk gf180mcu
77
+ Pre-built gf180mcu PDK versions
78
+ └── 120b0bd69c745825a0b8b76f364043a1cd08bb6a (2022.09.22)
79
+ ```
80
+
81
+ It includes a commit hash, which is the `open_pdks` version used to build this particular PDK, the date that this commit was created, and whether you already installed this PDK and/or if it is the currently enabled PDK.
82
+
83
+ ## Listing Installed PDKs
84
+ Typing `cielo ls --pdk <pdk>` in the terminal shows you your PDK Root and the PDKs you currently have installed. Again, if you omit the `--pdk` argument, `sky130` will be used as a default.
85
+
86
+ ```sh
87
+ $ cielo ls --pdk sky130
88
+ /home/test/cielo/sky130/versions
89
+ ├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
90
+ ├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29)
91
+ └── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14)
92
+ ```
93
+
94
+ (If you're not connected to the Internet, the release date of the commit will not be included.)
95
+
96
+
97
+ ## Downloading and Enabling PDKs
98
+ You can enable a particular sky130 PDK by invoking `cielo enable --pdk <pdk> <open_pdks commit hash>`. This will automatically download that particular version of the PDK, if found, and set it as your currently used PDK.
99
+
100
+ For example, to activate a build of sky130 using open_pdks `7519dfb04400f224f140749cda44ee7de6f5e095`, you invoke `cielo enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095`, as shown below:
101
+
102
+ ```sh
103
+ $ cielo enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095
104
+ Downloading pre-built tarball for 7519dfb04400f224f140749cda44ee7de6f5e095… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
105
+ Unpacking… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
106
+ PDK version 7519dfb04400f224f140749cda44ee7de6f5e095 enabled.
107
+ ```
108
+
109
+ What's more is: if you're using a repository with a `tool_metadata.yml` file, such as [OpenLane](https://github.com/The-OpenROAD-Project/OpenLane) or [DFFRAM](https://github.com/Cloud-V/DFFRAM), you can just invoke `cielo enable --pdk sky130` without the commit hash and Cielo will automatically extract the version required by the utility. Once again, if you omit the `--pdk` argument, `sky130` will be used as a default.
110
+
111
+ ## Building PDKs
112
+ For special cases, you may have to build the PDK yourself, which Cielo does support.
113
+
114
+ You'll need Magic installed and in PATH. You can either do that manually or, if you have [Nix](https://nixos.org), invoke `nix shell github:efabless/openlane2#magic` before building.
115
+
116
+ You can invoke `cielo build --help` for more options. Be aware, the built PDK won't automatically be enabled and you'll have to `cielo enable` the appropriate version.
117
+
118
+ # License
119
+ The Apache License, version 2.0. See 'License'.
120
+
121
+
122
+ Cielo is based on [Volare](https://github.com/efabless/volare) by Efabless
123
+ Corporation:
124
+
125
+ ```
126
+ Copyright 2022-2025 Efabless Corporation
127
+
128
+ Licensed under the Apache License, Version 2.0 (the "License");
129
+ you may not use this file except in compliance with the License.
130
+ You may obtain a copy of the License at
131
+
132
+ http://www.apache.org/licenses/LICENSE-2.0
133
+
134
+ Unless required by applicable law or agreed to in writing, software
135
+ distributed under the License is distributed on an "AS IS" BASIS,
136
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137
+ See the License for the specific language governing permissions and
138
+ limitations under the License.
139
+ ```
@@ -0,0 +1,29 @@
1
+ # Copyright 2022-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
+ from .manage import (
15
+ VersionNotFound,
16
+ enable,
17
+ get,
18
+ fetch,
19
+ )
20
+ from .common import (
21
+ get_cielo_home,
22
+ Version,
23
+ )
24
+ from .families import Family
25
+ from .github import (
26
+ GitHubSession,
27
+ )
28
+ from .build import build
29
+ from .__version__ import __version__