Alliance -- A Free VLSI/CAD System
This page is now obsolete. For up to date information, please have a look to:
Abstract
Alliance is a complete set of free cad tools and portable libraries for vlsi design. It includes a vhdl compiler and simulator, logic synthesis tools, and automatic place and route tools. A complete set of portable cmos libraries is provided. Alliance is the result of a twelve year effort spent at SoC department of LIP6 laboratory of the Pierre & Marie Curie University (Paris VI, France). Alliance has been used for research projects such as the 875 000 transistors StaCS superscalar microprocessor and 400 000 transistors ieee Gigabit HSL Router.
Alliance vlsi cad System is free software. Binaries, source code and cells libraries are freely available under the GNU General Public License (GPL). You are welcome to use the software package even for commercial designs without any fee. You are kindly requested to mention: "Designed with Alliance © LIP6, Université Pierre et Marie Curie".
Circuit Designed with Alliance
- Smartlabs/Smarthome designed a complete circuit in the xfab XH035 technology (2014).
- Tokai University (Shimizu Lab) designed the snx, a 16 bits processor in the rohm 0.18µm (2010).
Those are circuits that we know of because their designers were kind enough to inform us (it is not comprehensive).
Useful Links
- Improved Standard Cell libraries and documentation on how to design them, by Graham Petley: VLSI Technology
- A book presenting Alliance in depth: Introduction to VLSI CMOS Circuits design by Carlos Silva Cardenas, Takeo Yoshida & Alberto Palacios Pawlovsky.
- For spanish locutors, a set of tutorials made by Miguel Eduardo Flores Gomez from Don Bosco University: Tutorial de Alliance
Alliance Quick Install Instructions
Binary packages are avalaibles for the following distributions:
- RedHat Entreprise Linux 6 (RHEL6) and clones (Scientific Linux 6, CentOS 6).
- Fedora
- Ubuntu LTS
- MacOS X, through MacPorts
Fedora/RedHat
Note
For Fedora distributions, Alliance packages are in the main repository, so the first step below could be skipped.
Enable the EPEL repository: (instructions borrowed from https://fedoraproject.org/wiki/EPEL/)
All commands must be executed as root.
Install the package enabling the repository:
$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6.5.noarch.rpm
Note
This package install a lone file /etc/yum.repo.d/epel.repo which suffice to enable the repository.
Pull & install the packages from the repository:
$ yum install alliance alliance-libs alliance-doc
That's all folks. Alliance is ready to use.
Note
With the packaged version of Alliance, files and directories are not at the same places as in the SOC department. They have been made compliant with the fhs.
binaries | /usr/lib/alliance/bin |
cell libraries | /usr/share/alliance/cells |
man pages | /usr/share/alliance/man |
tutorials & examples | /usr/share/doc/alliance-5.0/ |
Environment variables should be automatically set.
Ubuntu LTS 14.04
Alliance is available in the Ubuntu Universe repository, you may install it with the package manager.
Before using it, you must source the environment (in each terminal you want to use Alliance):
> . /etc/alliance/profile.d/alc_env.sh
Rebuild From Source (Git)
If binary packages are not avalaibles for your distribution, you may want to rebuild Alliance from source. To perform this, be aware that you must have at least a basic knowlegde of how to build a C/C++ program from source. Sources are available through the following git repository:
https://www-soc.lip6.fr/git/alliance.git
The stable version is under the branch master, while the development is kept under devel (and will be merged into master from time to time...)
Older versions could be downloaded from:
ftp://asim.lip6.fr/pub/alliance/distribution/5.0/
In order to recompile, you will need to install the development tools in your system. The main ones are listed below.
Build Dependencies | ||
---|---|---|
Software | RHEL & Clones, Fedora | Debian/Ubuntu |
Basic devel tools | "Development tools" (group) | build-essential |
Version system | git | git |
GCC/G++ compiler | gcc, g++ | gcc, g++ |
Autotools | autoconf, automake libtool | autoconf, automake libtool |
Parser (yacc&lex) | bison, flex | bison, flex |
X11 libraries | libX11-devel, libXt-devel libXaw-devel, libXpm-devel openmotif22 | libx11-dev, libxt-dev libxaw-dev, libxpm-dev libmotif-dev |
Graphics | xfig, ImageMagick | xfig, ImageMagick |
Text Processing | texlive | texlive, texlive-pictures texlive-latex-extra |
Note
Before running the autotools, you have to run the autostuff script in ./alliance/src which generate the top-level automake files.
Note
If you happen to have forgotten one of the dependency and have to install it after running configure, please remove the whole build directory tree and re-run configure. The same rule applies if you switch from static libraries to dynamic ones.
Note
Do not build in parallel, always uses -j1, the build process fail in strange ways when run in parallel (this is a known problem due to the way Alliance was developped).
Note
Bison/Flex versions. Alliance is very sensitive to the versions of thoses programs. The reference OSes for the build are Scientific Linux 6 & 7, which supplies bison 2.4.1 and 2.7 (resp.), flex 2.5.35 and 2.5.37 (resp.).
The building procedure should look like this under Linux (with bash):
ego@home:~> mkdir -p alliance/build alliance/install ego@home:~> cd ~/alliance ego@home:alliance> git clone https://www-soc.lip6.fr/git/alliance.git ego@home:alliance> cd alliance/src ego@home:alliance/alliance/src> ./autostuff ego@home:alliance/alliance/src> cd ~/alliance/build ego@home:alliance/build> export ALLIANCE_TOP=$HOME/alliance/install ego@home:alliance/build> export LD_LIBRARY_PATH=${ALLIANCE_TOP}/lib:${LD_LIBRARY_PATH} ego@home:alliance/build> ../alliance/src/configure --prefix=$ALLIANCE_TOP --enable-alc-shared ego@home:alliance/build> make -j1 install
Coriolis: P&R Replacement
A much more powerful replacement for the P&R is available here: Coriolis User's Guide
It provides the following tools:
Alliance | Coriolis |
---|---|
GenLib | Stratus (Python) |
ocp | Etesian |
nero | Kite (and Knik) |
Mailing List
A very low temp mailing list is also available: https://www-soc.lip6.fr/wws/info/alliance-users.
Change Log
Again, this is a very low temperature changelog. Only big changes are noted here.
- March 03, 2014
- Repository migration from cvs to git, and obsoleted tools cleanup.
- Removal of all compilation warnings under gcc 4.8.1 and (almost all under) cppcheck.
- May 15, 2012
- The only change is the update of the FSF address in the GPL licensing...
- May 03, 2012
- Found a way around the druc bug (NWELL rectangles not merged). The problem occurs only when the -g and -O2 are used altogether. Force the flags to -g -O0 when compiling druc.
- Merge in patchs submitted by Naohiko Shimizu Allow the tools (boog, ocp & nero) to be configured through environment variables for uses with the Pharosc standard cell libraries.
- Reorganisation of alliance-examples and alliance-run so they work regardless where they are run from (CVS tree, SoC installation or package installation).