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
|dot_conf| extention. From a syntactic point of view, there is no difference
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|
Configuration is done in two stages:
#. Selecting the symbolic technology.
#. Loading the complete configuration for the given technology.
#. Selecting the technology.
#. Loading the complete configuration for the given technology
and the user's settings.
|newpage|
@ -58,8 +59,7 @@ First Stage: Technology Selection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent|
The initialization process is done by executing, in order, the following
file(s):
The initialization process is done by executing, in order, the following file(s):
+-------+----------------------------------+----------------------------------------------+
| Order | Meaning | File |
@ -87,30 +87,42 @@ Second Stage: Technology Configuration Loading
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent|
The :cb:`TECHNO` 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,
must exists in the configuration directory. In addition to the technology-specific
directories, a :cb:`common/` directory is there to provides a trunk for all the
identical datas across the various technologies. The initialization process is done
by executing, in order, the following file(s):
The :cb:`technology` variable is set by the first stage and it's the name of the
technology. A directory of that name, with all the configuration files,
must exists in the configuration directory (:cb:`/etc/coriolis2`).
In addition to the technology-specific directories, a :cb:`common/` directory is
there to provides a trunk for all the identical datas across the various technologies.
The initialization process is done by executing, in order, the following file(s):
+-------+----------------------------------+----------------------------------------------+
| Order | Meaning | File |
+=======+==================================+==============================================+
| **1** | The system initialization | :cb:`/etc/coriolis2/<TECHNO>/<TOOL>.conf` |
+-------+----------------------------------+----------------------------------------------+
| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+
| **3** | The user's local initialization | :cb:`<CWD>/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+
+-------+----------------------------------+-----------------------------------------------+
| Order | Meaning | File |
+=======+==================================+===============================================+
| **1** | The system initialization | :cb:`/etc/coriolis2/<technology>/<TOOL>.conf` |
+-------+----------------------------------+-----------------------------------------------+
| **2** | The user's global initialization | :cb:`${HOME}/.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
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.
The truly mandatory requirement is the existence of :cb:`coriolisInit.py`
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
~~~~~~~~~~~~~~~~~~~~~
@ -131,33 +143,49 @@ Where :cb:`<install>/` is the root of the installation.
|Alliance| Helper
-----------------
The configuration file must provide a :cb:`allianceConfig` tuple of
the form: ::
cellsTop = '/usr/share/alliance/cells/'
The configuration file must provide an :cb:`allianceConfig` tuple as shown below.
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
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 = \
( ( 'SYMBOLIC_TECHNOLOGY', helpers.sysConfDir+'/technology.symbolic.xml' )
, ( 'REAL_TECHNOLOGY' , helpers.sysConfDir+'/technology.cmos130.s2r.xml')
, ( 'DISPLAY' , helpers.sysConfDir+'/display.xml' )
, ( 'CATALOG' , 'CATAL')
( ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , Environment.Append)
, (cellsTop+'dp_sxlib', Environment.Append)
, (cellsTop+'ramlib' , Environment.Append)
, (cellsTop+'romlib' , Environment.Append)
, (cellsTop+'rflib' , Environment.Append)
, (cellsTop+'rf2lib' , Environment.Append)
, (cellsTop+'pxlib' , Environment.Append) ) )
, ( 'SCALE_X' , 100)
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append)
, (cellsTop+'dp_sxlib', AddMode.Append)
, (cellsTop+'ramlib' , AddMode.Append)
, (cellsTop+'romlib' , AddMode.Append)
, (cellsTop+'rflib' , AddMode.Append)
, (cellsTop+'rf2lib' , AddMode.Append)
, (cellsTop+'pxlib' , AddMode.Append)
, (cellsTop+'padlib' , AddMode.Append) ) )
, ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*')
, ( 'BLOCKAGE' , '^blockageNet*')
, ( 'CLOCK' , '.*ck.*|.*nck.*')
, ( '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
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
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
expression (|GNU| regexp) is expected.
* The ``helpers.sysConfDir`` 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: ``/soc/coriolis2``.
.. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY``
.. * The ``helpers.sysConfDir`` 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: ``/soc/coriolis2``.
..
.. .. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY``
.. and ``DISPLAY``. In the previous releases, thoses files where to read by
.. XML parsers, and still do if you triggers the XML compatibility mode.
.. 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
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
(see :ref:`Alliance Helper`). This variable must point to the directory of the
cells libraries. In a typical installation, this is generally
:cb:`/usr/share/alliance/cells`.
The easiest way is to setup the |Alliance| environment (i.e. sourcing
``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment
(see the next section). To understand how |Coriolis| find/setup |Alliance| you may
have look to the :ref:`Alliance Helper`.
Setting up the Environment (coriolisEnv.py)

View File

@ -426,7 +426,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../crlcore/index.htm
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../dpgen/index.html"
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../hurricane/index.h
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -292,7 +292,7 @@ mixed signal conterpart <strong>Anabatic</strong>.</p>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -292,7 +292,7 @@ mixed-signal conterpart Katana (<span class="sc">Kit[e]-Ana[logic]</span>).</p>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../patterns/index.ht
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -320,7 +320,7 @@ associated C++ namespace.</li>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -692,7 +692,7 @@ terminal or not.</li>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -622,7 +622,7 @@ the module itself. This allow to mimic closely the C++ syntax:</p>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -336,7 +336,7 @@ the <code class="docutils literal"><span class="pre">DbU::Unit</span>&#160; <spa
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -450,7 +450,7 @@ like in the code below:</p>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -289,7 +289,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -439,7 +439,7 @@ a standalone <code class="docutils literal"><span class="pre">DBo</span></code>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -321,7 +321,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -746,7 +746,7 @@ wire width and minimal spacing for the routers. They are patly redundant.</p>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -305,7 +305,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../stratus/index.htm
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../unicorn/index.htm
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</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
<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,
they may use the same Python helpers.
they use the same Python helpers.
<span class="raw-html"><br class="medskip"/></span></p>
<p>Configuration is done in two stages:</p>
<ol class="arabic simple">
<li>Selecting the symbolic technology.</li>
<li>Loading the complete configuration for the given technology.</li>
<li>Selecting the technology.</li>
<li>Loading the complete configuration for the given technology
and the user&#8217;s settings.</li>
</ol>
<p></p>
</div>
<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>
<p> <span class="raw-html"><p class="noindent"></p></span>
The initialization process is done 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">
<colgroup>
<col width="8%" />
@ -345,12 +345,12 @@ part is a dummy one.</p>
<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>
<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
symbolic technology. A directory of that name, with all the configuration files,
must exists in the configuration directory. In addition to the technology-specific
directories, a <span class="cb">common/</span> directory is there to provides a trunk for all the
identical datas across the various technologies. The initialization process is done
by executing, in order, the following file(s):</p>
The <span class="cb">technology</span> variable is set by the first stage and it&#8217;s the name of the
technology. A directory of that name, with all the configuration files,
must exists in the configuration directory (<span class="cb">/etc/coriolis2</span>).
In addition to the technology-specific directories, a <span class="cb">common/</span> directory is
there to provides a trunk for all the identical datas across the various technologies.
The initialization process is done by executing, in order, the following file(s):</p>
<table border="1" class="docutils">
<colgroup>
<col width="8%" />
@ -366,7 +366,7 @@ by executing, in order, the following file(s):</p>
<tbody valign="top">
<tr class="row-even"><td><strong>1</strong></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 class="row-odd"><td><strong>2</strong></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">
<p class="first admonition-title">Note</p>
<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>
<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>
<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 class="section" id="configuration-helpers">
@ -399,32 +409,46 @@ simple assembly of tuples. The helpers are installed under the directory:</p>
<p></p>
<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>
<p>The configuration file must provide a <span class="cb">allianceConfig</span> tuple of
the form:</p>
<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>
<p>The configuration file must provide an <span class="cb">allianceConfig</span> tuple as shown below.
Like all the <span class="sc">Coriolis</span> configuration file, it is to be executed through <span class="sc">Python</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="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;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;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;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="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;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;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;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;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;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="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="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">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">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">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">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">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">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;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_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_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;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;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;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;^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>
</pre></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
to the second parameter:</p>
<ul class="simple">
<li><span class="cb">Environment::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">Environment::Replace</span>: look for a library of the same name and replace
<li><span class="cb">AddMode::Append</span>: append to the search path.</li>
<li><span class="cb">AddMode::Prepend</span>: insert in head of the search path.</li>
<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
already exists, it is appended.</li>
</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
expression (<span class="sc">gnu</span> regexp) is expected.</p>
</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>
<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>
@ -609,7 +629,7 @@ in <span class="cb">&lt;CWD&gt;/.coriolis2/settings.py</span> (that is, written
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</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>
<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>
<p>This is done by editing the one variable <span class="cb">cellsTop</span> in the <span class="sc">Alliance</span> helper
(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
cells libraries. In a typical installation, this is generally
<span class="cb">/usr/share/alliance/cells</span>.</p>
<p>The easiest way is to setup the <span class="sc">Alliance</span> environment (i.e. sourcing
<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
(see the next section). To understand how <span class="sc">Coriolis</span> find/setup <span class="sc">Alliance</span> you may
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 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>
@ -537,7 +537,7 @@ infinite loop if it&#8217;s called again in, say <span class="cb">~/.bashrc</spa
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -314,7 +314,7 @@ copyright© Chris C. N. <span class="sc">Chu</span> from the Iowa State Universi
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -371,7 +371,7 @@ whole design down and including the standard cells.</li>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -669,7 +669,7 @@ then run the <span class="sc">Python</span> script <span class="cb">doChip.py</s
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -1161,7 +1161,7 @@ is deleted, you will crash the application...</p>
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -326,7 +326,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -287,7 +287,7 @@ available here: <a class="reference external" href="file:../../viewer/index.html
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -43,13 +43,14 @@ two methods:
All configuration & initialization files are Python scripts, despite their
|dot_conf| extention. From a syntactic point of view, there is no difference
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|
Configuration is done in two stages:
#. Selecting the symbolic technology.
#. Loading the complete configuration for the given technology.
#. Selecting the technology.
#. Loading the complete configuration for the given technology
and the user's settings.
|newpage|
@ -58,8 +59,7 @@ First Stage: Technology Selection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent|
The initialization process is done by executing, in order, the following
file(s):
The initialization process is done by executing, in order, the following file(s):
+-------+----------------------------------+----------------------------------------------+
| Order | Meaning | File |
@ -87,30 +87,42 @@ Second Stage: Technology Configuration Loading
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|noindent|
The :cb:`TECHNO` 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,
must exists in the configuration directory. In addition to the technology-specific
directories, a :cb:`common/` directory is there to provides a trunk for all the
identical datas across the various technologies. The initialization process is done
by executing, in order, the following file(s):
The :cb:`technology` variable is set by the first stage and it's the name of the
technology. A directory of that name, with all the configuration files,
must exists in the configuration directory (:cb:`/etc/coriolis2`).
In addition to the technology-specific directories, a :cb:`common/` directory is
there to provides a trunk for all the identical datas across the various technologies.
The initialization process is done by executing, in order, the following file(s):
+-------+----------------------------------+----------------------------------------------+
| Order | Meaning | File |
+=======+==================================+==============================================+
| **1** | The system initialization | :cb:`/etc/coriolis2/<TECHNO>/<TOOL>.conf` |
+-------+----------------------------------+----------------------------------------------+
| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+
| **3** | The user's local initialization | :cb:`<CWD>/.coriolis2/settings.py` |
+-------+----------------------------------+----------------------------------------------+
+-------+----------------------------------+-----------------------------------------------+
| Order | Meaning | File |
+=======+==================================+===============================================+
| **1** | The system initialization | :cb:`/etc/coriolis2/<technology>/<TOOL>.conf` |
+-------+----------------------------------+-----------------------------------------------+
| **2** | The user's global initialization | :cb:`${HOME}/.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
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.
The truly mandatory requirement is the existence of :cb:`coriolisInit.py`
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
~~~~~~~~~~~~~~~~~~~~~
@ -131,33 +143,49 @@ Where :cb:`<install>/` is the root of the installation.
|Alliance| Helper
-----------------
The configuration file must provide a :cb:`allianceConfig` tuple of
the form: ::
cellsTop = '/usr/share/alliance/cells/'
The configuration file must provide an :cb:`allianceConfig` tuple as shown below.
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
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 = \
( ( 'SYMBOLIC_TECHNOLOGY', helpers.sysConfDir+'/technology.symbolic.xml' )
, ( 'REAL_TECHNOLOGY' , helpers.sysConfDir+'/technology.cmos130.s2r.xml')
, ( 'DISPLAY' , helpers.sysConfDir+'/display.xml' )
, ( 'CATALOG' , 'CATAL')
( ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , Environment.Append)
, (cellsTop+'dp_sxlib', Environment.Append)
, (cellsTop+'ramlib' , Environment.Append)
, (cellsTop+'romlib' , Environment.Append)
, (cellsTop+'rflib' , Environment.Append)
, (cellsTop+'rf2lib' , Environment.Append)
, (cellsTop+'pxlib' , Environment.Append) ) )
, ( 'SCALE_X' , 100)
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append)
, (cellsTop+'dp_sxlib', AddMode.Append)
, (cellsTop+'ramlib' , AddMode.Append)
, (cellsTop+'romlib' , AddMode.Append)
, (cellsTop+'rflib' , AddMode.Append)
, (cellsTop+'rf2lib' , AddMode.Append)
, (cellsTop+'pxlib' , AddMode.Append)
, (cellsTop+'padlib' , AddMode.Append) ) )
, ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*')
, ( 'BLOCKAGE' , '^blockageNet*')
, ( 'CLOCK' , '.*ck.*|.*nck.*')
, ( '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
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
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
expression (|GNU| regexp) is expected.
* The ``helpers.sysConfDir`` 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: ``/soc/coriolis2``.
.. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY``
.. * The ``helpers.sysConfDir`` 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: ``/soc/coriolis2``.
..
.. .. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY``
.. and ``DISPLAY``. In the previous releases, thoses files where to read by
.. XML parsers, and still do if you triggers the XML compatibility mode.
.. 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
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
(see :ref:`Alliance Helper`). This variable must point to the directory of the
cells libraries. In a typical installation, this is generally
:cb:`/usr/share/alliance/cells`.
The easiest way is to setup the |Alliance| environment (i.e. sourcing
``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment
(see the next section). To understand how |Coriolis| find/setup |Alliance| you may
have look to the :ref:`Alliance Helper`.
Setting up the Environment (coriolisEnv.py)

View File

@ -271,7 +271,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -278,7 +278,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -262,7 +262,7 @@
<h1>Coriolis 2 documentation</h1>
<p>
Documentation generated on Nov 17, 2017.
Documentation generated on Dec 02, 2017.
</p>
<p><strong>Documentation Topics</strong></p>
@ -352,7 +352,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

View File

@ -281,7 +281,7 @@
<tr>
<td class="LFooter"><small>
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>
<td class="RFooter"></td>
</tr>

File diff suppressed because one or more lines are too long