In this installation the following file tree was considered (don't create this files, they will be created as they are needed in the course of this tutorial): home |_.xschem |_simulation |_xschem_library |_xschem_sky130 |_OpenPDK |_skywater-pdk |_magic |_xschem |_open_pdks

From the beginning: installing pre-requirements

sudo apt update -y
sudo apt install git -y
sudo apt install vim -y
sudo apt install m4 -y
sudo apt install tcsh -y
sudo apt install csh -y
sudo apt install libx11-dev -y
sudo apt install tcl-dev tk-dev -y
sudo apt install libcairo2-dev -y
sudo apt install mesa-common-dev libglu1-mesa-dev -y
# for centos 7: mesa-libGLU-devel
sudo apt install vim-gtk3 -y
sudo apt install xterm -y
**#for debian:**
sudo apt install -y flex libgd-dev bison

Install the pdk in a convenient place

Mr Tim Edwards did not recommend installing all of the standard cell libraries as part of the skywater-pdk "make" process (for those of you participating in efabless tapeouts).

The files are quite big, and the recommendation of Mr. Edwards is to get only "sky130_fd_sc_hd" (which is the most commonly used standard cell library)and "sky130_fd_sc_hvl" (because it's the only 3.3V-5V compatible logic library).

The "sky130_fd_pr" has the technology primitives and is important for those of you interested in analog design.

Choose which of this submodules suits best your needs.

If you download all the libraries be aware that it will take around 12GB.

mkdir ~/OpenPDK && cd $_
git clone <https://github.com/google/skywater-pdk>
cd skywater-pdk/
#git submodule init libraries/sky130_fd_io/latest
git submodule init libraries/sky130_fd_pr/latest
git submodule init libraries/sky130_fd_sc_hd/latest
git submodule init libraries/sky130_fd_sc_hvl/latest
#git submodule init libraries/sky130_fd_sc_hdll/latest
#git submodule init libraries/sky130_fd_sc_hs/latest
#git submodule init libraries/sky130_fd_sc_ms/latest
#git submodule init libraries/sky130_fd_sc_ls/latest
#git submodule init libraries/sky130_fd_sc_lp/latest
#I tested "git submodule init libraries/sky130_fd_*/latest" can do it all at once 
git submodule update
make timing

The most important lib is the "sky130_fd_pr", which has the technology primitives. The lib "sky130_fd_io" is the I/O cells and could be needed for better simulation considering the pads. We won't need them for the MPWs, as we won't design the top-level. All the other libs are variations of the standard cells: hd (high density), lp (low power), hvl (high voltage), hs (high speed).

Make timing actually compiles the digital standard cell libraries. It would be interesting for upcoming ULV logic synthesis.

EDA Tools

cd ~/OpenPDK

Install Magic:

git clone <https://github.com/RTimothyEdwards/magic>
cd magic
./configure
make
sudo make install