ciel 0.21.0.dev0__tar.gz → 0.21.0.dev1__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.
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/PKG-INFO +42 -37
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/Readme.md +38 -34
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/__init__.py +1 -1
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/__main__.py +8 -12
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/build/__init__.py +2 -2
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/build/common.py +2 -2
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/build/gf180mcu.py +2 -4
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/build/ihp_sg13g2.py +2 -2
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/build/sky130.py +2 -2
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/click_common.py +1 -1
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/common.py +7 -7
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/github.py +2 -2
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/manage.py +3 -3
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/pyproject.toml +3 -3
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/__version__.py +0 -0
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/build/git_multi_clone.py +0 -0
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/families.py +0 -0
- {ciel-0.21.0.dev0 → ciel-0.21.0.dev1}/ciel/py.typed +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: ciel
|
|
3
|
-
Version: 0.21.0.
|
|
3
|
+
Version: 0.21.0.dev1
|
|
4
4
|
Summary: An PDK builder/version manager for PDKs in the open_pdks format
|
|
5
|
+
Home-page: https://github.com/fossi-foundation/ciel
|
|
5
6
|
License: Apache-2.0
|
|
6
7
|
Author: Efabless Corporation and Contributors
|
|
7
8
|
Author-email: donn@efabless.com
|
|
@@ -23,18 +24,18 @@ Requires-Dist: pcpp (>=1.2,<2)
|
|
|
23
24
|
Requires-Dist: pyyaml (>=5,<7)
|
|
24
25
|
Requires-Dist: rich (>=12,<14)
|
|
25
26
|
Requires-Dist: zstandard (>=0.19.0,<1)
|
|
26
|
-
Project-URL: Repository, https://github.com/
|
|
27
|
+
Project-URL: Repository, https://github.com/fossi-foundation/ciel
|
|
27
28
|
Description-Content-Type: text/markdown
|
|
28
29
|
|
|
29
|
-
<h1 align="center"
|
|
30
|
+
<h1 align="center">🌌 Ciel</h1>
|
|
30
31
|
<p align="center">
|
|
31
32
|
<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/
|
|
33
|
-
<a href="https://
|
|
33
|
+
<img src="https://github.com/fossi-foundation/ciel/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI Status" />
|
|
34
|
+
<a href="https://fossi-chat.org"><img src="https://img.shields.io/badge/Community-FOSSi%20Chat-1bb378?logo=element" alt="Invite to the Skywater PDK Slack"/></a>
|
|
34
35
|
<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
36
|
</p>
|
|
36
37
|
|
|
37
|
-
<p align="center">
|
|
38
|
+
<p align="center">Ciel is a version manager (and builder) for builds of open-source process design kits (PDKs).</p>
|
|
38
39
|
|
|
39
40
|
# Requirements
|
|
40
41
|
* Python 3.8+ with PIP
|
|
@@ -65,33 +66,39 @@ sudo yum install -y python3 python3-pip
|
|
|
65
66
|
# Installation and Upgrades
|
|
66
67
|
```sh
|
|
67
68
|
# To install (or upgrade)
|
|
68
|
-
python3 -m pip install --user --upgrade --no-cache-dir
|
|
69
|
+
python3 -m pip install --user --upgrade --no-cache-dir ciel
|
|
69
70
|
|
|
70
71
|
# To verify it works
|
|
71
|
-
|
|
72
|
+
ciel --version
|
|
72
73
|
```
|
|
73
74
|
|
|
74
75
|
# About the builds
|
|
75
|
-
In its current inception,
|
|
76
|
-
|
|
77
|
-
|sky130|gf180mcu|
|
|
78
|
-
|
|
79
|
-
|sky130_fd_io|gf180mcu_fd_io|
|
|
80
|
-
|sky130_fd_pr|gf180mcu_fd_pr|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
85
|
-
|
|
76
|
+
In its current inception, ciel supports builds of **sky130** and **gf180mcu** PDKs using [Open_PDKs](https://github.com/efabless/open_pdks), including the following libraries:
|
|
77
|
+
|
|
78
|
+
|sky130|gf180mcu|ihp_sg13g2|
|
|
79
|
+
|-|-|-|
|
|
80
|
+
|sky130_fd_io|gf180mcu_fd_io|sg13g2_io|
|
|
81
|
+
|sky130_fd_pr|gf180mcu_fd_pr|sg13g2_pr|
|
|
82
|
+
|sky130_fd_pr_reram$|gf180mcu_fd_pr|sg13g2_pr|
|
|
83
|
+
|sky130_fd_sc_hd|gf180mcu_fd_sc_mcu7t5v0|sg13g2_stdcell|
|
|
84
|
+
|sky130_ml_xx_hd|gf180mcu_fd_sc_mcu9t5v0|-|
|
|
85
|
+
|sky130_fd_sc_hvl|gf180mcu_osu_sc_gp9t3v3|-|
|
|
86
|
+
|sky130_fd_sc_lp|gf180mcu_osu_sc_gp12t3v3|-|
|
|
87
|
+
|sky130_fd_sc_ls|-|-|
|
|
88
|
+
|sky130_fd_sc_ms|-|-|
|
|
89
|
+
|sky130_fd_sc_hs|-|-|
|
|
90
|
+
|sky130_sram_macros|gf180mcu_fd_ip_sram|sg13g2_sram|
|
|
91
|
+
|
|
92
|
+
Builds for sky130 and gf180mcu are identified by their [**open_pdks**](https://github.com/rtimothyedwards/open_pdks) commit hashes. Builds for ihp_sg13g2 are identified by their [**IHP-Open-PDK**](https://github.com/ihp-gmbh/ihp-open-pdk) commit hashes.
|
|
86
93
|
|
|
87
94
|
# Usage
|
|
88
|
-
|
|
95
|
+
Ciel requires a so-called **PDK Root**. This PDK root can be anywhere on your computer, but by default it's the folder `~/.ciel` in your home directory. If you have the variable `PDK_ROOT` set, ciel will use that instead. You can also manually override both values by supplying the `--pdk-root` commandline argument.
|
|
89
96
|
|
|
90
97
|
## Listing All Available PDKs
|
|
91
|
-
To list all available pre-built PDKs hosted in this repository, you can just invoke `
|
|
98
|
+
To list all available pre-built PDKs hosted in this repository, you can just invoke `ciel ls-remote --pdk <PDK>`. If you omit the `--pdk` argument, `sky130` will be used as a default.
|
|
92
99
|
|
|
93
100
|
```sh
|
|
94
|
-
$
|
|
101
|
+
$ ciel ls-remote --pdk sky130
|
|
95
102
|
Pre-built sky130 PDK versions
|
|
96
103
|
├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
|
|
97
104
|
├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29) (installed)
|
|
@@ -101,19 +108,19 @@ Pre-built sky130 PDK versions
|
|
|
101
108
|
├── 8fe7f760ece2bb49b1c310e60243f0558977dae5 (2022.04.06)
|
|
102
109
|
└── 7519dfb04400f224f140749cda44ee7de6f5e095 (2022.02.10)
|
|
103
110
|
|
|
104
|
-
$
|
|
111
|
+
$ ciel ls-remote --pdk gf180mcu
|
|
105
112
|
Pre-built gf180mcu PDK versions
|
|
106
113
|
└── 120b0bd69c745825a0b8b76f364043a1cd08bb6a (2022.09.22)
|
|
107
114
|
```
|
|
108
115
|
|
|
109
|
-
It includes a
|
|
116
|
+
It includes a hash of the commit of the relevant repo used for that particular build, the date that this commit was created, and whether you already installed this PDK and/or if it is the currently enabled PDK.
|
|
110
117
|
|
|
111
118
|
## Listing Installed PDKs
|
|
112
|
-
Typing `
|
|
119
|
+
Typing `ciel 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
120
|
|
|
114
121
|
```sh
|
|
115
|
-
$
|
|
116
|
-
/home/test/
|
|
122
|
+
$ ciel ls --pdk sky130
|
|
123
|
+
/home/test/ciel/sky130/versions
|
|
117
124
|
├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
|
|
118
125
|
├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29)
|
|
119
126
|
└── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14)
|
|
@@ -123,31 +130,29 @@ $ cielo ls --pdk sky130
|
|
|
123
130
|
|
|
124
131
|
|
|
125
132
|
## Downloading and Enabling PDKs
|
|
126
|
-
You can enable a particular sky130 PDK by invoking `
|
|
133
|
+
You can enable a particular sky130 PDK by invoking `ciel 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
134
|
|
|
128
|
-
For example, to activate a build of sky130 using open_pdks `7519dfb04400f224f140749cda44ee7de6f5e095`, you invoke `
|
|
135
|
+
For example, to activate a build of sky130 using open_pdks `7519dfb04400f224f140749cda44ee7de6f5e095`, you invoke `ciel enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095`, as shown below:
|
|
129
136
|
|
|
130
137
|
```sh
|
|
131
|
-
$
|
|
138
|
+
$ ciel enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095
|
|
132
139
|
Downloading pre-built tarball for 7519dfb04400f224f140749cda44ee7de6f5e095… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
|
|
133
140
|
Unpacking… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
|
|
134
141
|
PDK version 7519dfb04400f224f140749cda44ee7de6f5e095 enabled.
|
|
135
142
|
```
|
|
136
143
|
|
|
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
144
|
## Building PDKs
|
|
140
|
-
For special cases, you may have to build the PDK yourself, which
|
|
145
|
+
For special cases, you may have to build the PDK yourself, which Ciel does support.
|
|
141
146
|
|
|
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:
|
|
147
|
+
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:fossi-foundation/nix-eda#magic` before building.
|
|
143
148
|
|
|
144
|
-
You can invoke `
|
|
149
|
+
You can invoke `ciel build --help` for more options. Be aware, the built PDK won't automatically be enabled and you'll have to `ciel enable` the appropriate version.
|
|
145
150
|
|
|
146
151
|
# License
|
|
147
152
|
The Apache License, version 2.0. See 'License'.
|
|
148
153
|
|
|
149
154
|
|
|
150
|
-
|
|
155
|
+
Ciel is based on [Volare](https://github.com/efabless/volare) by Efabless
|
|
151
156
|
Corporation:
|
|
152
157
|
|
|
153
158
|
```
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<h1 align="center"
|
|
1
|
+
<h1 align="center">🌌 Ciel</h1>
|
|
2
2
|
<p align="center">
|
|
3
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/
|
|
5
|
-
<a href="https://
|
|
4
|
+
<img src="https://github.com/fossi-foundation/ciel/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI Status" />
|
|
5
|
+
<a href="https://fossi-chat.org"><img src="https://img.shields.io/badge/Community-FOSSi%20Chat-1bb378?logo=element" alt="Invite to the Skywater PDK Slack"/></a>
|
|
6
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
7
|
</p>
|
|
8
8
|
|
|
9
|
-
<p align="center">
|
|
9
|
+
<p align="center">Ciel is a version manager (and builder) for builds of open-source process design kits (PDKs).</p>
|
|
10
10
|
|
|
11
11
|
# Requirements
|
|
12
12
|
* Python 3.8+ with PIP
|
|
@@ -37,33 +37,39 @@ sudo yum install -y python3 python3-pip
|
|
|
37
37
|
# Installation and Upgrades
|
|
38
38
|
```sh
|
|
39
39
|
# To install (or upgrade)
|
|
40
|
-
python3 -m pip install --user --upgrade --no-cache-dir
|
|
40
|
+
python3 -m pip install --user --upgrade --no-cache-dir ciel
|
|
41
41
|
|
|
42
42
|
# To verify it works
|
|
43
|
-
|
|
43
|
+
ciel --version
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
# About the builds
|
|
47
|
-
In its current inception,
|
|
48
|
-
|
|
49
|
-
|sky130|gf180mcu|
|
|
50
|
-
|
|
51
|
-
|sky130_fd_io|gf180mcu_fd_io|
|
|
52
|
-
|sky130_fd_pr|gf180mcu_fd_pr|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
|
|
47
|
+
In its current inception, ciel supports builds of **sky130** and **gf180mcu** PDKs using [Open_PDKs](https://github.com/efabless/open_pdks), including the following libraries:
|
|
48
|
+
|
|
49
|
+
|sky130|gf180mcu|ihp_sg13g2|
|
|
50
|
+
|-|-|-|
|
|
51
|
+
|sky130_fd_io|gf180mcu_fd_io|sg13g2_io|
|
|
52
|
+
|sky130_fd_pr|gf180mcu_fd_pr|sg13g2_pr|
|
|
53
|
+
|sky130_fd_pr_reram$|gf180mcu_fd_pr|sg13g2_pr|
|
|
54
|
+
|sky130_fd_sc_hd|gf180mcu_fd_sc_mcu7t5v0|sg13g2_stdcell|
|
|
55
|
+
|sky130_ml_xx_hd|gf180mcu_fd_sc_mcu9t5v0|-|
|
|
56
|
+
|sky130_fd_sc_hvl|gf180mcu_osu_sc_gp9t3v3|-|
|
|
57
|
+
|sky130_fd_sc_lp|gf180mcu_osu_sc_gp12t3v3|-|
|
|
58
|
+
|sky130_fd_sc_ls|-|-|
|
|
59
|
+
|sky130_fd_sc_ms|-|-|
|
|
60
|
+
|sky130_fd_sc_hs|-|-|
|
|
61
|
+
|sky130_sram_macros|gf180mcu_fd_ip_sram|sg13g2_sram|
|
|
62
|
+
|
|
63
|
+
Builds for sky130 and gf180mcu are identified by their [**open_pdks**](https://github.com/rtimothyedwards/open_pdks) commit hashes. Builds for ihp_sg13g2 are identified by their [**IHP-Open-PDK**](https://github.com/ihp-gmbh/ihp-open-pdk) commit hashes.
|
|
58
64
|
|
|
59
65
|
# Usage
|
|
60
|
-
|
|
66
|
+
Ciel requires a so-called **PDK Root**. This PDK root can be anywhere on your computer, but by default it's the folder `~/.ciel` in your home directory. If you have the variable `PDK_ROOT` set, ciel will use that instead. You can also manually override both values by supplying the `--pdk-root` commandline argument.
|
|
61
67
|
|
|
62
68
|
## Listing All Available PDKs
|
|
63
|
-
To list all available pre-built PDKs hosted in this repository, you can just invoke `
|
|
69
|
+
To list all available pre-built PDKs hosted in this repository, you can just invoke `ciel ls-remote --pdk <PDK>`. If you omit the `--pdk` argument, `sky130` will be used as a default.
|
|
64
70
|
|
|
65
71
|
```sh
|
|
66
|
-
$
|
|
72
|
+
$ ciel ls-remote --pdk sky130
|
|
67
73
|
Pre-built sky130 PDK versions
|
|
68
74
|
├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
|
|
69
75
|
├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29) (installed)
|
|
@@ -73,19 +79,19 @@ Pre-built sky130 PDK versions
|
|
|
73
79
|
├── 8fe7f760ece2bb49b1c310e60243f0558977dae5 (2022.04.06)
|
|
74
80
|
└── 7519dfb04400f224f140749cda44ee7de6f5e095 (2022.02.10)
|
|
75
81
|
|
|
76
|
-
$
|
|
82
|
+
$ ciel ls-remote --pdk gf180mcu
|
|
77
83
|
Pre-built gf180mcu PDK versions
|
|
78
84
|
└── 120b0bd69c745825a0b8b76f364043a1cd08bb6a (2022.09.22)
|
|
79
85
|
```
|
|
80
86
|
|
|
81
|
-
It includes a
|
|
87
|
+
It includes a hash of the commit of the relevant repo used for that particular build, the date that this commit was created, and whether you already installed this PDK and/or if it is the currently enabled PDK.
|
|
82
88
|
|
|
83
89
|
## Listing Installed PDKs
|
|
84
|
-
Typing `
|
|
90
|
+
Typing `ciel 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
91
|
|
|
86
92
|
```sh
|
|
87
|
-
$
|
|
88
|
-
/home/test/
|
|
93
|
+
$ ciel ls --pdk sky130
|
|
94
|
+
/home/test/ciel/sky130/versions
|
|
89
95
|
├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
|
|
90
96
|
├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29)
|
|
91
97
|
└── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14)
|
|
@@ -95,31 +101,29 @@ $ cielo ls --pdk sky130
|
|
|
95
101
|
|
|
96
102
|
|
|
97
103
|
## Downloading and Enabling PDKs
|
|
98
|
-
You can enable a particular sky130 PDK by invoking `
|
|
104
|
+
You can enable a particular sky130 PDK by invoking `ciel 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
105
|
|
|
100
|
-
For example, to activate a build of sky130 using open_pdks `7519dfb04400f224f140749cda44ee7de6f5e095`, you invoke `
|
|
106
|
+
For example, to activate a build of sky130 using open_pdks `7519dfb04400f224f140749cda44ee7de6f5e095`, you invoke `ciel enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095`, as shown below:
|
|
101
107
|
|
|
102
108
|
```sh
|
|
103
|
-
$
|
|
109
|
+
$ ciel enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095
|
|
104
110
|
Downloading pre-built tarball for 7519dfb04400f224f140749cda44ee7de6f5e095… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
|
|
105
111
|
Unpacking… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
|
|
106
112
|
PDK version 7519dfb04400f224f140749cda44ee7de6f5e095 enabled.
|
|
107
113
|
```
|
|
108
114
|
|
|
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
115
|
## Building PDKs
|
|
112
|
-
For special cases, you may have to build the PDK yourself, which
|
|
116
|
+
For special cases, you may have to build the PDK yourself, which Ciel does support.
|
|
113
117
|
|
|
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:
|
|
118
|
+
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:fossi-foundation/nix-eda#magic` before building.
|
|
115
119
|
|
|
116
|
-
You can invoke `
|
|
120
|
+
You can invoke `ciel build --help` for more options. Be aware, the built PDK won't automatically be enabled and you'll have to `ciel enable` the appropriate version.
|
|
117
121
|
|
|
118
122
|
# License
|
|
119
123
|
The Apache License, version 2.0. See 'License'.
|
|
120
124
|
|
|
121
125
|
|
|
122
|
-
|
|
126
|
+
Ciel is based on [Volare](https://github.com/efabless/volare) by Efabless
|
|
123
127
|
Corporation:
|
|
124
128
|
|
|
125
129
|
```
|
|
@@ -21,7 +21,7 @@ from rich.console import Console
|
|
|
21
21
|
from .__version__ import __version__
|
|
22
22
|
from .common import (
|
|
23
23
|
Version,
|
|
24
|
-
|
|
24
|
+
get_ciel_home,
|
|
25
25
|
resolve_version,
|
|
26
26
|
)
|
|
27
27
|
from .click_common import (
|
|
@@ -57,15 +57,11 @@ def output_cmd(pdk_root, pdk):
|
|
|
57
57
|
if sys.stdout.isatty():
|
|
58
58
|
if version is None:
|
|
59
59
|
print(f"No version of the PDK {pdk} is currently enabled at {pdk_root}.")
|
|
60
|
-
print(
|
|
61
|
-
"Invoke cielo --help for assistance installing and enabling versions."
|
|
62
|
-
)
|
|
60
|
+
print("Invoke ciel --help for assistance installing and enabling versions.")
|
|
63
61
|
exit(1)
|
|
64
62
|
else:
|
|
65
63
|
print(f"Installed: {pdk} v{version.name}")
|
|
66
|
-
print(
|
|
67
|
-
"Invoke cielo --help for assistance installing and enabling versions."
|
|
68
|
-
)
|
|
64
|
+
print("Invoke ciel --help for assistance installing and enabling versions.")
|
|
69
65
|
else:
|
|
70
66
|
if version is None:
|
|
71
67
|
exit(1)
|
|
@@ -175,7 +171,7 @@ def list_remote_cmd(pdk_root, pdk):
|
|
|
175
171
|
@click.argument("version", required=False)
|
|
176
172
|
def path_cmd(pdk_root, pdk, version):
|
|
177
173
|
"""
|
|
178
|
-
Prints the path of the
|
|
174
|
+
Prints the path of the ciel PDK root.
|
|
179
175
|
|
|
180
176
|
If a version is provided over the commandline, it prints the path to this
|
|
181
177
|
version instead.
|
|
@@ -184,7 +180,7 @@ def path_cmd(pdk_root, pdk, version):
|
|
|
184
180
|
version = Version(version, pdk)
|
|
185
181
|
print(version.get_dir(pdk_root), end="")
|
|
186
182
|
else:
|
|
187
|
-
print(
|
|
183
|
+
print(get_ciel_home(pdk_root))
|
|
188
184
|
|
|
189
185
|
|
|
190
186
|
@click.command("enable")
|
|
@@ -270,7 +266,7 @@ def fetch_cmd(
|
|
|
270
266
|
include_libraries,
|
|
271
267
|
):
|
|
272
268
|
"""
|
|
273
|
-
Fetches a PDK to
|
|
269
|
+
Fetches a PDK to Ciel's store without setting it as the "enabled" version
|
|
274
270
|
in ``PDK_ROOT``.
|
|
275
271
|
|
|
276
272
|
Parameters: <version> (Optional)
|
|
@@ -380,7 +376,7 @@ def enable_or_build_cmd(
|
|
|
380
376
|
@click.group()
|
|
381
377
|
@click.version_option(
|
|
382
378
|
__version__,
|
|
383
|
-
message="""
|
|
379
|
+
message="""Ciel v%(version)s ©2022-2025 Efabless Corporation and Contributors
|
|
384
380
|
|
|
385
381
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
386
382
|
you may not use this program except in compliance with the License.
|
|
@@ -421,7 +417,7 @@ except ModuleNotFoundError as e:
|
|
|
421
417
|
"Please install Python 3 with all (optional) dependencies using your operating system's package manager.",
|
|
422
418
|
file=sys.stderr,
|
|
423
419
|
)
|
|
424
|
-
print("This is a fatal error.
|
|
420
|
+
print("This is a fatal error. Ciel will now quit.", file=sys.stderr)
|
|
425
421
|
exit(-1)
|
|
426
422
|
|
|
427
423
|
|
|
@@ -160,7 +160,7 @@ def push(
|
|
|
160
160
|
raise FileNotFoundError(f"Version {version} not found.")
|
|
161
161
|
|
|
162
162
|
tempdir = tempfile.gettempdir()
|
|
163
|
-
tarball_directory = os.path.join(tempdir, "
|
|
163
|
+
tarball_directory = os.path.join(tempdir, "ciel", f"{uuid.uuid4()}", version)
|
|
164
164
|
mkdirp(tarball_directory)
|
|
165
165
|
|
|
166
166
|
final_tarballs = []
|
|
@@ -200,7 +200,7 @@ def push(
|
|
|
200
200
|
# If someone wants to rewrite this to not use ghr, please, by all means.
|
|
201
201
|
console.log("Starting upload…")
|
|
202
202
|
|
|
203
|
-
body = f"{pdk} variants built using
|
|
203
|
+
body = f"{pdk} variants built using ciel"
|
|
204
204
|
date = get_commit_date(version, family.repo, session)
|
|
205
205
|
if date is not None:
|
|
206
206
|
body = f"{pdk} variants (released on {date_to_iso8601(date)})"
|
|
@@ -15,7 +15,7 @@ import os
|
|
|
15
15
|
import shutil
|
|
16
16
|
import subprocess
|
|
17
17
|
|
|
18
|
-
from
|
|
18
|
+
from ciel.github import GitHubSession
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
def open_pdks_fix_makefile(at_path: str):
|
|
@@ -63,7 +63,7 @@ def patch_open_pdks(at_path: str):
|
|
|
63
63
|
) # First one with --with-reference
|
|
64
64
|
if not can_build:
|
|
65
65
|
print(
|
|
66
|
-
f"Commit {head} cannot be built using
|
|
66
|
+
f"Commit {head} cannot be built using Ciel: the minimum version of open_pdks buildable with Ciel is 1.0.381."
|
|
67
67
|
)
|
|
68
68
|
exit(-1)
|
|
69
69
|
|
|
@@ -31,7 +31,7 @@ from ..families import Family
|
|
|
31
31
|
from ..github import opdks_repo
|
|
32
32
|
from ..common import (
|
|
33
33
|
Version,
|
|
34
|
-
|
|
34
|
+
get_ciel_dir,
|
|
35
35
|
mkdirp,
|
|
36
36
|
)
|
|
37
37
|
|
|
@@ -231,9 +231,7 @@ def build(
|
|
|
231
231
|
using_repos = {}
|
|
232
232
|
|
|
233
233
|
timestamp = datetime.now().strftime("build_gf180mcu-%Y-%m-%d-%H-%M-%S")
|
|
234
|
-
build_directory = os.path.join(
|
|
235
|
-
get_cielo_dir(pdk_root, "gf180mcu"), "build", version
|
|
236
|
-
)
|
|
234
|
+
build_directory = os.path.join(get_ciel_dir(pdk_root, "gf180mcu"), "build", version)
|
|
237
235
|
log_dir = os.path.join(build_directory, "logs", timestamp)
|
|
238
236
|
mkdirp(log_dir)
|
|
239
237
|
|
|
@@ -26,7 +26,7 @@ from ..families import Family
|
|
|
26
26
|
from ..github import ihp_repo
|
|
27
27
|
from ..common import (
|
|
28
28
|
Version,
|
|
29
|
-
|
|
29
|
+
get_ciel_dir,
|
|
30
30
|
mkdirp,
|
|
31
31
|
)
|
|
32
32
|
|
|
@@ -132,7 +132,7 @@ def build(
|
|
|
132
132
|
using_repos = {}
|
|
133
133
|
|
|
134
134
|
build_directory = os.path.join(
|
|
135
|
-
|
|
135
|
+
get_ciel_dir(pdk_root, "ihp_sg13g2"), "build", version
|
|
136
136
|
)
|
|
137
137
|
timestamp = datetime.now().strftime("build_ihp-sg13g2-%Y-%m-%d-%H-%M-%S")
|
|
138
138
|
log_dir = os.path.join(build_directory, "logs", timestamp)
|
|
@@ -32,7 +32,7 @@ from ..families import Family
|
|
|
32
32
|
from ..github import opdks_repo
|
|
33
33
|
from ..common import (
|
|
34
34
|
Version,
|
|
35
|
-
|
|
35
|
+
get_ciel_dir,
|
|
36
36
|
mkdirp,
|
|
37
37
|
)
|
|
38
38
|
|
|
@@ -327,7 +327,7 @@ def build(
|
|
|
327
327
|
if using_repos is None:
|
|
328
328
|
using_repos = {}
|
|
329
329
|
|
|
330
|
-
build_directory = os.path.join(
|
|
330
|
+
build_directory = os.path.join(get_ciel_dir(pdk_root, "sky130"), "build", version)
|
|
331
331
|
timestamp = datetime.now().strftime("build_sky130-%Y-%m-%d-%H-%M-%S")
|
|
332
332
|
log_dir = os.path.join(build_directory, "logs", timestamp)
|
|
333
333
|
mkdirp(log_dir)
|
|
@@ -71,7 +71,7 @@ def opt_build(function: Callable):
|
|
|
71
71
|
multiple=True,
|
|
72
72
|
hidden=True,
|
|
73
73
|
type=str,
|
|
74
|
-
help="Use this repository instead of cloning and checking out, in the format repo_name=/path/to/repo. You can pass it multiple times to replace multiple repos. This feature is intended for
|
|
74
|
+
help="Use this repository instead of cloning and checking out, in the format repo_name=/path/to/repo. You can pass it multiple times to replace multiple repos. This feature is intended for ciel and PDK developers.",
|
|
75
75
|
)(function)
|
|
76
76
|
return function
|
|
77
77
|
|
|
@@ -41,12 +41,12 @@ def mkdirp(path):
|
|
|
41
41
|
# -- API Variables
|
|
42
42
|
|
|
43
43
|
# -- PDK Root Management
|
|
44
|
-
VOLARE_DEFAULT_HOME = os.path.join(os.path.expanduser("~"), ".
|
|
44
|
+
VOLARE_DEFAULT_HOME = os.path.join(os.path.expanduser("~"), ".ciel")
|
|
45
45
|
VOLARE_RESOLVED_HOME = os.getenv("PDK_ROOT") or VOLARE_DEFAULT_HOME
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
def _get_current_version(pdk_root: str, pdk: str) -> Optional[str]:
|
|
49
|
-
current_file = os.path.join(
|
|
49
|
+
current_file = os.path.join(get_ciel_dir(pdk_root, pdk), "current")
|
|
50
50
|
current_file_dir = os.path.dirname(current_file)
|
|
51
51
|
mkdirp(current_file_dir)
|
|
52
52
|
version = None
|
|
@@ -58,16 +58,16 @@ def _get_current_version(pdk_root: str, pdk: str) -> Optional[str]:
|
|
|
58
58
|
return version
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
def
|
|
61
|
+
def get_ciel_home(pdk_root: Optional[str] = None) -> str:
|
|
62
62
|
return pdk_root or VOLARE_RESOLVED_HOME
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
def
|
|
66
|
-
return os.path.join(pdk_root, "
|
|
65
|
+
def get_ciel_dir(pdk_root: str, pdk: str) -> str:
|
|
66
|
+
return os.path.join(pdk_root, "ciel", pdk)
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
def get_versions_dir(pdk_root: str, pdk: str) -> str:
|
|
70
|
-
return os.path.join(
|
|
70
|
+
return os.path.join(get_ciel_dir(pdk_root, pdk), "versions")
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
@dataclass
|
|
@@ -106,7 +106,7 @@ class Version(object):
|
|
|
106
106
|
except FileNotFoundError:
|
|
107
107
|
pass
|
|
108
108
|
|
|
109
|
-
current_file = os.path.join(
|
|
109
|
+
current_file = os.path.join(get_ciel_dir(pdk_root, self.pdk), "current")
|
|
110
110
|
os.unlink(current_file)
|
|
111
111
|
|
|
112
112
|
def uninstall(self, pdk_root: str):
|
|
@@ -116,7 +116,7 @@ class GitHubSession(httpx.Client):
|
|
|
116
116
|
except ValueError as e:
|
|
117
117
|
if "Unknown scheme for proxy URL" in e.args[0] and "socks://" in e.args[0]:
|
|
118
118
|
print(
|
|
119
|
-
f"Invalid SOCKS proxy:
|
|
119
|
+
f"Invalid SOCKS proxy: Ciel only supports http://, https:// and socks5:// schemes: {e.args[0]}",
|
|
120
120
|
file=sys.stderr,
|
|
121
121
|
)
|
|
122
122
|
exit(-1)
|
|
@@ -147,7 +147,7 @@ class GitHubSession(httpx.Client):
|
|
|
147
147
|
|
|
148
148
|
@classmethod
|
|
149
149
|
def get_user_agent(Self) -> str:
|
|
150
|
-
return f"
|
|
150
|
+
return f"ciel/{__version__}"
|
|
151
151
|
|
|
152
152
|
|
|
153
153
|
def get_commit_date(
|
|
@@ -31,7 +31,7 @@ from .github import GitHubSession
|
|
|
31
31
|
from .common import (
|
|
32
32
|
Version,
|
|
33
33
|
get_versions_dir,
|
|
34
|
-
|
|
34
|
+
get_ciel_dir,
|
|
35
35
|
)
|
|
36
36
|
from .build import build, push
|
|
37
37
|
from .families import Family
|
|
@@ -183,7 +183,7 @@ def fetch(
|
|
|
183
183
|
include_common=common_missing,
|
|
184
184
|
session=session,
|
|
185
185
|
)
|
|
186
|
-
tarball_directory = tempfile.TemporaryDirectory(suffix=".
|
|
186
|
+
tarball_directory = tempfile.TemporaryDirectory(suffix=".ciel")
|
|
187
187
|
for name, link in release_link_list:
|
|
188
188
|
tarball_path = os.path.join(tarball_directory.name, name)
|
|
189
189
|
tarball_paths.append(tarball_path)
|
|
@@ -324,7 +324,7 @@ def enable(
|
|
|
324
324
|
session=session,
|
|
325
325
|
)
|
|
326
326
|
|
|
327
|
-
current_file = os.path.join(
|
|
327
|
+
current_file = os.path.join(get_ciel_dir(pdk_root, pdk), "current")
|
|
328
328
|
current_file_dir = os.path.dirname(current_file)
|
|
329
329
|
mkdirp(current_file_dir)
|
|
330
330
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "ciel"
|
|
3
|
-
version = "0.21.
|
|
3
|
+
version = "0.21.0dev1"
|
|
4
4
|
description = "An PDK builder/version manager for PDKs in the open_pdks format"
|
|
5
5
|
authors = ["Efabless Corporation and Contributors <donn@efabless.com>"]
|
|
6
6
|
readme = "Readme.md"
|
|
7
7
|
license = "Apache-2.0"
|
|
8
|
-
repository = "https://github.com/
|
|
8
|
+
repository = "https://github.com/fossi-foundation/ciel"
|
|
9
9
|
classifiers = [
|
|
10
10
|
"License :: OSI Approved :: Apache Software License",
|
|
11
11
|
"Programming Language :: Python :: 3",
|
|
@@ -35,7 +35,7 @@ types-attrs = "*"
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
[tool.poetry.scripts]
|
|
38
|
-
|
|
38
|
+
ciel = "ciel.__main__:cli"
|
|
39
39
|
|
|
40
40
|
[build-system]
|
|
41
41
|
requires = ["poetry-core>=1.0.0"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|