2.4. Sky130 Technology Library

Hammer supports the Skywater 130nm Technology process. The SkyWater Open Source PDK is a collaboration between Google and SkyWater Technology Foundry to provide a fully open source Process Design Kit (PDK) and related resources, which can be used to create manufacturable designs at SkyWater’s facility.

2.4.1. PDK Setup

All Sky130 PDK files required for the Hammer VLSI flow can now be installed via conda by running:

conda install -c litex-hub open_pdks.sky130a

We recommend using the conda install, but the manual PDK setup is documented below (although it may be outdated).

Now in your Hammer YAML configs, point to the location of this install:

technology.sky130.sky130A: "/path/to/conda/env/share/pdk/sky130A"

2.4.2. SRAM Macros

If you are using SRAMs in your design, such as for the Chipyard Sky130 tutorial, you will require a set of SRAM macros. The Sky130 PDK did not come with it’s own SRAM macros, so these have been generated by various third-party contributors. Hammer is compatible with Sky130 SRAM macros generated by Sram22 and OpenRAM, but starting with Hammer v1.0.2 only Sram22 macros will be supported. To obtain these macros, clone their github repo:

git clone https://github.com/rahulk29/sram22_sky130_macros

Then set the respective Hammer YAML key:

technology.sky130.sram22_sky130_macros: "/path/to/sram22_sky130_macros"

Note that the various configurations of the SRAMs available are encoded in the file sram-cache.json. To modify this file to include different configurations, or switch to using the OpenRAM SRAMs, navigate to ./extra/[sram22|openram] and run the script ./sram-cache-gen.py for usage information.

2.4.3. NDA Files

The NDA version of the Sky130 PDK is only required for Siemens Calibre to perform DRC/LVS signoff with the commercial VLSI flow. It is NOT REQUIRED for the remaining commercial flow, as well as the open-source tool flow. Therefore this NDA PDK is not used to generate a GDS.

If you have access to the NDA repo, you should add this path to your Hammer YAML configs:

technology.sky130.sky130_nda: "/path/to/skywater-src-nda"

We use the Calibre decks in the s8 PDK, version V2.0.1, see here for the DRC deck path and here for the LVS deck path.

2.4.4. Resources

The good thing about this process being open-source is that most questions about the process are answerable through a google search. The tradeoff is that the documentation is a bit of a mess, and is currently scattered over a few pages and Github repos. We try to summarize these below.


  • Sram22 pre-compiled macros

    • Various pre-compiled sizes of SRAM macros to support Hammer Sky130 flow

  • Sram22

    • Open-source SRAM generator

    • Currently only supports the Sky130 process

    • Very much under development, and some parts currently require commercial tools (for LEF and LIB generation)

  • OpenRAM pre-compiled macros

    • Precompiled sizes are 1kbytes, 2kbytes and 4kbytes

  • OpenRAM

    • Open-source static random access memory (SRAM) compiler

Git repos:


2.4.5. Manual PDK Setup PDK Structure

OpenLANE expects a certain file structure for the Sky130 PDK. We recommend adhering to this file structure for Hammer as well. All the files reside in a root folder (named something like skywater or sky130). The environment variable $PDK_ROOT should be set to this folder’s path:

export PDK_ROOT=<path-to-skywater-directory>

$PDK_ROOT contains the following:

  • skywater-pdk

    • Original PDK source files

  • open_pdks

    • install of Open-PDKs tool

  • share/pdk/sky130A

    • output files from Open-PDKs compilation process Prerequisites for PDK Setup

  • Magic

    • required for open_pdks file generation

    • tricky to install, closely follow the directions on the Install page of the website

      • as the directions indicate, you will likely need to manually specify the location of the Tcl/Tk package installation using --with-tcl and --with-tk

If using conda, these installs alone caused the Magic install to work:

conda install -c intel tcl 
conda install -c anaconda tk 
conda install -c anaconda libglu PDK Install

In $PDK_ROOT, clone the skywater-pdk repo and generate the liberty files for each library:

git clone https://github.com/google/skywater-pdk.git
cd skywater-pdk
# Expect a large download! ~7GB at time of writing.
git submodule init libraries/*/latest
git submodule update
# Regenerate liberty files
make timing

Again in $PDK_ROOT, clone the open_pdks repo and run the install process to generate the sky130A directory:

git clone https://github.com/RTimothyEdwards/open_pdks.git
cd open_pdks
./configure \
    --enable-sky130-pdk=$PDK_ROOT/skywater-pdk/libraries \
    --prefix=$PDK_ROOT \
make install

This generates all the Sky130 PDK files and installs them to $PDK_ROOT/share/pdk/sky130A