Go to file
Jean-Paul Chaput 02777e127e Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
  * Write a new C++/template wrapper to get rid of boost::python
  * The int & long Python type are now merged. So a C/C++ level,
    it became "PyLong_X" (remove "PyInt_X") and at Python code
    level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
  * Configuration is now integrated as a Hurricane component,
    makes use of the new C++/template wrapper.
  * vlsisapd is now defunct. Keep it in the source for now as
    some remaining non essential code may have to be ported in
    the future.
* Note: Python code (copy of the migration howto):
  * New print function syntax print().
  * Changed "dict.has_key(k)" for "k" in dict.
  * Changed "except Exception, e" for "except Exception as e".
  * The division "/" is now the floating point division, even if
    both operand are integers. So 3/2 now gives 1.5 and no longer 1.
    The integer division is now "//" : 1 = 3//2. So have to carefully
    review the code to update. Most of the time we want to use "//".
    We must never change to float for long that, in fact, represents
    DbU (exposed as Python int type).
  * execfile() must be replaced by exec(open("file").read()).
  * iter().__next__() becomes iter(x).__next__().
  * __getslice__() has been removed, integrated to __getitem__().
  * The formating used for str(type(o)) has changed, so In Stratus,
    have to update them ("<class 'MyClass'>" instead of "MyClass").
  * the "types" module no longer supply values for default types
    like str (types.StringType) or list (types.StringType).
    Must use "isinstance()" where they were occuring.
  * Remove the 'L' to indicate "long integer" (like "12L"), now
    all Python integer are long.
* Change in bootstrap:
  * Ported Coriolis builder (ccb) to Python3.
  * Ported Coriolis socInstaller.py to Python3.
  * Note: In PyQt4+Python3, QVariant no longer exists. Use None or
    directly convert using the python syntax: bool(x), int(x), ...
    By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
  * In order to compile user's must upgrade to my own rebuild of
    PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
    buffer of the H-Tree to the original signal (mainly: top clock).
      Strangely, it was only done when working in full chip mode.
2021-09-19 19:41:24 +02:00
anabatic Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
bootstrap Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
bora Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
coloquinte Add updators to modify cell sizes on the fly in Coloquinte. 2021-01-13 19:10:31 +01:00
crlcore Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
cumulus Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
documentation Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
equinox Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
etesian Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
flute Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
hurricane Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
ispd Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
karakaze Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
katabatic Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
katana Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
kite Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
knik Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
lefdef Migrating doc from Sphinx towards Pelican. 2020-02-03 17:44:15 +01:00
mauka Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
metis Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
nimbus Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
oroshi Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
solstice Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
stratus1 Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
tutorial Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
unicorn Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
unittests Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
vlsisapd Migration towards Python3, first stage: still based on C-Macros. 2021-09-19 19:41:24 +02:00
.gitignore Various bug corrections to pass the alliance-check-toolkit reference benchs. 2019-05-24 23:57:22 +02:00
Makefile Enabling the user to choose the devtoolset it needs. 2019-03-04 14:20:13 +01:00
README.rst Update doc link for the new Pelican generated one. 2020-02-10 13:38:06 +01: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 2.7.
* 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://www-soc.lip6.fr/git/coriolis.git
   ego@home:src$ cd coriolis

If you want to use the *devel* branch: ::

    ego@home:coriolis$ git checkout devel

Then, build the tool: ::

    ego@home:coriolis$ make install

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