Go to file
Jean-Paul Chaput c21afeef8b Better handling of GDS sub-models, now put into separate library.
In order to better handle colliding cell names coming from multiple
GDS files, now, if a topCell is defined, create a sub-library with
the name of that top cell and put any other model from *that* GDS
file into it. This way, only the top cell will be shown in the
library and sub-cells with common names will be separateds.
Work needed for loading GF180MCU I/O pads.

* New: In Gds::setTopCellname(), specify the name of the top cell
    we specifically wants to load from the GDS file.
* New: In GdsStream::getCell(), function to find/create a Cell in
    the current library and, if any, the "top cell" dedicated
    sub-library.
* Change: In GdsStream::readTextBody(), if the layer material of
    the label is "other", do not create a Net with the name of
    the label. This should be a pure text label. Use the new
    Hurricane::Text Go for that.
      Compute the text box in a approximative way. Have to make
    it smarter in the future.
* Change: In LefImport::_macroForeignCbk(), change of policy for
    loading associated GDS. First, we look if a cell with the
    right name exists, in which case we use it. If not, *only*
    then, do we try to load from GDS.
      This allows to load by ourselves, in a separate way the
    GDS. This is more flexible when there are naming issues.
* New: Hurricane::Text Go class, to display text label without the
    need of a Net.
* New: In Hurricane::CellWidget, add support to display
    Hurricane::Text. Add a new mode to drawDisplayText() : FillBox
    so the text is resized to exactly fill the box it is in
    (in width).
2023-08-31 16:12:56 +02:00
.github/workflows Link Yosys binaries in /usr/bin; so he can find it's subscripts. 2023-08-05 14:43:01 +02:00
Coriolis Use git tags to version releases 2023-02-21 16:10:55 +01:00
Seabreeze Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
anabatic Give priority of non-pref segments anchored on punctuals over regular ones. 2023-07-03 19:59:10 +02:00
bootstrap Remove non-needed Python Development.Module requirement in CMakeLists.txt. 2023-08-09 10:11:54 +02:00
bora Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
coloquinte@97bb781ba3 Finally understood how to update the submodule. 2023-07-09 17:43:00 +02:00
crlcore Better handling of GDS sub-models, now put into separate library. 2023-08-31 16:12:56 +02:00
cumulus Remove non-needed Python Development.Module requirement in CMakeLists.txt. 2023-08-09 10:11:54 +02:00
deprecated Only use Development.Module for python dependency, necessary for manylinux build 2023-07-16 06:13:45 +00:00
documentation Build doc pelican (#11) 2023-08-01 15:43:21 +02:00
equinox Downgrade CMake requirements to 3.16. Detects correctly Python 3. 2023-03-03 15:36:40 +01:00
etesian In SubSlice::getUsedVTRacks() only consider obstacles in the first V gauge. 2023-07-17 15:06:51 +02:00
flute Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
foehn Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
hurricane Better handling of GDS sub-models, now put into separate library. 2023-08-31 16:12:56 +02:00
ispd Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
karakaze Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
katana Various bug fixes on blockages & H-Tree managment under Katana. 2023-08-08 00:59:48 +02:00
lefdef Revert "Fix missing libraries problems (seen on Cygwin)." 2023-07-16 06:13:46 +00:00
nix Remove OpenMP flags in nix build 2023-06-08 17:11:48 +02:00
oroshi Do not try to install the doc when not generated. 2023-08-04 15:37:08 +02:00
solstice Downgrade CMake requirements to 3.16. Detects correctly Python 3. 2023-03-03 15:36:40 +01:00
stratus1 Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
tramontana Add a tile counter in verbose time to monitor the progress. 2023-07-14 12:31:38 +02:00
tutorial Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
unicorn Do not try to install the doc when not generated. 2023-08-04 15:37:08 +02:00
unittests Add a flag througout all the build system to manage manylinux (PyPI). 2023-07-03 19:54:01 +02:00
.gitignore Update the name of the virtualenv to ignore in git. 2023-08-03 17:17:43 +02:00
.gitlab-ci.yml Upload wheels in CI 2023-02-21 16:10:55 +01:00
.gitmodules Make the Coloquinte submodule follow the coriolis-submodule branch automatically. 2023-07-09 17:19:32 +02: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 Fix Virtualenv setup + doc flag 2023-08-08 17:41:36 +02:00
README.rst Build doc pelican (#11) 2023-08-01 15:43:21 +02:00
SUPPORT.rst Add SUPPORT.rst file 2021-12-09 22:32:02 +01:00
builder.py Build doc pelican (#11) 2023-08-01 15:43:21 +02: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 Update repo references in code to point to github 2023-07-16 19:24:53 +00:00
flake.nix Update repo references in code to point to github 2023-07-16 19:24:53 +00:00
poetry.lock Build doc pelican (#11) 2023-08-01 15:43:21 +02:00
pyproject.toml Build doc pelican (#11) 2023-08-01 15:43:21 +02:00
shell.nix nix: add compatibility files 2021-10-26 22:30:34 +00:00

README.rst

.. -*- Mode: rst -*-

|Python wheel builds|

.. |Python wheel builds| image:: https://github.com/lip6/coriolis/actions/workflows/wheels.yml/badge.svg
   :target: https://github.com/lip6/coriolis/actions/workflows/wheels.yml

.. image:: documentation/content/images/common/Coriolis-logo-blue-4.png
   :alt:   Coriolis Logo
   :align: center
   :width: 10%


======================
Coriolis Open EDA Tool
======================

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

This project is hosted at: https://github.com/lip6/coriolis

Main documentation is available at: https://coriolis.lip6.fr/

Development discussion can be found `on our Matrix Channel <https://matrix.to/#/#coriolis:matrix.org>`_ and in our `GitHub Discussions <https://github.com/lip6/coriolis/discussions>`_.

Coriolis is part of a set of three repositories that are closely relateds.

* Alliance

  A venerable EDA toolchain, working only on symbolic layout. Some of it's
  checking tools (LVS, DRC) are used for the regression tests in Alliance Check Toolkit.

  https://github.com/lip6/alliance

* Alliance Check Toolkit

  A wide set of examples of designs and scripts to use by Coriolis.

  https://github.com/lip6/alliance-check-toolkit


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 run Coriolis, but all
Coriolis tools are Python modules and thus scriptable.


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

To build Coriolis, ensure the following prerequisites are met:

* A C++11 compliant compiler.
* Python 3.
* make or ninja.
* cmake.
* bzip2
* boost.
* bison & flex.
* Qt 5 & Qt 5 Svg.
* Qwt
* libxml2.
* RapidJSON, http://rapidjson.org/ .
* Eigen 3,  http://eigen.tuxfamily.org .
* Lemon, http://lemon.cs.elte.hu/trac/lemon .
* doxygen
* pelican

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:

.. code-block:: bash

   ego@home:~$ mkdir -p ~/coriolis-2.x/src/
   ego@home:~$ cd ~/coriolis-2.x/src
   ego@home:src$ git clone --recurse-submodules https://github.com/lip6/coriolis
   ego@home:src$ cd coriolis

Then, build the tool:

.. code-block:: bash

   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 (mileage may vary).


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

Prior to using Coriolis, you need to setup your UNIX environment by running
the following command:

.. code-block:: bash

    ego@home:~$ eval `~/coriolis-2.x/OS.DISTRIB/Release.Shared/install/etc/coriolis2/coriolisEnv.py`

Then you can launch the GUI:

.. code-block:: bash

    ego@home:~$ cgt -V