export OPENLANE2_ROOT=~/openlane2
export SKY130_PDK_VERSION=6d4d11780c40b20ee63cc98e645307a9bf2b2ab8
pip3 install volare
volare enable --pdk sky130 $SKY130_PDK_VERSION
Then install OpenLane 2 with Nix, as explained here, taking care of the following:
-
Look at the value of
OPENLANE_TAG
in .github/config/openlane.txt to find the exact OpenLane 2 commit you need to check out. Installing a different version will likely not work, as OpenLane 2 is still in beta and the API is not very stable. -
Clone OpenLane 2 to ~/openlane2 (or change the value of the
OPENLANE2_ROOT
environment variable). -
Apply patches to OpenLane 2:
git -C $OPENLANE2_ROOT apply $PWD/patches/openlane2.patch
First, make sure that you have checked out the submodules:
git submodule update --init
Then install all the Python dependencies. You may want to use a virtual enviroment (venv or similar).
pip install -r tt-multiplexer/py/requirements.txt -r tt/requirements.txt
Run the following commands to generate the configuration for building Tiny Tapeout:
python tt/configure.py --update-shuttle
nix-shell ${OPENLANE2_ROOT}/shell.nix --run "python -m openlane tt/rom/config.json"
nix-shell ${OPENLANE2_ROOT}/shell.nix --run "cd tt-multiplexer/ol2/tt_ctrl && python build.py"
nix-shell ${OPENLANE2_ROOT}/shell.nix --run "cd tt-multiplexer/ol2/tt_mux && python build.py"
python tt/configure.py --copy-macros
nix-shell ${OPENLANE2_ROOT}/shell.nix --run "cd tt-multiplexer/ol2/tt_top && python build.py --skip-xor-checks"
Note: We're skipping the XOR checks as they takes a lot of time and require much RAM (~ 64 GB). If you have enough RAM, you can remove the --skip-xor-checks
flag.
You'll find the final GDS in tt-multiplexer/ol2/tt_top/runs/RUN_*/final/gds/openframe_project_wrapper.gds
. To copy it (along with the lef, gl verilog, and spef files), run:
python tt/configure.py --copy-final-results