Installing Coriolis2


First set up an schroot debootstrap jail with debian 9.0. These instructions are based on information taken from here:

In advance, on the host system, edit /etc/fstab and add mount points:

(edit: personally I prefer using mount --bind points. however if doing that then after a reboot the chroot will lose the bind mountpoints and the commands need to be re-run, without which the chroot is unusable)

/dev    /home/chroot/coriolis/dev   none    bind    0   0
/dev/pts /home/chroot/coriolis/dev/pts  none    bind    0   0
/proc   /home/chroot/coriolis/proc  none    bind    0   0
/sys    /home/chroot/coriolis/sys   none    bind    0   0
/tmp    /home/chroot/coriolis/tmp   none    bind    0   0

Then run these commands:

sudo bash
apt-get install debootstrap schroot
mkdir /opt/chroot/coriolis
/usr/sbin/debootstrap stretch !$
mount /home/chroot/coriolis/dev
mount /home/chroot/coriolis/dev/pts
mount   /home/chroot/coriolis/proc
mount   /home/chroot/coriolis/sys
mount   /home/chroot/coriolis/tmp
echo "coriolis2" > /home/chroot/coriolis/etc/debian_chroot

To do some preparation (users):

chroot /home/chroot/coriolis2 /bin/bash
adduser {yourpreferredusername}

It is best to make the username the same as the first user that was added during the main (non-chroot) debian install, so that uid 1000 matches between both main and chroot. You can check this by looking at /etc/passwd as root, or by typing "id".

lkcl@fizzy:~$ id
uid=1000(lkcl) gid=1000(lkcl) groups=1000(lkcl),5(tty),....

Alternatively, /etc/passwd and /etc/group may be mount-bound as well as /home however if you later forget you did this and decide to delete the chroot, you will delete the entire /home of your main system, as well as /etc/passwd.

You may wish to follow some of the other things such as configuring apt, locales and keyboard, from the above-linked debian-admin HOWTO. bootloader, kernel, ssh access, all these are unnecessary. do run "apt clean" to clear out /var/cache/apt/archives in the chroot.


Create an schroot file section:

description=Debian Stable for Coriolis

Now as an ordinary user - not as root - you may type:

lkcl@fizzy:~$ schroot -c coriolis

and, due to the contents of /etc/debian_chroot, and that you were in fact logged in as uid 1000 and did in fact add a user to the chroot as uid 1000, the prompt should become:


check out alliance and alliance-check-toolkit

Adapted from

in the schroot:

git clone

TODO: document how to build alliance, basically this:

In the chroot, as root:

apt-get update
apt-get install git build-essential libtool automake \
         flex bison xfig imagemagick \
         texlive texlive-pictures texlive-latex-extra \
         libx11-dev libxt-dev libxaw7-dev libxpm-dev libmotif-dev

In the chroot, as the ordinary schroot user:

mkdir -p alliance/build alliance/install
cd ~/alliance
git clone
cd alliance/src
cd ~/alliance/build
export ALLIANCE_TOP=$HOME/alliance/install
../alliance/src/configure --prefix=$ALLIANCE_TOP --enable-alc-shared
make -j1 install

the two exports are best added to ~/.bash_profile for later convenience


These are nominally taken from however there are errors in the original at the moment. Do not try qt5, it will not work.

In ~/.bash_profile add the following so that builds (rebuilds) if you need them will be quicker, and you can run the GUI from the chroot:

export PATH=/usr/lib/ccache:"$PATH"
export DISPLAY=:0.0

Second (or at a new terminal / xterm), log in as root on the host (not the chroot) then do schroot -c coriolis to get to be root in the chroot (or, you can install sudo in the chroot and then do "sudo bash" in the chroot).

Then run the following commands, as root, in the chroot:

apt-get update
apt-get install -y build-essential binutils-dev               \
              git cmake bison flex gcc python-dev               \
              libboost-all-dev libboost-python-dev               \
              zlib1g-dev                                         \
              libbz2-dev libxml2-dev rapidjson-dev libbz2-dev     \
              doxygen dvipng graphviz python-sphinx               \
              texlive-fonts-extra texlive-lang-french            \
              libqwt-dev qt4-dev-tools python-qt4               \
               libxt-dev libxpm-dev libmotif-dev                \

Then, as the ordinary (non-root) user in the schroot:

mkdir -p ~/coriolis-2.x/src
cd ~/coriolis-2.x/src
git clone

