Coriolis is a free database, placement tool and routing tool for VLSI designs.
Coriolis provides several tools to perform the layout of VLSI circuits. Its main components are the Hurricane database, the Etesian placer and the Kite router, but other tools can use the Hurricane database and the parsers provided.
The user interface <cgt> is the prefered way to use Coriolis, but all Coriolis tools are Python modules and thus scriptables.
The complete documentation is available here, both in pdf & html:
./documentation/UsersGuide/UsersGuide.html ./documentation/UsersGuide/UsersGuide.pdf
The documentation of the latest stable version is also available online. It may be quite outdated from the devel version.
https://soc-extras.lip6.fr/en/coriolis/coriolis2-users-guide/
On Ubuntu 18.04, install the necessary packages:
sudo apt install cmake libxml2-dev python3-dev flex bison \
libboost-python-dev libboost-program-options-dev \
libboost-regex-dev libboost-wave-dev \
libqt4-dev liblemon-dev libbz2-dev rapidjson-dev \
libgtk2.0 \
alliance \
doxygen texlive-font-utils latex2html texlive-lang-french \
python3-docutils texlive-fonts-extra
The build order is important. The individual programs do not yet define their interdependencies via cmake. This is a bug that is being worked on. For now, build modules in this order:
-
vlsisapd
-
coloquinte
-
hurricane
-
crlcore
-
cumulus
-
equinox
-
knik
-
katabatic
-
kite
-
etesian
-
nimbus
-
metis
-
mauka
-
solstice
-
stratus1
-
unicorn
-
ispd
-
documentation
This script should do the trick:
#!/bin/sh
set -x
set -e
for i in vlsisapd coloquinte hurricane crlcore cumulus equinox knik katabatic kite etesian nimbus metis mauka solstice stratus1 unicorn ispd documentation
do
mkdir -p $i/build
cd $i/build
if [ ! -e Makefile ]
then
cmake -DCMAKE_INSTALL_PREFIX=/opt/coriolis -DCMAKE_BUILD_TYPE=Debug -DBUILD_DOC=ON ..
fi
make all install
cd ../..
done
Set up your PATH and PYTHONPATH to point to the subdirectory:
export CORIOLIS_TOP=/opt/coriolis/
export ALLIANCE_TOP=/usr/share/alliance
export PATH=$PATH:${CORIOLIS_TOP}/bin
export PYTHONPATH_BASE=${CORIOLIS_TOP}/lib/python3/dist-packages
export PYTHONPATH=${PYTHONPATH}:${PYTHONPATH_BASE}/pharos:${PYTHONPATH_BASE}/cumulus:${PYTHONPATH_BASE}/cumulus/plugins:${PYTHONPATH_BASE}/stratus:${PYTHONPATH_BASE}/crlcore:${PYTHONPATH_BASE}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CORIOLIS_TOP}/lib
The Coriolis main interface can be launched with the command cgt
, or
any command available under /opt/coriolis/bin/
.
There is a script called coriolis
that can be used to set up the
environment and call child commands. You can pass the --run=<COMMAND>
argument to the script.