Updating the documentation of the startup procedure.

This commit is contained in:
Jean-Paul Chaput 2017-12-02 15:51:21 +01:00
parent 2b9c929f80
commit 3e1a7ec591
52 changed files with 253 additions and 177 deletions

Binary file not shown.

View File

@ -43,13 +43,14 @@ two methods:
All configuration & initialization files are Python scripts, despite their All configuration & initialization files are Python scripts, despite their
|dot_conf| extention. From a syntactic point of view, there is no difference |dot_conf| extention. From a syntactic point of view, there is no difference
between the system-wide configuration files and the user's configuration, between the system-wide configuration files and the user's configuration,
they may use the same Python helpers. they use the same Python helpers.
|medskip| |medskip|
Configuration is done in two stages: Configuration is done in two stages:
#. Selecting the symbolic technology. #. Selecting the technology.
#. Loading the complete configuration for the given technology. #. Loading the complete configuration for the given technology
and the user's settings.
|newpage| |newpage|
@ -58,8 +59,7 @@ First Stage: Technology Selection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent| |noindent|
The initialization process is done by executing, in order, the following The initialization process is done by executing, in order, the following file(s):
file(s):
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+----------------------------------------------+
| Order | Meaning | File | | Order | Meaning | File |
@ -87,30 +87,42 @@ Second Stage: Technology Configuration Loading
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent| |noindent|
The :cb:`TECHNO` variable is set by the first stage and it's the name of the The :cb:`technology` variable is set by the first stage and it's the name of the
symbolic technology. A directory of that name, with all the configuration files, technology. A directory of that name, with all the configuration files,
must exists in the configuration directory. In addition to the technology-specific must exists in the configuration directory (:cb:`/etc/coriolis2`).
directories, a :cb:`common/` directory is there to provides a trunk for all the In addition to the technology-specific directories, a :cb:`common/` directory is
identical datas across the various technologies. The initialization process is done there to provides a trunk for all the identical datas across the various technologies.
by executing, in order, the following file(s): The initialization process is done by executing, in order, the following file(s):
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
| Order | Meaning | File | | Order | Meaning | File |
+=======+==================================+==============================================+ +=======+==================================+===============================================+
| **1** | The system initialization | :cb:`/etc/coriolis2/<TECHNO>/<TOOL>.conf` | | **1** | The system initialization | :cb:`/etc/coriolis2/<technology>/<TOOL>.conf` |
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` | | **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
| **3** | The user's local initialization | :cb:`<CWD>/.coriolis2/settings.py` | | **3** | The user's local initialization | :cb:`<CWD>/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
.. note:: *The loading policy is not hard-coded.* It is implemented .. note:: *The loading policy is not hard-coded.* It is implemented
at Python level in :cb:`/etc/coriolis2/coriolisInit.py`, and thus may be easily be at Python level in :cb:`/etc/coriolis2/coriolisInit.py`, and thus may be easily
amended to whatever site policy. amended to whatever site policy.
The truly mandatory requirement is the existence of :cb:`coriolisInit.py` The truly mandatory requirement is the existence of :cb:`coriolisInit.py`
which *must* contain a :cb:`coriolisConfigure()` function with no argument. which *must* contain a :cb:`coriolisConfigure()` function with no argument.
The :cb:`coriolisInit.py` script execution is triggered by the *import* of
the ``CRL`` module:
.. code:: python
import sys
import os.path
import Cfg
import Hurricane
import CRL # Triggers execution of "coriolisInit.py".
import Viewer
Configuration Helpers Configuration Helpers
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
@ -131,33 +143,49 @@ Where :cb:`<install>/` is the root of the installation.
|Alliance| Helper |Alliance| Helper
----------------- -----------------
The configuration file must provide a :cb:`allianceConfig` tuple of The configuration file must provide an :cb:`allianceConfig` tuple as shown below.
the form: :: Like all the |Coriolis| configuration file, it is to be executed through |Python|,
so we can use it to perform a not so dumb search of the |Alliance| installation
cellsTop = '/usr/share/alliance/cells/' directory. Our default policy is to try to read the ``ALLIANCE_TOP`` environment
variable, and if not found, default to ``/soc/alliance``.
.. code:: python
import os
from helpers.Alliance import AddMode
from helpers.Alliance import Gauge
allianceTop = None
if os.environ.has_key('ALLIANCE_TOP'):
allianceTop = os.environ['ALLIANCE_TOP']
if not os.path.isdir(allianceTop):
allianceTop = None
if not allianceTop: allianceTop = '/soc/alliance'
cellsTop = allianceTop+'/cells/'
allianceConfig = \ allianceConfig = \
( ( 'SYMBOLIC_TECHNOLOGY', helpers.sysConfDir+'/technology.symbolic.xml' ) ( ( 'CATALOG' , 'CATAL')
, ( 'REAL_TECHNOLOGY' , helpers.sysConfDir+'/technology.cmos130.s2r.xml')
, ( 'DISPLAY' , helpers.sysConfDir+'/display.xml' )
, ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.') , ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , Environment.Append) , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append)
, (cellsTop+'dp_sxlib', Environment.Append) , (cellsTop+'dp_sxlib', AddMode.Append)
, (cellsTop+'ramlib' , Environment.Append) , (cellsTop+'ramlib' , AddMode.Append)
, (cellsTop+'romlib' , Environment.Append) , (cellsTop+'romlib' , AddMode.Append)
, (cellsTop+'rflib' , Environment.Append) , (cellsTop+'rflib' , AddMode.Append)
, (cellsTop+'rf2lib' , Environment.Append) , (cellsTop+'rf2lib' , AddMode.Append)
, (cellsTop+'pxlib' , Environment.Append) ) ) , (cellsTop+'pxlib' , AddMode.Append)
, ( 'SCALE_X' , 100) , (cellsTop+'padlib' , AddMode.Append) ) )
, ( 'IN_LO' , 'vst') , ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap') , ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst') , ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap') , ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd') , ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss') , ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*') , ( 'CLOCK' , '.*ck.*|.*nck.*')
, ( 'BLOCKAGE' , '^blockageNet*') , ( 'BLOCKAGE' , '^blockage[Nn]et*')
, ( 'PAD' , '.*_px$')
) )
@ -173,11 +201,11 @@ available settings. Some important remarks about thoses settings:
Each library entry in the tuple will be added to the search path according Each library entry in the tuple will be added to the search path according
to the second parameter: to the second parameter:
* :cb:`Environment::Append`: append to the search path. * :cb:`AddMode::Append`: append to the search path.
* :cb:`Environment::Prepend`: insert in head of the search path. * :cb:`AddMode::Prepend`: insert in head of the search path.
* :cb:`Environment::Replace`: look for a library of the same name and replace * :cb:`AddMode::Replace`: look for a library of the same name and replace
it, whithout changing the search path order. If no library of that name it, whithout changing the search path order. If no library of that name
already exists, it is appended. already exists, it is appended.
@ -190,11 +218,11 @@ available settings. Some important remarks about thoses settings:
* For ``POWER``, ``GROUND``, ``CLOCK`` and ``BLOCKAGE`` net names, a regular * For ``POWER``, ``GROUND``, ``CLOCK`` and ``BLOCKAGE`` net names, a regular
expression (|GNU| regexp) is expected. expression (|GNU| regexp) is expected.
* The ``helpers.sysConfDir`` variable is supplied by the helpers, it is the .. * The ``helpers.sysConfDir`` variable is supplied by the helpers, it is the
directory in which the system-wide configuration files are locateds. .. directory in which the system-wide configuration files are locateds.
For a standard installation it would be: ``/soc/coriolis2``. .. For a standard installation it would be: ``/soc/coriolis2``.
..
.. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY`` .. .. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY``
.. and ``DISPLAY``. In the previous releases, thoses files where to read by .. and ``DISPLAY``. In the previous releases, thoses files where to read by
.. XML parsers, and still do if you triggers the XML compatibility mode. .. XML parsers, and still do if you triggers the XML compatibility mode.
.. But now, they have Python conterparts. In the configuration files, you .. But now, they have Python conterparts. In the configuration files, you

