Updated 2020-09-14
This document walks through the procedure required to setup Qflow — An end-to-end digital synthesis flow for ASIC designs.
Qflow is a flow consists of a suite of programs. All these programs need to be installed individually and manually for the overall Qflow to work. These are:
While simplfied steps to install these tools are located on their perspective website, I personally found a lot of other dependencies that are required but not listed. So the purpose of this tutorial is to also cover those. The intended audience is anyone (such as students) who wants to install these tools on their own computer.
Requirement
Before we dive into installing the actual programs used in Qflow, we must install a few things that we need to download, configure, and build the programs.
Note: Please go through the following subsections in sequence.
sudo apt update
Parts of Qflow software runs scripts that use csh
and tcsh
— these don’t come with Ubuntu by default so we need to install them:
sudo apt install csh tcsh -y
Make sure your system has either wget
or curl
. If not, install using package manager:
sudo apt install wget -y
sudo apt install curl -y
Make sure your system has tar
archive tool, we need this to extract files we download.
sudo apt install build-essential git -v
sudo apt install checkinstall zlib1g-dev libssl-dev -y
sudo apt install libgsl-dev -y
sudo apt install libx11-dev -y
For CMake we need to download the tarball (like zip files except .tar
) from CMake website here: https://cmake.org/download/.
We can use wget
for example to download the tarball to your local directory:
# starting from your home directory (~)
wget https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2.tar.gz
Then extract the tarball. Once the extraction is done, you may delete the compressed tarball:
tar -xvf cmake-3.18.2.tar.gz
rm cmake-3.18.2.tar.gz
Descend into the cmake-3.18.2/
director, and follow the build and installation instructions in the README.rst
file. It tells you to:
./bootstrap
make
sudo make install
This will take a while. Go an get a cup of coffe or snacks ☕️.
Make sure you have Python 3.6+ installed (not Python 2) — this is required as the GUI for the software is written in Python.
By default, Ubuntu 18.04 comes with Python 3.6.9 and it can be launched using the command python3
(whereas normal python
command will invoke Python 2).
If you do not have Python 3.6+ installed for some reason, you can follow the steps below to Install newest version of Python 3:
sudo add-apt-repository ppa:deadsnakes/ppa
# Press [Enter]
sudo apt install python3.8
The Qflow software uses some GUI libraries that we need to install so we can run the programs properly:
sudo apt install tcl-dev tk-dev -y
Also install Python GUI library:
sudo apt install python3-tk -y
As of Ubuntu LTS 15.04. yosys is now a standard package in respository in Ubuntu. Simply run the following:
sudo apt install yosys -y
Check that yosys is installed by invoking it via the following command. It should say the version installed.
yosys -V
Graywolf is hosted on GitHub, so go ahead and clone the git repository to your local drive and then checkout the latest release version (0.1.6):
# starting from your home directory (~)
git clone https://github.com/rubund/graywolf.git
cd graywolf
git checkout 0.1.6
Follow the instructions outlined in README.md
to build and install Graywolf:
mkdir build
cd build
cmake ..
make
sudo make install
Qrouter is also hosted on GitHub, so we can clone the git repository and checkout the stable release version:
# starting from your home directory (~)
git clone https://github.com/RTimothyEdwards/qrouter.git
cd qrouter
git checkout qrouter-1.4
Build and install:
./configure
make
sudo make install
Same procedures as previous section — very straightfoward (the website for Magic is here, the GitHub link is here.):
# starting from your home directory (~)
git clone https://github.com/RTimothyEdwards/magic.git
cd magic
git checkout magic-8.3
./configure
make
sudo make install
Here, the output logs are saved to make.log and install.log for the commands make
and make install
respectively, make sure to glance over the logs to ensure no errors occured:
cat make.log
cat install.log
Again, same procedure. Website link for netgen is here, GitHub link is here.
# starting from your home directory (~)
git clone https://github.com/RTimothyEdwards/netgen.git
cd netgen
git checkout netgen-1.5
./configure
make
sudo make install
Finally, once all of the depenencies mentioned above are installed, we can install Qflow. Again, it is also hosted on GitHub here and the procedure is very similar.
# starting from your home directory (~)
git clone https://github.com/RTimothyEdwards/qflow.git
cd qflow
git checkout qflow-1.4
./configure
make
sudo make install
Note: This part is optional. If you want to use ModelSim, you can skip this section
The official Qflow tutorial uses Icarius Verilog (iVerilog) to simulate synthesized and layout Verilog. This section goes over how to install this.
First go and clone the iVerilog repository:
# starting from your home directory (~)
git clone https://github.com/steveicarus/iverilog.git
cd iverilog
Checkout the latest stable version:
git checkout v10_3
Install required libraries in Linux system (you may skip this step, or you may need to install more things — see what error messages comes up and follow it).
sudo apt install autoconf gperf -y
sudo apt install flex -y
sudo apt install bison -y
Configure, build, and install on your Linux machine:
sh autoconf.sh
./configure
make
sudo make install
Also note that I personally don’t have any experience using iVerilog, so use at your own discretion.
Dinotrace is a program used to view waveforms from simulations (such as iVerilog).
To install, follow the README.md
from their GitHub page:
# starting from your home directory (~)
# Install prerequisits
sudo apt install perl
# Clone git repo
git clone https://github.com/veripool/dinotrace.git
cd dinotrace
# Checkout stable version
git checkout stable
git pull
# Configure and build
autoconf
./configure
make
# Test
./dinotrace traces/ascii.tra
# Install
sudo make install
While ModelSim and iVerilog simulator can be used to simulate the RTL functionalities of a design, the IRSIM “switch-level” simulator can simulate a bit more realistic than the ideal.
Installation is very similar to that of magic.
# starting from your home directory (~)
# Clone git repo
git clone https://github.com/RTimothyEdwards/irsim.git
cd irsim
# Checkout stable version
git checkout irsim-9.7
# Configure, build, and install
./configure
make
sudo make install
👏 All done! Hopefully at this point all installing were successful, and you may move on to running a tutorial workflow. Take a look at both the following tutorials: