-->

# Alliance VLSI/CAD System

Contents

- About Alliance
  - Circuit Designed with Alliance
  - Useful Links
- Installing Alliance from a Distribution
  - Fedora
  - Ubuntu LTS 18.04
- Rebuild From Source (Git)
  - Debian 9 & Ubuntu 18
  - RHEL, CentOS, Fedora

## About Alliance

### 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

## Installing Alliance from a Distribution

Binary packages are avalaibles for the following distributions:

- Fedora
- Ubuntu LTS
- MacOS X, through MacPorts

### Fedora

1. Pull & install the packages from the repository:

       root@home:~# 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 default install. 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 18.04

Alliance is available in the Ubuntu Universe repository, you may install it with the package manager.

>     ego@home:~> sudo apt-get install alliance

Before using it, you must source the environment (in each terminal you want to use Alliance):

    ego@home:~> . /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://gitlab.lip6.fr/jpc/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...)

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, CentOS, Scientific Linux & 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 | autotool-dev, automake libtool
Parser (yacc&lex) | bison, flex | bison, flex
X11 libraries | libX11-devel, libXt-devel, libXpm-devel, motif, motif-devel | libx11-dev, libxt-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.).

### Debian 9 & Ubuntu 18

In this example we show the case where Alliance is installed in the user's home directory alongside with Coriolis.

1. Dependencies installation:

       ego@home:~> sudo apt-get install build-essential binutils-dev         \
                                        git cmake bison flex gcc python-dev  \
                                        autotools-dev automake               \
                                        libxt-dev libxpm-dev libmotif-dev

2. Getting the sources (cloning the git repository):

       ego@home:~> mkdir -p coriolis-2.x/src
       ego@home:~> cd coriolis-2.x/src
       ego@home:src> git clone https://gitlab.lip6.fr/jpc/alliance.git

3. Compilation & installation. For that step, you can use the following shell script.

   Note

   The commonRoot variable, the `/Linux.x86_64/` component of the path is dependent on the os you are using. It is determined by looking to the kernel version as returned by `uname -srm`. In the following script, it has been set to what is choosen by the Coriolis installer `ccb.py` for Ubuntu.

       #!/bin/bash

             srcDir=${HOME}/coriolis-2.x/src/alliance/alliance/src
         commonRoot=${HOME}/coriolis-2.x/Linux.x86_64/Release.Shared
           buildDir=${commonRoot}/build
         installDir=${commonRoot}/install

         export    ALLIANCE_TOP=${installDir}
         export LD_LIBRARY_PATH=${installDir}/lib:${LD_LIBRARY_PATH}

         cd ${srcDir}
        # Skip doc generation to avoid pulling TeXLive in docker images.
        #sed -i 's,dirs="\$newdirs documentation",dirs="$newdirs",' ./autostuff
         ./autostuff clean
         ./autostuff
         mkdir -p ${buildDir}
         cd ${buildDir}
         ${srcDir}/configure --prefix=${ALLIANCE_TOP} --enable-alc-shared
         make -j1 install

### RHEL, CentOS, Fedora

The procedure is very similar as the one for Debian/Ubuntu, except for the package manager step and the commonRoot variable value, which is set to `/Linux.SL7_64/` (RHEL, CentOS & Scientific Linux) or `/Linux.fc_64/` (Fedora).

1. Dependencies installation:

       root@home:~> yum install git cmake bison flex gcc-c++ libstdc++-devel  \
                        make binutils-devel                                   \
                        autoconf automake libtool                             \
                        libX11-devel libXt-devel libXpm-devel                 \
                        motif motif-devel                                     \

2. Getting the sources (cloning the git repository):

       ego@home:~> mkdir -p coriolis-2.x/src
       ego@home:~> cd coriolis-2.x/src
       ego@home:src> git clone https://gitlab.lip6.fr/jpc/alliance.git

3. Compilation & installation. For that step, you can use the following shell script.

       #!/bin/bash

             srcDir=${HOME}/coriolis-2.x/src/alliance/alliance/src
         commonRoot=${HOME}/coriolis-2.x/Linux.SL7_64/Release.Shared
           buildDir=${commonRoot}/build
         installDir=${commonRoot}/install

         export    ALLIANCE_TOP=${installDir}
         export LD_LIBRARY_PATH=${installDir}/lib:${LD_LIBRARY_PATH}

         cd ${srcDir}
        # Skip doc generation to avoid pulling TeXLive in docker images.
        #sed -i 's,dirs="\$newdirs documentation",dirs="$newdirs",' ./autostuff
         ./autostuff clean
         ./autostuff
         mkdir -p ${buildDir}
         cd ${buildDir}
         ${srcDir}/configure --prefix=${ALLIANCE_TOP} --enable-alc-shared
         make -j1 install