* New: In cumulus/plugins.block.configuration, added class ConstantsConf to store information and create instances of "zero" and "one" cells. Added attribute in BlockConf class. * Change: In cumulus/plugins.block.configuration, moved the cell cloning and saving from block.spares.Spares to configuration.BlockConf as it is a service that can be used by other modules than just spares. Other modules may modificate the netlists also, like in XXXX. * Change: In cumulus/plugins.chip.configuration, in various methods, manage both cases when the layer is symbolic or real (difference in accessing the underlying BasicLayers). * Change: In cumulus/plugins.chip.configuration, less clutered display of lambda length in trace mode (and use of 'L' as 'l' was too close to '1'). * Bug: In cumulus/plugins.chip.corona.VerticalSide.addBlockages(), as the clock are now on the *inner* rail(s), blockage must be on the *outer* rails (power lines). * New: In cumulus/plugins.chip.pads.Corner, add support for 45 degree corners (cfg setting "chip.use45corners"). * New: In cumulus/plugins.chip.pads.Side.check(), correct computation of the side's length. Was using the ioPadStep instead of the pad cell width! * Change: In cumulus/plugins.chip.pads.Corona._padAnalysis(), LibreSOCIO pads uses Verticals for their ring wires (common sense would want them *Horizontal*). So they must be included in the physical pin detection, but in turn this cause havoc in pxlib... So create a filtering according to the library name. This is *not* robust but will do for now. * New: In cumulus/plugins.chip.pad.core2chip.CoreToChip, rename self.state into self.conf for clarity. New method newEnableForNet(), to create "enable" nets on the fly for emulated In/Out pads. As it can edit the netlist (new "enable" nets) call the BlockConf.rsave() method instead of direct saving through AllianceFramework. Raise NotImplementederror instead of ErrorMessage. * New: In cumulus/plugins.chip.pad.core2chip.IoPad.createPad(), on emulated In/Out I/O pad like for LibreSOC, generate on the fly the right enable signal. If an enable signal is given, it will be used (backward compatible with the previous behavior). * New: In cumulus/plugins.chip.pad.core2chip, support for real LibreSOCIO pads in libresocio.py module. |
||
---|---|---|
anabatic | ||
bootstrap | ||
bora | ||
coloquinte | ||
crlcore | ||
cumulus | ||
documentation | ||
equinox | ||
etesian | ||
flute | ||
hurricane | ||
ispd | ||
karakaze | ||
katabatic | ||
katana | ||
kite | ||
knik | ||
lefdef | ||
mauka | ||
metis | ||
nimbus | ||
oroshi | ||
solstice | ||
stratus1 | ||
tutorial | ||
unicorn | ||
unittests | ||
vlsisapd | ||
.gitignore | ||
Makefile | ||
README.rst |
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