Go to file
Jean-Paul Chaput 4ffd91822f Added support for SPICE terminal ordering from .spi files.
After a Cell has been created in memory (by parsers or Python scripts)
we can annotate it with the Spice parser so it will know the right
order with which to create the subcircuit call ('x').

* New: In CRL::Spice::load(), add support to read the ".subckt" card
    and guess the right ordering for generating the 'x' (subcircuit
    card call).
* Bug: In Spice::SpiceBit & Spice::BitExtension, when a Net bit property
    is removed, if it's the currently cached property in BitExtension
    it may lead to a crash. So when a property is destroyed, we must
    also clear the cache (see remove(), clearCache() & onReleasedby()).
      I'm wary that this could also happen on other kind of cached
    extensions...
* New: In CRL::NamingScheme, new method vhdlToVlog() to translate back
    VHDL net name into Verilog. Currently only changes "()" into "[]".
    Used to generate the commented SPICE interface for Alliance compliance.
* Change: In Spice::Entity, previously all the ordering where removed
    between each run of the SPICE parser, but the orders read from
    SPICE file (mostly standard cells) must be kept. So add a flag
    ReferenceCell to prevent the removal by ::destroyAll().
2022-04-03 13:18:42 +02:00
anabatic Layer assignment step was ignoring the number of RoutingPad threshold. 2021-12-22 15:52:22 +01:00
bootstrap Added support for RHEL9. 2021-12-31 16:35:38 +01:00
bora Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
coloquinte Adapt Nix code to Python 3 switch. 2021-10-26 20:10:59 +00:00
crlcore Added support for SPICE terminal ordering from .spi files. 2022-04-03 13:18:42 +02:00
cumulus Fix stupid mistake of "trace" import in core2chip.cmos.py. 2022-01-13 11:16:07 +01:00
documentation Minor documentation patchs to work with RHEL9. 2022-01-15 17:28:21 +01:00
equinox Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
etesian Change in feed & tie managements to fill the empty row spaces. 2021-12-17 15:58:13 +01:00
flute Adapt Nix code to Python 3 switch. 2021-10-26 20:10:59 +00:00
hurricane Forgot emiting "layoutAbouttobechanged" in NetlistModel::setCell(). 2022-01-26 19:41:39 +01:00
ispd Adapt Nix code to Python 3 switch. 2021-10-26 20:10:59 +00:00
karakaze Adapt Nix code to Python 3 switch. 2021-10-26 20:10:59 +00:00
katabatic Allow the detailed routing to be build from non-bottom P&R layers. 2021-12-11 19:51:24 +01:00
katana Small code presentation improvements. 2022-01-12 16:27:47 +01:00
kite Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
knik Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
lefdef Merge branch 'lefdef-out' into 'devel' 2022-01-14 13:42:39 +00:00
mauka Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
metis Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
nimbus Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
nix nix: Remove unnecessary `ln` from libresoc test 2021-10-26 23:00:13 +00:00
oroshi Update documentation (by mistake, nothing new). 2021-11-21 23:40:40 +01:00
solstice Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
stratus1 More Python 3 corrections. 2022-01-12 16:25:01 +01:00
tutorial Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
unicorn More Python 3 corrections. 2022-01-12 16:25:01 +01:00
unittests Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
vlsisapd Fix library linking problem for gcc 9 and above (Ubuntu 20/Debian 11). 2021-11-22 00:05:48 +01:00
.gitignore Ignore /result (from nix-build) 2021-10-26 22:30:33 +00:00
COPYRIGHT.rst At last setup a COPYRIGHT.rst and LICENSE.rst files. 2021-10-29 15:03:03 +02:00
LICENSE.rst At last setup a COPYRIGHT.rst and LICENSE.rst files. 2021-10-29 15:03:03 +02:00
Makefile Enabling the user to choose the devtoolset it needs. 2019-03-04 14:20:13 +01:00
README.rst Add SUPPORT.rst file 2021-12-09 22:32:02 +01:00
SUPPORT.rst Add SUPPORT.rst file 2021-12-09 22:32:02 +01:00
compat.nix nix: add compatibility files 2021-10-26 22:30:34 +00:00
default.nix nix: add compatibility files 2021-10-26 22:30:34 +00:00
flake.lock nix: Update dependencies 2021-10-26 20:17:17 +00:00
flake.nix nix: add compatibility files 2021-10-26 22:30:34 +00:00
shell.nix nix: add compatibility files 2021-10-26 22:30:34 +00:00

README.rst

.. -*- Mode: rst -*-


===============
Coriolis README
===============

Coriolis is a free database, placement tool and routing tool for VLSI design.


Purpose
=======

Coriolis provides several tools to perform the layout of VLSI circuits.  Its
main components are the Hurricane database, the Etesian placer and the Katana
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 scriptable.


Documentation
=============

The complete documentation is available here, both in pdf & html:

   ./documentation/output/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://www-soc.lip6.fr/sesi-docs/coriolis2-docs/coriolis2/en/latex/users-guide/UsersGuide.pdf


Building Coriolis
=================

To build Coriolis, ensure the following prerequisites are met:

* Python 3.
* cmake.
* boost.
* bison & flex.
* Qt 4 or 5.
* libxml2.
* RapidJSON
* A C++11 compliant compiler.

The build system relies on a fixed directory tree from the root
of the user currently building it. Thus first step is to get a clone of
the repository in the right place. Proceed as follow: ::

   ego@home:~$ mkdir -p ~/coriolis-2.x/src/support
   ego@home:~$ cd ~/coriolis-2.x/src/support
   ego@home:~$ git clone http://github.com/miloyip/rapidjson
   ego@home:~$ git checkout ec322005072076ef53984462fb4a1075c27c7dfd
   ego@home:~$ cd ~/coriolis-2.x/src
   ego@home:src$ git clone https://gitlab.lip6.fr/vlsi-eda/coriolis.git
   ego@home:src$ cd coriolis

Then, build the tool: ::

    ego@home:coriolis$ make install

If you encounter issues, please consult SUPPORT.rst for tips.
Coriolis gets installed at the root of the following tree: ::

    ~/coriolis-2.x/<OS>.<DISTRIB>/Release.Shared/install/

Where ``<OS>`` is the name of your operating system and ``<DISTRIB>`` your
distribution.


Using Coriolis
==============

The Coriolis main interface can be launched with the command: ::

    ego@home:~: ~/coriolis-2.x/<OS>.<DISTRIB>/Release.Shared/install/bin/coriolis

The ``coriolis`` script detects its location and setups the UNIX
environment appropriately, then lauches ``cgt`` (or *any* command, with the
``--run=<COMMAND>`` option).

Conversely, you can setup the current shell environement for Coriolis by 
using the helper ``coriolisEnv.py``, then run any Coriolis tool: ::

    ego@home:~$ eval `~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`
    ego@home:~$ cgt -V