.. -*- Mode: rst -*-
.. include:: ../etc/definitions.rst
.. include:: ./definitions.rst


7. Working in real mode
=======================

The AllianceFramework_ only manages *symbolic* layout as |Alliance| does.
But |Coriolis| is also able to work directly in *real* mode, meaning
that distances will be expressed in microns instead of lambdas.

The *real* mode will be illustrated by working with the FreePDK45_.

We will assume that the FreePDK45_ archives is installed under: ::

  /home/dks/


7.1 Loading a |LEF| file
~~~~~~~~~~~~~~~~~~~~~~~~

Importing a |LEF| file is simple, you just call the static function
``LefImport.load()``. Multiple |LEF| file can be imported one after
another.

.. code-block:: Python

   # You must set "DKsdir" to where you did install the NCSU FreePDK 45nm DK.
   DKsdir  = '/home/dks'

   library = LefImport.load( DKsdir + '/FreePDK45/osu_soc/lib/files/gscl45nm.lef' )		


.. note:: **Technology checking.**  The first imported |LEF| file must contain the
	  technology. The technology described in the |LEF| file will be checked
	  against the one configured in the running instance of |Coriolis| to look
	  for any discrepencies.


7.2 Loading a |Blif| file -- |Yosys|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The |Blif| format is generated by the Yosys_ logic synthetizer. Here again, it is
pretty straightforward: call the static function ``Blif.load()``. If you made
your synthesis on a cell library not managed by AllianceFramework_, for example
the one of the FreePDK45, you must load it prior to calling the |Blif| loader.

.. code-block:: Python

   cell = Blif.load( 'snx' ) # load "snx.blif" in the working directory.