Skip to content

Latest commit

 

History

History
59 lines (39 loc) · 2.16 KB

BUILDING.md

File metadata and controls

59 lines (39 loc) · 2.16 KB

Build Tiny Tapeout with Open Lane 2

Environment setup

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:

  1. 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.

  2. Clone OpenLane 2 to ~/openlane2 (or change the value of the OPENLANE2_ROOT environment variable).

  3. Apply patches to OpenLane 2: git -C $OPENLANE2_ROOT apply $PWD/patches/openlane2.patch

Repository setup

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

Fetching the projects

Run the following commands to generate the configuration for building Tiny Tapeout:

python tt/configure.py --update-shuttle

Harden

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