View File

@ -201,10 +201,10 @@ Hooking up into |Alliance|
|Coriolis| relies on |Alliance| for the cell libraries. So after installing or |Coriolis| relies on |Alliance| for the cell libraries. So after installing or
packaging, you must configure it so that it can found those libraries. packaging, you must configure it so that it can found those libraries.
This is done by editing the one variable :cb:`cellsTop` in the |Alliance| helper The easiest way is to setup the |Alliance| environment (i.e. sourcing
(see :ref:`Alliance Helper`). This variable must point to the directory of the ``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment
cells libraries. In a typical installation, this is generally (see the next section). To understand how |Coriolis| find/setup |Alliance| you may
:cb:`/usr/share/alliance/cells`. have look to the :ref:`Alliance Helper`.
Setting up the Environment (coriolisEnv.py) Setting up the Environment (coriolisEnv.py)

View File

@ -426,7 +426,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../crlcore/index.htm
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../dpgen/index.html"
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../hurricane/index.h
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -292,7 +292,7 @@ mixed signal conterpart <strong>Anabatic</strong>.</p>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -292,7 +292,7 @@ mixed-signal conterpart Katana (<span class="sc">Kit[e]-Ana[logic]</span>).</p>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../patterns/index.ht
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -320,7 +320,7 @@ associated C++ namespace.</li>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -692,7 +692,7 @@ terminal or not.</li>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -622,7 +622,7 @@ the module itself. This allow to mimic closely the C++ syntax:</p>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -336,7 +336,7 @@ the <code class="docutils literal"><span class="pre">DbU::Unit</span>&#160; <spa
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -450,7 +450,7 @@ like in the code below:</p>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -289,7 +289,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -439,7 +439,7 @@ a standalone <code class="docutils literal"><span class="pre">DBo</span></code>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -321,7 +321,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -746,7 +746,7 @@ wire width and minimal spacing for the routers. They are patly redundant.</p>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -305,7 +305,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../stratus/index.htm
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../unicorn/index.htm
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -290,20 +290,20 @@ applies to both languages with only minor syntactic changes.</p>
<p>All configuration &amp; initialization files are Python scripts, despite their <p>All configuration &amp; initialization files are Python scripts, despite their
<span class="cb">.conf</span> extention. From a syntactic point of view, there is no difference <span class="cb">.conf</span> extention. From a syntactic point of view, there is no difference
between the system-wide configuration files and the user&#8217;s configuration, between the system-wide configuration files and the user&#8217;s configuration,
they may use the same Python helpers. they use the same Python helpers.
<span class="raw-html"><br class="medskip"/></span></p> <span class="raw-html"><br class="medskip"/></span></p>
<p>Configuration is done in two stages:</p> <p>Configuration is done in two stages:</p>
<ol class="arabic simple"> <ol class="arabic simple">
<li>Selecting the symbolic technology.</li> <li>Selecting the technology.</li>
<li>Loading the complete configuration for the given technology.</li> <li>Loading the complete configuration for the given technology
and the user&#8217;s settings.</li>
</ol> </ol>
<p></p> <p></p>
</div> </div>
<div class="section" id="first-stage-technology-selection"> <div class="section" id="first-stage-technology-selection">
<h2>First Stage: Technology Selection<a class="headerlink" href="#first-stage-technology-selection" title="Permalink to this headline"></a></h2> <h2>First Stage: Technology Selection<a class="headerlink" href="#first-stage-technology-selection" title="Permalink to this headline"></a></h2>
<p> <span class="raw-html"><p class="noindent"></p></span> <p> <span class="raw-html"><p class="noindent"></p></span>
The initialization process is done by executing, in order, the following The initialization process is done by executing, in order, the following file(s):</p>
file(s):</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
<col width="8%" /> <col width="8%" />
@ -345,12 +345,12 @@ part is a dummy one.</p>
<div class="section" id="second-stage-technology-configuration-loading"> <div class="section" id="second-stage-technology-configuration-loading">
<h2>Second Stage: Technology Configuration Loading<a class="headerlink" href="#second-stage-technology-configuration-loading" title="Permalink to this headline"></a></h2> <h2>Second Stage: Technology Configuration Loading<a class="headerlink" href="#second-stage-technology-configuration-loading" title="Permalink to this headline"></a></h2>
<p> <span class="raw-html"><p class="noindent"></p></span> <p> <span class="raw-html"><p class="noindent"></p></span>
The <span class="cb">TECHNO</span> variable is set by the first stage and it&#8217;s the name of the The <span class="cb">technology</span> variable is set by the first stage and it&#8217;s the name of the
symbolic technology. A directory of that name, with all the configuration files, technology. A directory of that name, with all the configuration files,
must exists in the configuration directory. In addition to the technology-specific must exists in the configuration directory (<span class="cb">/etc/coriolis2</span>).
directories, a <span class="cb">common/</span> directory is there to provides a trunk for all the In addition to the technology-specific directories, a <span class="cb">common/</span> directory is
identical datas across the various technologies. The initialization process is done there to provides a trunk for all the identical datas across the various technologies.
by executing, in order, the following file(s):</p> The initialization process is done by executing, in order, the following file(s):</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
<col width="8%" /> <col width="8%" />
@ -366,7 +366,7 @@ by executing, in order, the following file(s):</p>
<tbody valign="top"> <tbody valign="top">
<tr class="row-even"><td><strong>1</strong></td> <tr class="row-even"><td><strong>1</strong></td>
<td>The system initialization</td> <td>The system initialization</td>
<td><span class="cb">/etc/coriolis2/&lt;TECHNO&gt;/&lt;TOOL&gt;.conf</span></td> <td><span class="cb">/etc/coriolis2/&lt;technology&gt;/&lt;TOOL&gt;.conf</span></td>
</tr> </tr>
<tr class="row-odd"><td><strong>2</strong></td> <tr class="row-odd"><td><strong>2</strong></td>
<td>The user&#8217;s global initialization</td> <td>The user&#8217;s global initialization</td>
@ -381,10 +381,20 @@ by executing, in order, the following file(s):</p>
<div class="admonition note"> <div class="admonition note">
<p class="first admonition-title">Note</p> <p class="first admonition-title">Note</p>
<p><em>The loading policy is not hard-coded.</em> It is implemented <p><em>The loading policy is not hard-coded.</em> It is implemented
at Python level in <span class="cb">/etc/coriolis2/coriolisInit.py</span>, and thus may be easily be at Python level in <span class="cb">/etc/coriolis2/coriolisInit.py</span>, and thus may be easily
amended to whatever site policy.</p> amended to whatever site policy.</p>
<p class="last">The truly mandatory requirement is the existence of <span class="cb">coriolisInit.py</span> <p>The truly mandatory requirement is the existence of <span class="cb">coriolisInit.py</span>
which <em>must</em> contain a <span class="cb">coriolisConfigure()</span> function with no argument.</p> which <em>must</em> contain a <span class="cb">coriolisConfigure()</span> function with no argument.</p>
<p>The <span class="cb">coriolisInit.py</span> script execution is triggered by the <em>import</em> of
the <code class="docutils literal"><span class="pre">CRL</span></code> module:</p>
<div class="code python last highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">os.path</span>
<span class="kn">import</span> <span class="nn">Cfg</span>
<span class="kn">import</span> <span class="nn">Hurricane</span>
<span class="kn">import</span> <span class="nn">CRL</span> <span class="c1"># Triggers execution of &quot;coriolisInit.py&quot;.</span>
<span class="kn">import</span> <span class="nn">Viewer</span>
</pre></div>
</div>
</div> </div>
</div> </div>
<div class="section" id="configuration-helpers"> <div class="section" id="configuration-helpers">
@ -399,32 +409,46 @@ simple assembly of tuples. The helpers are installed under the directory:</p>
<p></p> <p></p>
<div class="section" id="alliance-helper"> <div class="section" id="alliance-helper">
<span id="id1"></span><h3><span class="sc">Alliance</span> Helper<a class="headerlink" href="#alliance-helper" title="Permalink to this headline"></a></h3> <span id="id1"></span><h3><span class="sc">Alliance</span> Helper<a class="headerlink" href="#alliance-helper" title="Permalink to this headline"></a></h3>
<p>The configuration file must provide a <span class="cb">allianceConfig</span> tuple of <p>The configuration file must provide an <span class="cb">allianceConfig</span> tuple as shown below.
the form:</p> Like all the <span class="sc">Coriolis</span> configuration file, it is to be executed through <span class="sc">Python</span>,
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cellsTop</span> <span class="o">=</span> <span class="s1">&#39;/usr/share/alliance/cells/&#39;</span> so we can use it to perform a not so dumb search of the <span class="sc">Alliance</span> installation
directory. Our default policy is to try to read the <code class="docutils literal"><span class="pre">ALLIANCE_TOP</span></code> environment
variable, and if not found, default to <code class="docutils literal"><span class="pre">/soc/alliance</span></code>.</p>
<div class="code python highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
<span class="kn">from</span> <span class="nn">helpers.Alliance</span> <span class="k">import</span> <span class="n">AddMode</span>
<span class="kn">from</span> <span class="nn">helpers.Alliance</span> <span class="k">import</span> <span class="n">Gauge</span>
<span class="n">allianceTop</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s1">&#39;ALLIANCE_TOP&#39;</span><span class="p">):</span>
<span class="n">allianceTop</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">&#39;ALLIANCE_TOP&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">allianceTop</span><span class="p">):</span>
<span class="n">allianceTop</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">allianceTop</span><span class="p">:</span> <span class="n">allianceTop</span> <span class="o">=</span> <span class="s1">&#39;/soc/alliance&#39;</span>
<span class="n">cellsTop</span> <span class="o">=</span> <span class="n">allianceTop</span><span class="o">+</span><span class="s1">&#39;/cells/&#39;</span>
<span class="n">allianceConfig</span> <span class="o">=</span> \ <span class="n">allianceConfig</span> <span class="o">=</span> \
<span class="p">(</span> <span class="p">(</span> <span class="s1">&#39;SYMBOLIC_TECHNOLOGY&#39;</span><span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s1">&#39;/technology.symbolic.xml&#39;</span> <span class="p">)</span> <span class="p">(</span> <span class="p">(</span> <span class="s1">&#39;CATALOG&#39;</span> <span class="p">,</span> <span class="s1">&#39;CATAL&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;REAL_TECHNOLOGY&#39;</span> <span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s1">&#39;/technology.cmos130.s2r.xml&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;DISPLAY&#39;</span> <span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s1">&#39;/display.xml&#39;</span> <span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;CATALOG&#39;</span> <span class="p">,</span> <span class="s1">&#39;CATAL&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;WORKING_LIBRARY&#39;</span> <span class="p">,</span> <span class="s1">&#39;.&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;WORKING_LIBRARY&#39;</span> <span class="p">,</span> <span class="s1">&#39;.&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;SYSTEM_LIBRARY&#39;</span> <span class="p">,</span> <span class="p">(</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;sxlib&#39;</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;SYSTEM_LIBRARY&#39;</span> <span class="p">,</span> <span class="p">(</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;sxlib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;dp_sxlib&#39;</span><span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;dp_sxlib&#39;</span><span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;ramlib&#39;</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;ramlib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;romlib&#39;</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;romlib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;rflib&#39;</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;rflib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;rf2lib&#39;</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;rf2lib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;pxlib&#39;</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;pxlib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;SCALE_X&#39;</span> <span class="p">,</span> <span class="mi">100</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">&#39;padlib&#39;</span> <span class="p">,</span> <span class="n">AddMode</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;IN_LO&#39;</span> <span class="p">,</span> <span class="s1">&#39;vst&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;IN_LO&#39;</span> <span class="p">,</span> <span class="s1">&#39;vst&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;IN_PH&#39;</span> <span class="p">,</span> <span class="s1">&#39;ap&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;IN_PH&#39;</span> <span class="p">,</span> <span class="s1">&#39;ap&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;OUT_LO&#39;</span> <span class="p">,</span> <span class="s1">&#39;vst&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;OUT_LO&#39;</span> <span class="p">,</span> <span class="s1">&#39;vst&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;OUT_PH&#39;</span> <span class="p">,</span> <span class="s1">&#39;ap&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;OUT_PH&#39;</span> <span class="p">,</span> <span class="s1">&#39;ap&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;POWER&#39;</span> <span class="p">,</span> <span class="s1">&#39;vdd&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;POWER&#39;</span> <span class="p">,</span> <span class="s1">&#39;vdd&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;GROUND&#39;</span> <span class="p">,</span> <span class="s1">&#39;vss&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;GROUND&#39;</span> <span class="p">,</span> <span class="s1">&#39;vss&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;CLOCK&#39;</span> <span class="p">,</span> <span class="s1">&#39;^ck.*&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;CLOCK&#39;</span> <span class="p">,</span> <span class="s1">&#39;.*ck.*|.*nck.*&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;BLOCKAGE&#39;</span> <span class="p">,</span> <span class="s1">&#39;^blockageNet*&#39;</span><span class="p">)</span> <span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;BLOCKAGE&#39;</span> <span class="p">,</span> <span class="s1">&#39;^blockage[Nn]et*&#39;</span><span class="p">)</span>
<span class="p">,</span> <span class="p">(</span> <span class="s1">&#39;PAD&#39;</span> <span class="p">,</span> <span class="s1">&#39;.*_px$&#39;</span><span class="p">)</span>
<span class="p">)</span> <span class="p">)</span>
</pre></div> </pre></div>
</div> </div>
@ -440,9 +464,9 @@ much alternatives for the others settings).</p>
Each library entry in the tuple will be added to the search path according Each library entry in the tuple will be added to the search path according
to the second parameter:</p> to the second parameter:</p>
<ul class="simple"> <ul class="simple">
<li><span class="cb">Environment::Append</span>: append to the search path.</li> <li><span class="cb">AddMode::Append</span>: append to the search path.</li>
<li><span class="cb">Environment::Prepend</span>: insert in head of the search path.</li> <li><span class="cb">AddMode::Prepend</span>: insert in head of the search path.</li>
<li><span class="cb">Environment::Replace</span>: look for a library of the same name and replace <li><span class="cb">AddMode::Replace</span>: look for a library of the same name and replace
it, whithout changing the search path order. If no library of that name it, whithout changing the search path order. If no library of that name
already exists, it is appended.</li> already exists, it is appended.</li>
</ul> </ul>
@ -455,10 +479,6 @@ the first <em>Cell</em> whose name match.</p>
<li><p class="first">For <code class="docutils literal"><span class="pre">POWER</span></code>, <code class="docutils literal"><span class="pre">GROUND</span></code>, <code class="docutils literal"><span class="pre">CLOCK</span></code> and <code class="docutils literal"><span class="pre">BLOCKAGE</span></code> net names, a regular <li><p class="first">For <code class="docutils literal"><span class="pre">POWER</span></code>, <code class="docutils literal"><span class="pre">GROUND</span></code>, <code class="docutils literal"><span class="pre">CLOCK</span></code> and <code class="docutils literal"><span class="pre">BLOCKAGE</span></code> net names, a regular
expression (<span class="sc">gnu</span> regexp) is expected.</p> expression (<span class="sc">gnu</span> regexp) is expected.</p>
</li> </li>
<li><p class="first">The <code class="docutils literal"><span class="pre">helpers.sysConfDir</span></code> variable is supplied by the helpers, it is the
directory in which the system-wide configuration files are locateds.
For a standard installation it would be: <code class="docutils literal"><span class="pre">/soc/coriolis2</span></code>.</p>
</li>
</ul> </ul>
<p>A typical user&#8217;s configuration file would be:</p> <p>A typical user&#8217;s configuration file would be:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
@ -609,7 +629,7 @@ in <span class="cb">&lt;CWD&gt;/.coriolis2/settings.py</span> (that is, written
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -485,10 +485,10 @@ to emulate a top-level <code class="docutils literal"><span class="pre">autotool
<h2>Hooking up into <span class="sc">Alliance</span><a class="headerlink" href="#hooking-up-into-alliance" title="Permalink to this headline"></a></h2> <h2>Hooking up into <span class="sc">Alliance</span><a class="headerlink" href="#hooking-up-into-alliance" title="Permalink to this headline"></a></h2>
<p><span class="sc">Coriolis</span> relies on <span class="sc">Alliance</span> for the cell libraries. So after installing or <p><span class="sc">Coriolis</span> relies on <span class="sc">Alliance</span> for the cell libraries. So after installing or
packaging, you must configure it so that it can found those libraries.</p> packaging, you must configure it so that it can found those libraries.</p>
<p>This is done by editing the one variable <span class="cb">cellsTop</span> in the <span class="sc">Alliance</span> helper <p>The easiest way is to setup the <span class="sc">Alliance</span> environment (i.e. sourcing
(see <a class="reference internal" href="Configuration.html#alliance-helper"><span class="std std-ref">Alliance Helper</span></a>). This variable must point to the directory of the <code class="docutils literal"><span class="pre">.../etc/profile.d/alc_env.{sh,csh}</span></code>) <strong>before</strong> setting up <span class="sc">Coriolis</span> environment
cells libraries. In a typical installation, this is generally (see the next section). To understand how <span class="sc">Coriolis</span> find/setup <span class="sc">Alliance</span> you may
<span class="cb">/usr/share/alliance/cells</span>.</p> have look to the <a class="reference internal" href="Configuration.html#alliance-helper"><span class="std std-ref">Alliance Helper</span></a>.</p>
</div> </div>
<div class="section" id="setting-up-the-environment-coriolisenv-py"> <div class="section" id="setting-up-the-environment-coriolisenv-py">
<h2>Setting up the Environment (coriolisEnv.py)<a class="headerlink" href="#setting-up-the-environment-coriolisenv-py" title="Permalink to this headline"></a></h2> <h2>Setting up the Environment (coriolisEnv.py)<a class="headerlink" href="#setting-up-the-environment-coriolisenv-py" title="Permalink to this headline"></a></h2>
@ -537,7 +537,7 @@ infinite loop if it&#8217;s called again in, say <span class="cb">~/.bashrc</spa
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -314,7 +314,7 @@ copyright© Chris C. N. <span class="sc">Chu</span> from the Iowa State Universi
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -371,7 +371,7 @@ whole design down and including the standard cells.</li>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -669,7 +669,7 @@ then run the <span class="sc">Python</span> script <span class="cb">doChip.py</s
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -1161,7 +1161,7 @@ is deleted, you will crash the application...</p>
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -326,7 +326,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../viewer/index.html
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -43,13 +43,14 @@ two methods:
All configuration & initialization files are Python scripts, despite their All configuration & initialization files are Python scripts, despite their
|dot_conf| extention. From a syntactic point of view, there is no difference |dot_conf| extention. From a syntactic point of view, there is no difference
between the system-wide configuration files and the user's configuration, between the system-wide configuration files and the user's configuration,
they may use the same Python helpers. they use the same Python helpers.
|medskip| |medskip|
Configuration is done in two stages: Configuration is done in two stages:
#. Selecting the symbolic technology. #. Selecting the technology.
#. Loading the complete configuration for the given technology. #. Loading the complete configuration for the given technology
and the user's settings.
|newpage| |newpage|
@ -58,8 +59,7 @@ First Stage: Technology Selection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent| |noindent|
The initialization process is done by executing, in order, the following The initialization process is done by executing, in order, the following file(s):
file(s):
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+----------------------------------------------+
| Order | Meaning | File | | Order | Meaning | File |
@ -87,30 +87,42 @@ Second Stage: Technology Configuration Loading
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent| |noindent|
The :cb:`TECHNO` variable is set by the first stage and it's the name of the The :cb:`technology` variable is set by the first stage and it's the name of the
symbolic technology. A directory of that name, with all the configuration files, technology. A directory of that name, with all the configuration files,
must exists in the configuration directory. In addition to the technology-specific must exists in the configuration directory (:cb:`/etc/coriolis2`).
directories, a :cb:`common/` directory is there to provides a trunk for all the In addition to the technology-specific directories, a :cb:`common/` directory is
identical datas across the various technologies. The initialization process is done there to provides a trunk for all the identical datas across the various technologies.
by executing, in order, the following file(s): The initialization process is done by executing, in order, the following file(s):
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
| Order | Meaning | File | | Order | Meaning | File |
+=======+==================================+==============================================+ +=======+==================================+===============================================+
| **1** | The system initialization | :cb:`/etc/coriolis2/<TECHNO>/<TOOL>.conf` | | **1** | The system initialization | :cb:`/etc/coriolis2/<technology>/<TOOL>.conf` |
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` | | **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
| **3** | The user's local initialization | :cb:`<CWD>/.coriolis2/settings.py` | | **3** | The user's local initialization | :cb:`<CWD>/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+ +-------+----------------------------------+-----------------------------------------------+
.. note:: *The loading policy is not hard-coded.* It is implemented .. note:: *The loading policy is not hard-coded.* It is implemented
at Python level in :cb:`/etc/coriolis2/coriolisInit.py`, and thus may be easily be at Python level in :cb:`/etc/coriolis2/coriolisInit.py`, and thus may be easily
amended to whatever site policy. amended to whatever site policy.
The truly mandatory requirement is the existence of :cb:`coriolisInit.py` The truly mandatory requirement is the existence of :cb:`coriolisInit.py`
which *must* contain a :cb:`coriolisConfigure()` function with no argument. which *must* contain a :cb:`coriolisConfigure()` function with no argument.
The :cb:`coriolisInit.py` script execution is triggered by the *import* of
the ``CRL`` module:
.. code:: python
import sys
import os.path
import Cfg
import Hurricane
import CRL # Triggers execution of "coriolisInit.py".
import Viewer
Configuration Helpers Configuration Helpers
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
@ -131,33 +143,49 @@ Where :cb:`<install>/` is the root of the installation.
|Alliance| Helper |Alliance| Helper
----------------- -----------------
The configuration file must provide a :cb:`allianceConfig` tuple of The configuration file must provide an :cb:`allianceConfig` tuple as shown below.
the form: :: Like all the |Coriolis| configuration file, it is to be executed through |Python|,
so we can use it to perform a not so dumb search of the |Alliance| installation
cellsTop = '/usr/share/alliance/cells/' directory. Our default policy is to try to read the ``ALLIANCE_TOP`` environment
variable, and if not found, default to ``/soc/alliance``.
.. code:: python
import os
from helpers.Alliance import AddMode
from helpers.Alliance import Gauge
allianceTop = None
if os.environ.has_key('ALLIANCE_TOP'):
allianceTop = os.environ['ALLIANCE_TOP']
if not os.path.isdir(allianceTop):
allianceTop = None
if not allianceTop: allianceTop = '/soc/alliance'
cellsTop = allianceTop+'/cells/'
allianceConfig = \ allianceConfig = \
( ( 'SYMBOLIC_TECHNOLOGY', helpers.sysConfDir+'/technology.symbolic.xml' ) ( ( 'CATALOG' , 'CATAL')
, ( 'REAL_TECHNOLOGY' , helpers.sysConfDir+'/technology.cmos130.s2r.xml')
, ( 'DISPLAY' , helpers.sysConfDir+'/display.xml' )
, ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.') , ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , Environment.Append) , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append)
, (cellsTop+'dp_sxlib', Environment.Append) , (cellsTop+'dp_sxlib', AddMode.Append)
, (cellsTop+'ramlib' , Environment.Append) , (cellsTop+'ramlib' , AddMode.Append)
, (cellsTop+'romlib' , Environment.Append) , (cellsTop+'romlib' , AddMode.Append)
, (cellsTop+'rflib' , Environment.Append) , (cellsTop+'rflib' , AddMode.Append)
, (cellsTop+'rf2lib' , Environment.Append) , (cellsTop+'rf2lib' , AddMode.Append)
, (cellsTop+'pxlib' , Environment.Append) ) ) , (cellsTop+'pxlib' , AddMode.Append)
, ( 'SCALE_X' , 100) , (cellsTop+'padlib' , AddMode.Append) ) )
, ( 'IN_LO' , 'vst') , ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap') , ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst') , ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap') , ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd') , ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss') , ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*') , ( 'CLOCK' , '.*ck.*|.*nck.*')
, ( 'BLOCKAGE' , '^blockageNet*') , ( 'BLOCKAGE' , '^blockage[Nn]et*')
, ( 'PAD' , '.*_px$')
) )
@ -173,11 +201,11 @@ available settings. Some important remarks about thoses settings:
Each library entry in the tuple will be added to the search path according Each library entry in the tuple will be added to the search path according
to the second parameter: to the second parameter:
* :cb:`Environment::Append`: append to the search path. * :cb:`AddMode::Append`: append to the search path.
* :cb:`Environment::Prepend`: insert in head of the search path. * :cb:`AddMode::Prepend`: insert in head of the search path.
* :cb:`Environment::Replace`: look for a library of the same name and replace * :cb:`AddMode::Replace`: look for a library of the same name and replace
it, whithout changing the search path order. If no library of that name it, whithout changing the search path order. If no library of that name
already exists, it is appended. already exists, it is appended.
@ -190,11 +218,11 @@ available settings. Some important remarks about thoses settings:
* For ``POWER``, ``GROUND``, ``CLOCK`` and ``BLOCKAGE`` net names, a regular * For ``POWER``, ``GROUND``, ``CLOCK`` and ``BLOCKAGE`` net names, a regular
expression (|GNU| regexp) is expected. expression (|GNU| regexp) is expected.
* The ``helpers.sysConfDir`` variable is supplied by the helpers, it is the .. * The ``helpers.sysConfDir`` variable is supplied by the helpers, it is the
directory in which the system-wide configuration files are locateds. .. directory in which the system-wide configuration files are locateds.
For a standard installation it would be: ``/soc/coriolis2``. .. For a standard installation it would be: ``/soc/coriolis2``.
..
.. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY`` .. .. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY``
.. and ``DISPLAY``. In the previous releases, thoses files where to read by .. and ``DISPLAY``. In the previous releases, thoses files where to read by
.. XML parsers, and still do if you triggers the XML compatibility mode. .. XML parsers, and still do if you triggers the XML compatibility mode.
.. But now, they have Python conterparts. In the configuration files, you .. But now, they have Python conterparts. In the configuration files, you

