Skip to main content

An PDK builder/version manager for PDKs in the open_pdks format

Project description

☁️ Cielo

License: Apache 2.0 CI Status Invite to the Skywater PDK Slack Code Style: Black

Cielo is a version manager (and builder) for builds of Google open-source PDKs using open_pdks.

Requirements

  • Python 3.8+ with PIP
  • macOS or GNU/Linux

macOS

Get Homebrew then:

brew install python3

Debian and Ubuntu

Debian 11+ or Ubuntu 20.04+ is required.

sudo apt-get update
sudo apt-get install python3 python3-pip xz-utils

RHEL and Derivatives

RHEL 8+ or compatible operating system required.

sudo yum install -y python3 python3-pip

Installation and Upgrades

# To install (or upgrade)
python3 -m pip install --user --upgrade --no-cache-dir cielo

# To verify it works
cielo --version

About the builds

In its current inception, cielo supports builds of sky130 and gf180mcu PDKs using Open_PDKs, including the following libraries:

sky130 gf180mcu
sky130_fd_io gf180mcu_fd_io
sky130_fd_pr gf180mcu_fd_pr
sky130_fd_sc_hd gf180mcu_fd_sc_mcu7t5v0
sky130_fd_sc_hvl gf180mcu_fd_sc_mcu9t5v0
sky130 sram modules gf180mcu_fd_ip_sram

All builds are identified by their open_pdks commit hash.

Usage

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.

Listing All Available PDKs

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.

$ cielo ls-remote --pdk sky130
Pre-built sky130 PDK versions
├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29) (installed)
├── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14) (installed)
├── 660c6bdc8715dc7b3db95a1ce85392bbf2a2b195 (2022.04.08)
├── 5890e791e37699239abedfd2a67e55162e25cd94 (2022.04.06)
├── 8fe7f760ece2bb49b1c310e60243f0558977dae5 (2022.04.06)
└── 7519dfb04400f224f140749cda44ee7de6f5e095 (2022.02.10)

$ cielo ls-remote --pdk gf180mcu
Pre-built gf180mcu PDK versions
└── 120b0bd69c745825a0b8b76f364043a1cd08bb6a (2022.09.22)

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.

Listing Installed PDKs

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.

$ cielo ls --pdk sky130
/home/test/cielo/sky130/versions
├── 44a43c23c81b45b8e774ae7a84899a5a778b6b0b (2022.08.16) (enabled)
├── e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066 (2022.07.29)
└── 41c0908b47130d5675ff8484255b43f66463a7d6 (2022.04.14)

(If you're not connected to the Internet, the release date of the commit will not be included.)

Downloading and Enabling PDKs

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.

For example, to activate a build of sky130 using open_pdks 7519dfb04400f224f140749cda44ee7de6f5e095, you invoke cielo enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095, as shown below:

$ cielo enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095
Downloading pre-built tarball for 7519dfb04400f224f140749cda44ee7de6f5e095… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Unpacking…                                                                  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
PDK version 7519dfb04400f224f140749cda44ee7de6f5e095 enabled.

What's more is: if you're using a repository with a tool_metadata.yml file, such as OpenLane or 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.

Building PDKs

For special cases, you may have to build the PDK yourself, which Cielo does support.

You'll need Magic installed and in PATH. You can either do that manually or, if you have Nix, invoke nix shell github:efabless/openlane2#magic before building.

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.

License

The Apache License, version 2.0. See 'License'.

Cielo is based on Volare by Efabless Corporation:

Copyright 2022-2025 Efabless Corporation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ciel-0.21.0.dev0.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ciel-0.21.0.dev0-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file ciel-0.21.0.dev0.tar.gz.

File metadata

  • Download URL: ciel-0.21.0.dev0.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for ciel-0.21.0.dev0.tar.gz
Algorithm Hash digest
SHA256 5758bc8c73dd9d7df0bbdbdb3f07c2e9f63565b8157ef12f74292fd23fa80cd5
MD5 c645295f8a6c11a72a052732d6511afd
BLAKE2b-256 a835784360795409dafa6f807e219781e3b38c197c98132dc700f2367a1c05cd

See more details on using hashes here.

File details

Details for the file ciel-0.21.0.dev0-py3-none-any.whl.

File metadata

  • Download URL: ciel-0.21.0.dev0-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for ciel-0.21.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac46164c4a2a37e5afd6b052598d26f185e25c504600d8a4a87d49f2c8799feb
MD5 d50b3d64b92d95b275e77ae33baff893
BLAKE2b-256 503926696b9d75f5d2f464cb56624a6786a17816174623f466951f03cebdd5f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page