Open Toolchain Installation

Target Audience

Placeholder

Credit Where it's due

This installation builds on the work of many people, but most importantly the work of Thomas Parry, who has created a 'minimum viable' design example on his his Github.

My Setup

Step By Step Installation Guide

  1. Installing Git
    1. Create a GitHub Account
      1. For simplicity, we'll clone GitHub repos using the SSH method in this guide. Furthermore, some submodules of Thomas Parry's analogue_design_examples require it. For this reason, we need a github account.
      2. Go to github.com and create an account
    2. Generate SSH keys
      1. You must create an SSH key for GitHub to recognise your machine.
      2. First, check if you already have an SSH key generated. If you do, we'll use that and you can skip the next generation steps and go directly to uploading that key. Check if the key file exists using:
        ls ~/.ssh/id_rsa.pub
        If No such file or directory is returned, then the key must be generated. If no such message is returned, skip the key generation step and proceed to upload it to GitHub **INSERT REF TO STEP**
      3. To generate an SSH key, run:
        ssh-keygen
      4. Hit enter through all the default options without any input (no need for a passphrase!)
      5. A key should now be present in the file ~/.ssh/id_rsa.pub. View the key using:
        cat ~/.ssh/id_rsa.pub
    3. Upload SSH Keys to GitHub
      1. Go to github.com, --> Settings --> SSH and GPG Keys
      2. Add a New SSH Key, and paste the long string created in ~/.ssh/id_rsa.pub into the Key box. This allows GitHub to recognise your machine when you try to connect via SSH
    4. Installing git on your system
      1. In order to pull in Thomas Parry's Github, it is required to first install git as it isn't included in Ubuntu by default.
      2. To install git, open a Terminal and run the following:
        sudo apt update
        sudo apt install git
        Enter the password for your linux account (with root access) if prompted
      3. apt will ask to confirm the install, press the Y key
      4. If the installation was successful, running the command:
        git help
        should return:
        usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
                   [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
                   [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
                   [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
                   <command> [<args>]
        
        These are common Git commands used in various situiations:
        etc etc.
        
  2. Cloning Thomas Parry's Analogue Design Example
    1. As a starting point, Thomas Parry's Analogue Design Example will be used to validate the install.
    2. Clone his github repo to your home directory:
      cd ~
      git clone git@github.com:yrrapt/analogue_design_example.git
    3. If the clone is successful, you can see that the analogue_design_example directory is present in your home directory
    4. Enter this directory by:
      cd ~/analogue_design_example
    5. There is a makefile which installs the pdk and all the required tools. This is located in analogue_design_example/env/Makefile.
    6. This guide is based on this Makefile, modified to ensure it works on a fresh ubuntu install for all platforms.
  3. Prepare the Tools Installation Directories
    1. The tools will be downloaded, compiled and binaries all installed in the /tools directory to ensure they are all located in a consistent location agnositc of system setup.
    2. Create the /tools directory:
      sudo mkdir /tools
    3. For simplicity of install, we'll give rwx access to /tools:
      sudo chmod 777 /tools
      This can be changed as desired after install
    4. We'll create a separate /pdk directory to store installed PDKs in a separate location to the tools. We also modify its permissions in a similar way:
      sudo mkdir /pdk
      sudo chmod 777 /pdk
  4. Installing xschem
    1. xschem is the tool that will be used for schematic capture and netlist generation.
    2. Change to the tools directory:
      cd /tools
    3. Clone Stefan Schippers' xschem GitHub Repo:
      git clone git@github.com:StefanSchippers/xschem.git
    4. xschem installation has a number of dependencies. Install them using:
      sudo apt install csh libx11-dev libxrender1 libxrender-dev libxcb1 libxaw7-dev \
      libx11-xcb-dev libcairo2 libcairo2-dev tcl8.6 tcl8.6-dev \
      tk8.6 tk8.6-dev flex bison libxpm4 libxpm-dev gawk adms \
      libreadline6-dev
    5. Enter the xschem repo:
      cd /tools/xschem
    6. Create a folder called install for the installed binaries:
      mkdir ./install
    7. Configure xschem to be installed in the install directory:
      ./configure --prefix=/tools/xschem/install
    8. Compile xschem from source, run:
      make
    9. The compilation step can take some time depending on available computation power.
    10. Install the compiled components into the specified directories (/tools/xschem/install in our case):
      make install
    11. xschem is now installed and can be test launched by running:
      /tools/xschem/install/bin/xschem
    12. In order to allow xschem to run simulations, call waveform viewers etc, we will install xterm to ensure a standard terminal experience:
      sudo apt install xterm
  5. Installing xschem symbol libraries for the Skywater 130nm PDK
    1. Change to the tools directory:
      cd /tools
    2. Create a directory for xschem libraries:
      mkdir ./xschem_library
      cd xschem_library
    3. Clone Stefan Schippers' xschem_sky130 GitHub Repo:
      git clone git@github.com:StefanSchippers/xschem_sky130.git
    4. The xschem symbols for the Skywater 130nm process are now installed in /tools/xschem_library/xschem_sky130
  6. Installing the Magic layout tool
    1. Magic is one of the two layout tools available for use (KLayout will be installed later). First, return back to /tools:
      cd /tools
    2. Clone the Magic repo:
      git clone git://opencircuitdesign.com/magic
    3. Enter the magic repo:
      cd /tools/magic
    4. Create a folder called install for the installed binaries:
      mkdir ./install
    5. Configure magic to be installed in the install directory:
      ./configure --prefix=/tools/magic/install
    6. Compile magic from source, run:
      make
    7. The compilation step can take some time depending on available computation power.
    8. Install the compiled components into the specified directories (/tools/magic/install in our case):
      make install
    9. magic is now installed and can be test launched by running:
      /tools/magic/install/bin/magic
  7. Installing netgen
    1. Netgen is an opensource LVS tool. Begin installing by returning to the /tools directory:
      cd /tools
    2. Clone the netgen repo:
      git clone git://opencircuitdesign.com/netgen
    3. Enter the netgen repo:
      cd /tools/netgen
    4. Create a folder called install for the installed binaries:
      mkdir ./install
    5. Configure netgen to be installed in the install directory:
      ./configure --prefix=/tools/netgen/install
    6. Compile netgen from source, run:
      make
    7. The compilation step can take some time depending on available computation power.
    8. Install the compiled components into the specified directories (/tools/netgen/install in our case):
      make install
  8. Installing OpenPDKs and the Skywater 130nm PDK.
    1. OpenPDKs is a tool to standardise the PDK interaction with CAD tools. It will also install the Skywater 130nm PDK. Change to the /pdk directory:
      cd /pdk
    2. Clone the open_pdks repo:
      git clone git://opencircuitdesign.com/open_pdks
    3. Enter the open_pdks repo:
      cd /pdk/open_pdks
    4. Create a folder called install for the installed binaries:
      mkdir ./install
    5. OpenPDK requires the already-installed tools for its build process. We will temporarily add them to $PATH for the build process to find them. We will add them in a more permanent manner later. Run:
      PATH=/tools/magic/install/bin:/tools/netgen/install/bin:/tools/xschem/install/bin:$PATH
    6. Configure OpenPDKs
      1. This step depends on the CPU architecture you have:
      2. If you have an x86_64 (AMD/Intel) CPU, the build is configured as follows: ./configure --enable-sky130-pdk --prefix=/pdk/open_pdks/install
      3. If you have an aarch64 (ARM) CPU, the build is configured as follows: ./configure --enable-sky130-pdk --prefix=/pdk/open_pdks/install CFLAGS="" LDFLAGS=""
    7. Compile OpenPDKs from source, run:
      make
    8. The compilation step WILL take a long time no matter your available computation power. Go away for a couple of hours and return later.
    9. Install the compiled components into the specified directories (/pdk/open_pdks/install in our case):
      make install
    10. We must tell Magic to work with the Sky130 PDK, so we copy the prototype .magicrc to the home directory so it's sourced on startup:
      cp -f /pdk/open_pdks/install/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc ~/.magicrc
    11. We will create an environment variable pointing to the PDK installation and source it at login so all other tools can find the required components:
      echo "export SKY130A=/pdk/open_pdks/install/share/pdk/sky130A" >> ~/.bashrc
  9. Installing ngspice
    1. ngspice is one of the two available SPICE simulators (xyce is installed later). Return back to the /tools directory:
      cd /tools
    2. Clone the ngspice repo:
      git clone git://git.code.sf.net/p/ngspice/ngspice
    3. Enter the ngspice repo:
      cd /tools/ngspice
    4. Create a folder called install for the installed binaries:
      mkdir ./install
    5. Before installing, a number of additional dependancies are required for ngspice:
      sudo apt install autoconf libtool automake
    6. Compiling ngspice (make and make install) is handled by a compile script, but it must be passed the prefix and compiler flags depending on architecture:
      1. If you have an x86_64 (AMD/Intel) CPU, the build is configured as follows:
        1. edit the compile_linux.sh file in your favourite text editor
        2. comment line 39: #./autogen.sh
        3. comment line 40: #if [ $? -ne 0 ]; then echo "./autogen.sh failed"; exit 1 ; fi
        4. un-comment line 45: ./autogen.sh --adms
        5. un-comment line 46: if [ $? -ne 0 ]; then echo "./autogen.sh failed"; exit 1 ; fi
        6. Add --enable-adms as an option and change the prefix on line 55:
          ../configure --enable-adms --with-x --enable-xspice --enable-cider --with-readline=yes --enable-openmp CFLAGS="-g -m64 -O0 -Wall -Wno-unused-but-set-variable" LDFLAGS="-m64 -g" --prefix=/tools/ngspice/install
        7. Add --enable-adms as an option and change the prefix on line 62:
          ../configure --enable-adms --with-x --enable-xspice --enable-cider --with-readline=yes --enable-openmp --disable-debug CFLAGS="-m64 -O2" LDFLAGS="-m64 -s" --prefix=/tools/ngspice/install
      2. If you have an aarch64 (ARM) CPU, the build is configured as follows:
        1. edit the compile_linux.sh file in your favourite text editor
        2. comment line 39: #./autogen.sh
        3. comment line 40: #if [ $? -ne 0 ]; then echo "./autogen.sh failed"; exit 1 ; fi
        4. un-comment line 45: ./autogen.sh --adms
        5. un-comment line 46: if [ $? -ne 0 ]; then echo "./autogen.sh failed"; exit 1 ; fi
        6. Add --enable-adms as an option, change the prefix and blank the flags on line 55:
          ../configure --enable-adms --with-x --enable-xspice --enable-cider --with-readline=yes --enable-openmp CFLAGS="" LDFLAGS="" --prefix=/tools/ngspice/install
        7. Add --enable-adms as an option, change the prefix and blank the flagd on line 62:
          ../configure --enable-adms --with-x --enable-xspice --enable-cider --with-readline=yes --enable-openmp --disable-debug CFLAGS="" LDFLAGS="" --prefix=/tools/ngspice/install
    7. Save the file and exit the text editor. Ensure the compile script can be executed using:
      chmod u+rwx ./compile_linux.sh
    8. Run the compile script:
      ./compile_linux.sh
    9. ngspice is now installed and can be run with:
      /tools/ngspice/install/bin/ngspice
  10. Installing Klayout
    1. Klayout is another layout tool, but with a more modern interface than magic. While magic has superior integration with DRC checks etc, users often find Klayout more intuitive to use.
    2. Before attempting to build Klayout, a number of dependencies must be installed:
      sudo apt install ruby-dev qt5-default python3-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 libqt5xmlpatterns5-dev python3-pyqt5 qtcreator pyqt5-dev-tools qttools5-* libqt5svg5-dev
    3. Return back to the /tools directory:
      cd /tools
    4. Clone the Klayout repo:
      git clone git@github.com:KLayout/klayout.git
    5. Enter the Klayout repo:
      cd /tools/klayout
    6. Checkout the latest release (tag):
      git fetch --tags
      latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
      git checkout $latestTag
    7. Create an install directory for klayout to be installed into:
      mkdir ./install
    8. Compile and install Klayout using the build.sh script. Remember to install it to the correct directory using the -prefix option:
      ./build.sh -qt5 -prefix /tools/klayout/install
  11. Installing & Configuring the Python Virtual Environment
    1. The venv is used to run scripts linked to the tools and to perform measurements... I think... **COME BACK TO THIS WHEN I KNOW MORE **. We must first ensure all the required python dependencies are installed:
      sudo apt install -y python3-pip python3-venv python3-virtualenv python3-numpy rustc libprotobuf-dev protobuf-compiler libopenmpi-dev
    2. The venv, which is specific to each user and each project they work on, must be created in their home folder:
      mkdir -p ~/.venvs
      cd ~/.venvs
      python3 -m venv analogue_design_example
      Note that the venv name will change in the future, depending on the project you intend to work on.
    3. The venv must be activated:
      source ~/.venvs/analogue_design_example/bin/activate
    4. There are certain python package requirements, the names of which are in the ~/analogue_design_example/env/requirements.txt file:
      python -m pip install pip --upgrade
      python -m pip install wheel
      python -m pip install -r ~/analogue_design_example/env/requirements.txt
    5. Thomas Parry also wrote a helpful python library of measurement & char tools which is included as a submodule which must be initiated and installed:
      cd ~/analogue_design_example
      git submodule init
      git submodule update
      cd ./env
      python -m pip install -e yaaade
  12. Installing the xyce simulator
    1. The xyce simulator is an alternative to ngspice. Before compiling, a number of dependencies must be installed:
      sudo apt install -y gcc g++ gfortran make cmake bison flex libfl-dev libfftw3-dev libsuitesparse-dev libblas-dev liblapack-dev libtool autoconf automake libopenmpi-dev openmpi-bin
    2. Make a /tools/xyce directory and clone the xyce git repo:
      cd /tools
      mkdir -p xyce; cd xyce
      git clone https://github.com/Xyce/Xyce.git xyce_source
      cd xyce_source
      ./bootstrap
    3. The xyce simulator uses Trilinos as its backend processing engine, so it must also be installed:
      1. make a /tools/xyce/trilinos directory and clone the repo:
        cd /tools/xyce
        mkdir -p trilinos; cd trilinos
        wget https://github.com/trilinos/Trilinos/archive/refs/tags/trilinos-release-12-12-1.tar.gz
        tar -xvf trilinos-release-12-12-1.tar.gz
        mv Trilinos-trilinos-release-12-12-1 trilinos_source
        rm trilinos-release-12-12-1.tar.gz
      2. These instructions are for building a serial implementation of xyce / Trilinos. They would have to be adjusted for a parallel implementation. Generate a compilation configuration script using the following commands:
        cd /tools/xyce/trilinos
        mkdir -p install; cd install
        echo '#!/bin/sh' > reconfigure
        echo 'SRCDIR=/tools/xyce/trilinos/trilinos_source' >> reconfigure
        echo 'ARCHDIR=/tools/xyce/xyce_libs/serial' >> reconfigure
        echo 'FLAGS="-O3 -fPIC"' >> reconfigure
        echo 'cmake \' >> reconfigure
        echo '-G "Unix Makefiles" \' >> reconfigure
        echo '-DCMAKE_C_COMPILER=gcc \' >> reconfigure
        echo '-DCMAKE_CXX_COMPILER=g++ \' >> reconfigure
        echo '-DCMAKE_Fortran_COMPILER=gfortran \' >> reconfigure
        echo '-DCMAKE_CXX_FLAGS="$FLAGS" \' >> reconfigure
        echo '-DCMAKE_C_FLAGS="$FLAGS" \' >> reconfigure
        echo '-DCMAKE_Fortran_FLAGS="$FLAGS" \' >> reconfigure
        echo '-DCMAKE_INSTALL_PREFIX=$ARCHDIR \' >> reconfigure
        echo '-DCMAKE_MAKE_PROGRAM="make" \' >> reconfigure
        echo '-DTrilinos_ENABLE_NOX=ON \' >> reconfigure
        echo '-DNOX_ENABLE_LOCA=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_EpetraExt=ON \' >> reconfigure
        echo '-DEpetraExt_BUILD_BTF=ON \' >> reconfigure
        echo '-DEpetraExt_BUILD_EXPERIMENTAL=ON \' >> reconfigure
        echo '-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_TrilinosCouplings=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Ifpack=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Isorropia=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_AztecOO=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Belos=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Teuchos=ON \' >> reconfigure
        echo '-DTeuchos_ENABLE_COMPLEX=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Amesos=ON \' >> reconfigure
        echo '-DAmesos_ENABLE_KLU=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Sacado=ON \' >> reconfigure
        echo '-DTrilinos_ENABLE_Kokkos=OFF \' >> reconfigure
        echo '-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \' >> reconfigure
        echo '-DTrilinos_ENABLE_CXX11=ON \' >> reconfigure
        echo '-DTPL_ENABLE_AMD=ON \' >> reconfigure
        echo '-DAMD_LIBRARY_DIRS="/usr/lib" \' >> reconfigure
        echo '-DTPL_AMD_INCLUDE_DIRS="/usr/include/suitesparse" \' >> reconfigure
        echo '-DTPL_ENABLE_BLAS=ON \' >> reconfigure
        echo '-DTPL_ENABLE_LAPACK=ON \' >> reconfigure
        echo '$SRCDIR' >> reconfigure
        chmod u+x reconfigure
      3. Configure and compile Trilinos using the following commands:
        ./reconfigure
        make
        make install
    4. The xyce simulator can now be configured in a similar way. First, make an install directory for xyce to be compiled into:
      cd /tools/xyce
      mkdir -p install; cd install
    5. The xyce compilation can now be configured:
      echo '../xyce_source/configure \' > reconfigure
      echo 'CXXFLAGS="-O3 -std=c++11" \' >> reconfigure
      echo 'ARCHDIR="/tools/xyce/xyce_libs/serial" \' >> reconfigure
      echo '--enable-shared \' >> reconfigure
      echo '--enable-xyce-shareable \' >> reconfigure
      echo 'CPPFLAGS="-I/usr/include/suitesparse" \' >> reconfigure
      echo '--prefix=/tools/xyce/install/serial' >> reconfigure
      chmod u+x reconfigure
    6. Finally, xyce can be compiled:
      ./reconfigure
      make
      make install
  13. Installing the GAW waveform viewer
    1. Install the required build dependencies:
      sudo apt install build-essential libgtk-3-dev gettext
    2. Go to the tools directory:
      cd /tools
    3. Clone the Xschem-GAW repo:
      git clone git@github.com:StefanSchippers/xschem-gaw.git
    4. Configure xschem-gaw to use the correct version of gettext you have installed:
    5. edit the file: /tools/xschem-gaw/po/Makefile.in.in
    6. edit the line GETTEXT_MACRO_VERSION to the version of gettext you're using
    7. Make an install directory and configure GAW to be installed there:
      cd /tools/xschem-gaw
      mkdir install
      aclocal && automake --add-missing && autoconf
      ./configure --prefix=/tools/xschem-gaw/install
    8. Build GAW:
      make
      make install
  14. Installing CircuitValidityChecker (cvc)
    1. Install Dependencies:
      1. Ensure bison, automake and autopoint are installed:
        sudo apt install bison automake autopoint
      2. Ensure Kivy and pyinstaller are installed:
        python3 -m pip install kivy
        python3 -m pip install pyinstaller
    2. Clone the cvc repo
      cd /tools
      git clone git@github.com:d-m-bailey/cvc.git
      cd cvc
    3. Configure and build cvc:
      mkdir install
      autoreconf -vif
      ./configure --disable-nls --prefix=/tools/cvc/install
      make
      make install
  15. Installing padring, a pad ring generator
    1. Install Dependencies:
      sudo apt install ninja-build
    2. Clone the repo:
      git clone git@github.com:donn/padring.git
    3. Change the install directory
      cd /tools/padring
      Open the file bootstrap.sh, and replace the word build with install
    4. Build and install padring:
      ./bootstrap.sh
      cd install && ninja
  16. Installing yosys synthesis tool
    1. Install Dependencies:
      sudo apt install build-essential clang bison flex \
      libreadline-dev gawk tcl-dev libffi-dev git \
      graphviz xdot pkg-config python3 libboost-system-dev \
      libboost-python-dev libboost-filesystem-dev zlib1g-dev
    2. Clone the yosys repo:
      git clone git@github.com:/YosysHQ/yosys
    3. Make the install directory:
      cd /tools/yosys
      mkdir install
    4. Modify the /tools/yosys/Makefile file:
      1. Comment line 2: #CONFIG := clang
      2. Un-comment line 3: CONFIG := gcc
      3. Adjust the installation prefix on line 57: PREFIX ?= /tools/yosys/install
    5. compile and install yosys:
      make
      make install
  17. Installing the graywolf placement tool
    1. Install dependencies:
      sudo apt install libgsl-dev
    2. Clone the graywolf repo:
      cd /tools
      git clone git@github.com:rubund/graywolf.git
    3. Make the install directory:
      cd /tools/graywolf
      mkdir install
    4. Run cmake, build and install:
      cmake -DCMAKE_INSTALL_PREFIX=/tools/graywolf/install
      make
      make install
  18. Installing qrouter, a routing tool
    1. Clone the qrouter repo:
      cd /tools
      git clone git@github.com:RTimothyEdwards/qrouter.git
    2. Make the install directory and install:
      cd /tools/qrouter
      mkdir install
      ./configure
      ./configure --prefix=/tools/qrouter/install
      make
      make install
  19. Installing qflow, a synthesis flow
    1. Install dependencies:
      sudo apt install tcsh python3-tk
    2. Clone the qflow repo:
      cd /tools
      git clone git@github.com:RTimothyEdwards/qflow.git
    3. Make the install directory and install:
      cd /tools/qflow
      mkdir build
      ./configure
      ./configure --prefix=/tools/qflow/build
      make
      make install
  20. Installing the OpenROAD physical design tool:
    1. Clone the OpenROAD GitHub repo:
      cd /tools/
      git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD
    2. Install Dependencies:
      sudo apt install libffi-dev tcl-dev time swig libboost-all-dev libspdlog-dev libeigen3-dev liblemon-dev
      python3 -m pip install pandas
      sudo /tools/OpenROAD/etc/DependencyInstaller.sh -dev
    3. Make the install directory, build and install:
      cd /tools/OpenROAD
      mkdir install
      ./etc/Build.sh -cmake="-DCMAKE_INSTALL_PREFIX=/tools/OpenROAD/install"
      cd build
      make install
  21. Installing the OpenLane tool flow
    1. Clone the repo:
      cd /tools
      git clone git@github.com:The-OpenROAD-Project/OpenLane.git
    2. Install Dependencies:
      sudo apt install build-essential python3 python3-venv python3-pip git python3 -m pip install pyyaml
    3. Ensure tool dendencies are installed:
      cd /tools/OpenLane
      python3 ./env.py tool-list
    4. Ensure that all mentioned tools are installed before continuing
    5. Install the OpenLane environment:
      python3 ./env.py local-install
  22. Adding the tools to the PATH
    1. The system needs to be configured such that the tools are on the path for all users so they can be launched without giving their absolute path. This can be done with the following commands:
      echo "PATH=/tools/klayout/install:/tools/magic/install/bin:/tools/netgen/install/bin:/tools/ngspice/install/bin:/tools/xschem/install/bin:/tools/xyce/install/serial/bin:/tools/xschem-gaw/install/bin:/tools/cvc/install/bin:/tools/padring/install:/tools/yosys/install/bin:/tools/graywolf/install/bin:/tools/qrouter/install/bin:/tools/qflow/install:$PATH" >> ~/.bashrc
    2. Open a new terminal instance. All of the tools can now be launched by their respective names without absolute paths. Ensure all tools launch by running the commands:
      klayout
      magic
      netgen
      ngspice
      xschem
      gaw
      Xyce


The tools should now be installed correctly

Thomas Parry's Analogue Design Example

This section shall guide the user through Thomas Parry's Analogue design example as a first introduction to the tools. Please see his YouTube tutorial here. Note that our installation directories are different to his.
  1. Ensure the $XSCHEM_SHAREDIR points to the correct installation directory. We modified the default location, so we muct adjust the line in the xschemrc file (within the git repo):
    set XSCHEM_SHAREDIR /tools/xschem/install/share/xschem
  2. Ensure the $SKYWATER_MODELS and the $SKYWATER_STDCELLS declared in the xschemrc are correct:

Remaining to-do list

  1. Put all the tools on the path permanently
  2. Figure out how to ensure .magicrc is placed in each tool user's home directory
  3. Come up with a script that sources everything necessary so we're not relying on the ~/.bashrc

Issues encountered during initial installation

A blow-by-blow account of issues encountered during installation: Installaction Issues