Skip to main content

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

Project description

⛰️ Volare

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

Volare 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 volare

# To verify it works
volare --version

About the builds

In its current inception, volare 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

Volare requires a so-called PDK Root. This PDK root can be anywhere on your computer, but by default it's the folder ~/.volare in your home directory. If you have the variable PDK_ROOT set, volare 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 volare ls-remote --pdk <PDK>. If you omit the --pdk argument, sky130 will be used as a default.

$ volare 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)

$ volare 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 volare 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.

$ volare ls --pdk sky130
/home/test/volare/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 volare 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 volare enable --pdk sky130 7519dfb04400f224f140749cda44ee7de6f5e095, as shown below:

$ volare 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 volare enable --pdk sky130 without the commit hash and Volare 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 Volare 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 volare build --help for more options. Be aware, the built PDK won't automatically be enabled and you'll have to volare enable the appropriate version.

License

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

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

volare-0.20.6.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

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

volare-0.20.6-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

Details for the file volare-0.20.6.tar.gz.

File metadata

  • Download URL: volare-0.20.6.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for volare-0.20.6.tar.gz
Algorithm Hash digest
SHA256 a2ebd9b8a81de144dbc352eab71670e7e4b3e4713272387479a75935569e076a
MD5 e5ee7c1b2c2152f2228adedc26e7a5b8
BLAKE2b-256 447588de19ca6bbeb05b562cde53a4ba5b456090258531009f5fc1d30edd987b

See more details on using hashes here.

File details

Details for the file volare-0.20.6-py3-none-any.whl.

File metadata

  • Download URL: volare-0.20.6-py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for volare-0.20.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7ff6ac0a79e59087f2db4255556b3a0fd2d1e3e54afb776c5d73f64242f36b01
MD5 258679513d06f2b219d685c1a98dffa5
BLAKE2b-256 5307d48ce7f1fa1d75cc4429db8d6ad244cdef99961d5014e09ac09a2c882263

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