Sky130PDK.jl

The purpose of this package is to make it extremely easy to include the Sky130PDK by use of the Julia package manager which allows for simple installation, compatible version resolution and updating.

PDK Contents

This Sky130PDK originally came from the Google/Skywater collaboration (here) and has been updated with fixes from various groups. The continuous (non-binned) models have been added for device models (except for RF). If there are issues then please open an Issue.

Usage

1. Netlist Usage

When CedarSim reads the netlist and sees a file path for an .include or .lib file with a jlpkg://Sky130PDK prefix it will reference the Sky130PDK model files via the Julia package mechanism. Modify your netlist like so:

.lib jlpkg://Sky130PDK/sky130A/libs.tech/ngspice/sky130.lib.spice tt

2. Top-level Julia Script

Then in your Julia script that runs the simulation, ensure to load the Sky130PDK package as well as CedarEDA. If the Julia package manager asks you to install the package then answer y.

julia> using Sky130PDK
 │ Package Sky130PDK not found, but a package named Sky130PDK is available
 │ from a registry. 
 │ Install package?
 │   (@v1.11) pkg> add Sky130PDK 
 └ (y/n/o) [y]: y
julia> using CedarEDA

Now to run a simulation with the PDK load CedarEDA create a script like so:

using CedarEDA
using CedarWaves
using Sky130PDK

sm = SimManager("top.spice") # read netlist with .param cload and rload
# Setup 3x3=9 point parameter sweep
params = ProductSweep(
  cload=[10e-12, 20e-12, 50e-12],
  rload=[1000, 10e3, 20e3],
)
sp = SimParameterization(params=params, tspan=(0, 20-e6)) # parameterize netlist
tran1 = tran!(sp) # run transient
inspect(tran1.tran.node_vout) # plot signals

p2p = peak2peak.(tran1.tran.node_vout) # measure P2P voltage of Vout across 9 point sweep

The above will run a 2D parameter sweep and make a peak2peak measurement of the vout node for each sweep point.

Version Control

Since Sky130PDK is a regular Julia package it has version numbers and users can specify which version of the PDK is compatible with their project or simulator. See the Managing Documentation in the Pkg manual for more info.