View File

@ -201,10 +201,10 @@ Hooking up into |Alliance|
|Coriolis| relies on |Alliance| for the cell libraries. So after installing or |Coriolis| relies on |Alliance| for the cell libraries. So after installing or
packaging, you must configure it so that it can found those libraries. packaging, you must configure it so that it can found those libraries.
This is done by editing the one variable :cb:`cellsTop` in the |Alliance| helper The easiest way is to setup the |Alliance| environment (i.e. sourcing
(see :ref:`Alliance Helper`). This variable must point to the directory of the ``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment
cells libraries. In a typical installation, this is generally (see the next section). To understand how |Coriolis| find/setup |Alliance| you may
:cb:`/usr/share/alliance/cells`. have look to the :ref:`Alliance Helper`.
Setting up the Environment (coriolisEnv.py) Setting up the Environment (coriolisEnv.py)

View File

@ -271,7 +271,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -278,7 +278,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -262,7 +262,7 @@
<h1>Coriolis 2 documentation</h1> <h1>Coriolis 2 documentation</h1>
<p> <p>
Documentation generated on Nov 17, 2017. Documentation generated on Dec 02, 2017.
</p> </p>
<p><strong>Documentation Topics</strong></p> <p><strong>Documentation Topics</strong></p>
@ -352,7 +352,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

View File

@ -281,7 +281,7 @@
<tr> <tr>
<td class="LFooter"><small> <td class="LFooter"><small>
Generated by <a href="http://sphinx-doc.org/">Sphinx</a> Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
using a <a href="https://readthedocs.org">RTD</a> theme on Nov 17, 2017. using a <a href="https://readthedocs.org">RTD</a> theme on Dec 02, 2017.
</small></td> </small></td>
<td class="RFooter"></td> <td class="RFooter"></td>
</tr> </tr>

File diff suppressed because one or more lines are too long