cd coriolis
git checkout devel
./bootstrap/ --project=coriolis --make="-j4 install"

To set up the alliance environment, run this:

eval `~/coriolis-2.x/src/coriolis/bootstrap/`

For convenience that may be placed in a file and "sourced", to avoid having to look this page up every time

echo "eval `~/coriolis-2.x/src/coriolis/bootstrap/`" > \
source ~/coriolisenv

To run the graphical editor go to the bin directory

 cd ~/coriolis-2.x/Linux.MyARCH/Release.Shared/install/bin

Then run the following commands from the menubar

Tutorials / Run Demo (Python Flavour)

The following window will appear

click on the chicken several times

Tutorials and checks

Information from Jean-Paul

There should be very soon a website at (it is not yet online). Where I intend to put all the documentation about Alliance/Coriolis.

In the meantime did you find the doc shipped with Coriolis ?

There are also very cursory informations about installing Alliance here:

You also have a third repository for various blocks/chip/examples here:

(with a basic doc under "doc/"...)

More from JP

You must create a configuration for alliance-check-toolkit:


where you define where the various tools are installed
(look in other ones to have an idea).

You can try the ARM in alliance-check-toolkit:

> cd alliance-check-toolkit/benchsARM/cmos/
> make lvx

Should take about five minutes. It's symbolic, but should be
a configuration compatible with 180nm. To actually see the

> make cgt

Then "File -> Open", "arm_chip_cts_r"

To have a very rough approximation, you can say that one lambda
equal 180nm.

Depends on the zoom level and of the fact that you ask to see the inside of the cells.

To actually see the transistors: Tools -> Controller -> Filter Tab -> check "Process Terminal Cells"

You can also tweak the layer display: Tools -> Controller -> Layers & Go

You can quicly hide/show the Controller with CTRL+I.

You may also toy with Controller -> Look, try the other ones. If you want a new one, to mimic something you're better familiar with, it's in configurations files all written in Python so easy to do, if a little tedious.

i'd expect such a chip to be in the alliance-check-toolkit however we don't even know what we're looking at in order to know which bits we need, let alone know what to do or how to run them.

we're literally completely in the dark, here, having never done this before - at all - so unless there's a specific tutorial which says, to make a chip layout do this: "step 1: install these tools. step 2: get this project repo. step 3: cd to this directory. step 4: run make or ./" we're absolutely lost.

thx jean-paul, and apologies for not knowing where to begin, here.

No problem. You're welcome.

The doc is mostly for people who already have a background in ASICs, I will try to patch something from my lecture in VLSI to help people to orient themselves.

The up-to-date documentation is supplied directly in the Coriolis repository:


 The links toward the doxygen doc will be invalid a this point,
 but everython else works.

After installation, it is put in:


Installing python3.7 into debian/stretch chroot

python 3.6 is a prerequisite for nmigen however something weird is going on, and it can't be installed. instead, python 3.7 has to be installed instead. we do this by adding debian/testing but setting the default release as "stretch".

as root, in the chroot, add the following to /etc/apt/sources.list

deb testing main

then, also as root:

echo 'APT::Default-Release "stretch";' | tee -a /etc/apt/apt.conf.d/00local
sudo apt-get update
apt-get -t testing install python3.7 python3-setuptools \
           python3-jinja2 python3-pip

At this point it becomes possible to follow the main instructions in HDL workflow for installing nmigen, ieee754fpu, soc and nmutil.

Upgrading to latest yosys and nmigen in the chroot

yosys in debian/stretch may not be enough to work with nmigen, therefore it's probably a good idea to upgrade. if this was not a debian/stretch chroot (i.e. was a debian 10), it would be a simple matter of "apt-get install yosys" however it's probably best, here to install from source.

however.. there is another way: once the instructions for installing python3.7 have been carried out. As root, in the chroot:

apt-get -t testing install yosys

That's all.

To install instead from source, add the following to /etc/apt/sources.list:

deb-src stretch main

then as root, in the chroot, run the following:

apt-get update
apt-get build-dep yosys
apt-get install clang
apt-get remove yosys

this will remove debian/stretch yosys however getting the build dependencies is quick and easy enough.

then, as the ordinary user, the following instructions can be followed (

cd ~
git clone
cd yosys
make config-clang
make -j4

as root, run:

make install

Check out the libresoc "soclayout" repository

See HDL workflow for git clone instructions

$ git clone ssh://

TODO further, here.