Overview
This repository runs the following pipecleaner designs through a digital physical design flow using Design Compiler and Innovus with the SkyWater open source 130nm PDK.
- GcdUnit - computes the greatest common divisor function, consists of 100-200 gates
- SramUnit - uses an OpenRAM generated SRAM, plus a simple counter that supplies addresses to it
Setup
To run this flow, please install the following dependencies first in this order:
skywater-pdk
Get SkyWater PDK:
git clone https://github.com/google/skywater-pdk.git
cd skywater-pdk
The cell libraries are in submodules that need to be checked out independently:
git submodule update --init libraries/sky130_fd_sc_hd/latest
git submodule update --init libraries/sky130_fd_pr/latest
git submodule update --init libraries/sky130_fd_io/latest
To create the .lib timing files:
make timing
cd ..
open_pdks
git clone https://github.com/RTimothyEdwards/open_pdks.git
cd open_pdks
./configure --enable-sky130-pdk=`realpath ../skywater-pdk/libraries` --with-sky130-local-path=`realpath ../PDKS`
make
make install
cd ..
-
mflowgen
- This is a tool to create ASIC design flows in a modular fashion. Follow the setup steps at https://mflowgen.readthedocs.io/en/latest/quick-start.html. -
skywater-130nm-adk
- This repo has some scripts that convert the SkyWater PDK into the format that mflowgen expects. Follow the setup steps at https://code.stanford.edu/ee272/skywater-130nm-adk. The files that are inskywater-130nm-adk/view-standard
are the ones that mflowgen will use. (This is configured in thedesign/construct.py
file for each pipecleaner.)
Using the Pipecleaners
First, make sure you update various install paths in the setup.bashrc
file. Then source it.
bash
source setup.bashrc
Next, enter into the build directory of the pipecleaner you want to run, and run the following:
cd GcdUnit/build
mflowgen run --design ../design/
Now, if you do make status
you will see the status of all the steps in the flow. Use the following make targets to run and debug each step. For example to run step number N do:
make N
Helpful make Targets
-
make list
- list all the nodes in the graphs and their corresponding step number -
make status
- list the build status of all the steps -
make graph
- generates a PDF of the graph -
make N
- runs step N -
make debug-N
- pulls up GUI for the appropriate tool for debugging (at the output of step N) -
make clean-N
- removes the folder for step N, and sets the status of steps [N,) to build -
make clean-all
- removes folders for all the steps -
make runtimes
- lists the runtime for each step