diff --git a/documentation/UsersGuide/HTML_defs.rst b/documentation/UsersGuide/HTML_defs.rst
index 68620e15..2d04ed45 100644
--- a/documentation/UsersGuide/HTML_defs.rst
+++ b/documentation/UsersGuide/HTML_defs.rst
@@ -10,26 +10,6 @@
.. _Here: file:///usr/share/doc/coriolis2/en/latex/users-guide/UsersGuide.pdf
.. For HTML backend
-.. |Key_ESC| image:: ./images/key_ESC.png
-.. |Key_CTRL| image:: ./images/key_CTRL.png
-.. |Key_Up| image:: ./images/key_UP.png
-.. |Key_Down| image:: ./images/key_DOWN.png
-.. |Key_Left| image:: ./images/key_LEFT.png
-.. |Key_Right| image:: ./images/key_RIGHT.png
-.. |Key_f| image:: ./images/key_F.png
-.. |Key_G| image:: ./images/key_Gcap.png
-.. |Key_i| image:: ./images/key_Icap.png
-.. |Key_l| image:: ./images/key_Lcap.png
-.. |Key_m| image:: ./images/key_M.png
-.. |Key_k| image:: ./images/key_K.png
-.. |Key_K| image:: ./images/key_Kcap.png
-.. |Key_o| image:: ./images/key_Ocap.png
-.. |Key_p| image:: ./images/key_Pcap.png
-.. |Key_q| image:: ./images/key_Qcap.png
-.. |Key_w| image:: ./images/key_Wcap.png
-.. |Key_S| image:: ./images/key_Scap.png
-.. |Key_z| image:: ./images/key_Z.png
-.. |Plus| replace:: :raw-html:`+`
.. |rightarrow| replace:: :raw-html:`
`
.. |menu_P&R| replace:: :raw-html:``
.. |menu_StepByStep| replace:: :raw-html:``
@@ -54,6 +34,8 @@
.. |ControllerInspector_3| replace:: :raw-html:``
.. |ControllerSettings_1| replace:: :raw-html:``
.. |CoriolisSoftSchema| replace:: :raw-html:``
+.. |ChipStructure-1| replace:: :raw-html:``
+.. |Etesian-1| replace:: :raw-html:``
.. |BigMouse| image:: ./images/ComputerMouse.png
:scale: 25%
@@ -63,4 +45,5 @@
.. |noindent| replace:: :raw-html:``
.. |medskip| replace:: :raw-html:`
`
.. |newpage| replace:: :raw-html:`
`
+.. |br| replace:: :raw-html:`
`
diff --git a/documentation/UsersGuide/LaTeX_defs.rst b/documentation/UsersGuide/LaTeX_defs.rst
index c424b96c..8d48f8e1 100644
--- a/documentation/UsersGuide/LaTeX_defs.rst
+++ b/documentation/UsersGuide/LaTeX_defs.rst
@@ -11,26 +11,6 @@
.. |DONE| replace:: :raw-latex:`\marginpar{\fbox{\small\ding{56}}}`
.. For LaTeX/PDF backend.
-.. |Key_ESC| replace:: :raw-latex:`\key{ESC}\xspace`
-.. |Key_CTRL| replace:: :raw-latex:`\key{CTRL}\xspace`
-.. |Key_Up| replace:: :raw-latex:`\key{Up}\xspace`
-.. |Key_Down| replace:: :raw-latex:`\key{Down}\xspace`
-.. |Key_Left| replace:: :raw-latex:`\key{Left}\xspace`
-.. |Key_Right| replace:: :raw-latex:`\key{Right}\xspace`
-.. |Key_f| replace:: :raw-latex:`\key{f}\xspace`
-.. |Key_G| replace:: :raw-latex:`\key{G}\xspace`
-.. |Key_i| replace:: :raw-latex:`\key{i}\xspace`
-.. |Key_l| replace:: :raw-latex:`\key{l}\xspace`
-.. |Key_m| replace:: :raw-latex:`\key{m}\xspace`
-.. |Key_k| replace:: :raw-latex:`\key{k}\xspace`
-.. |Key_K| replace:: :raw-latex:`\key{K}\xspace`
-.. |Key_o| replace:: :raw-latex:`\key{o}\xspace`
-.. |Key_p| replace:: :raw-latex:`\key{p}\xspace`
-.. |Key_q| replace:: :raw-latex:`\key{q}\xspace`
-.. |Key_w| replace:: :raw-latex:`\key{w}\xspace`
-.. |Key_S| replace:: :raw-latex:`\key{S}\xspace`
-.. |Key_z| replace:: :raw-latex:`\key{z}\xspace`
-.. |Plus| replace:: :raw-latex:`$+$\xspace`
.. |rightarrow| replace:: :raw-latex:`$\rightarrow$`
.. |menu_P&R| replace:: :raw-latex:`\fbox{\textsf{\textbf{{P\&R}}}}`
.. |menu_StepByStep| replace:: :raw-latex:`\fbox{\textsf{\textbf{{\underline{S}tep by Step}}}}`
@@ -55,6 +35,8 @@
.. |ControllerInspector_3| replace:: :raw-latex:`\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Inspector-3.eps}\end{center}`
.. |ControllerSettings_1| replace:: :raw-latex:`\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Settings-1.eps}\end{center}`
.. |CoriolisSoftSchema| replace:: :raw-latex:`\begin{center}\includegraphics[width=.7\textwidth]{./images/Coriolis-Soft-Schema.eps}\end{center}`
+.. |ChipStructure-1| replace:: :raw-latex:`\begin{center}\includegraphics[width=.95\textwidth]{./images/chip-structure-1.eps}\end{center}`
+.. |Etesian-1| replace:: :raw-latex:`\begin{center}\includegraphics[width=.95\textwidth]{./images/etesian-1.eps}\end{center}`
.. |BigMouse| image:: ./images/ComputerMouse.eps
:scale: 25%
@@ -64,4 +46,5 @@
.. |noindent| replace:: :raw-latex:`\noindent`
.. |medskip| replace:: :raw-latex:`\medskip`
.. |newpage| replace:: :raw-latex:`\newpage`
+.. |br| replace:: :raw-latex:`\\`
diff --git a/documentation/UsersGuide/SoC.css b/documentation/UsersGuide/SoC.css
index 8bc16800..4bca9453 100644
--- a/documentation/UsersGuide/SoC.css
+++ b/documentation/UsersGuide/SoC.css
@@ -1,10 +1,7 @@
html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 {
font-size: 96%;
- /*
- font-family: verdana, sans-serif;
- */
- font-family: "Open Sans", sans-serif;
+ font-family: "Open Sans", verdana, sans-serif;
}
body {
@@ -18,9 +15,13 @@ body {
background-attachment: fixed;
background-repeat: no-repeat;
margin: 0 0 0 0;
- padding: 0 0 0 0;
+ padding: 20pt;
+ width: 550pt;
margin-right: 10%;
margin-left: 30%;
+ -moz-box-shadow: 4px 4px 5px 3px #ccc;
+ -webkit-box-shadow: 4px 4px 5px 3px #ccc;
+ box-shadow: 4px 4px 5px 3px #ccc;
}
body.gsummary {
@@ -28,22 +29,27 @@ body.gsummary {
margin-left: 10%;
}
-h1, h2, h3, h4, h5, h6 {
- font-family: "Open Sans", sans-serif;
-}
+h1, h2, h3, h4, h5, h6 { font-family: "Open Sans", verdana, sans-serif; }
+h1 { text-align: center;
+ border-top: 2px solid #09550b;
+ border-bottom: 2px solid #09550b;
+ padding-top: 7pt;
+ padding-bottom: 7pt;
+ }
+h2, h3, h4, h5, h6 { text-align: left; }
+h1, h2, h3 { font-family: "Open Sans";
+ }
+h1 { font-weight: normal; font-size: 170%; padding-top: 7pt; margin-top: 25pt; }
+h2 { font-weight: normal; font-size: 140%; padding-top: 7pt; margin-top: 25pt; }
+h3 { font-weight: bold; font-size: 118%; padding-top: 7pt; margin-top: 25pt; }
+h4 { font-weight: bold; font-size: 100%; }
+h5 { font-style: italic; font-size: 100%; }
+h6 { font-variant: small-caps; font-size: 100%; }
+
+body.gsummary h1 { text-align: center; font-size: 220%; }
+
+h1 a:link { border-bottom: 0px; }
-h1 { text-align: left; }
-h2, h3, h4, h5, h6 { text-align: left; }
-h1, h2, h3 { font-family: "Serif";
- }
-h1 { font-weight: normal; font-size: 170%; padding-top: 7pt; margin-top: 25pt; }
-h2 { font-weight: normal; font-size: 140%; padding-top: 7pt; margin-top: 25pt; }
-h3 { font-weight: bold; font-size: 118%; padding-top: 7pt; margin-top: 25pt; }
-h4 { font-weight: bold; font-size: 100%; }
-h5 { font-style: italic; font-size: 100%; }
-h6 { font-variant: small-caps; font-size: 100%; }
-
-body.gsummary h1 { text-align: center; font-size: 220%; }
hr {
color: #09550b;
diff --git a/documentation/UsersGuide/UsersGuide.rst b/documentation/UsersGuide/UsersGuide.rst
index 73c33e2b..47336834 100644
--- a/documentation/UsersGuide/UsersGuide.rst
+++ b/documentation/UsersGuide/UsersGuide.rst
@@ -27,6 +27,8 @@
.. |FC13| replace:: :sc:`fc13`
.. |Debian| replace:: :sc:`Debian`
.. |Ubuntu| replace:: :sc:`Ubuntu`
+.. |LEMON| replace:: :sc:`lemon`
+.. |Coin-Or| replace:: :sc:`coin-or`
.. |Alexandre| replace:: :sc:`Alexandre`
.. |Belloeil| replace:: :sc:`Belloeil`
@@ -89,13 +91,43 @@
.. |rpm| replace:: :cb:`rpm`
.. |gdb| replace:: :cb:`gdb`
+.. |KeyUp| replace:: :fboxtt:`Up`
+.. |KeyDown| replace:: :fboxtt:`Down`
+.. |KeyLeft| replace:: :fboxtt:`Left`
+.. |KeyRight| replace:: :fboxtt:`Right`
+.. |KeyF| replace:: :fboxtt:`f`
+.. |KeyL| replace:: :fboxtt:`l`
+.. |KeyG| replace:: :fboxtt:`g`
+.. |KeyZ| replace:: :fboxtt:`z`
+.. |KeyM| replace:: :fboxtt:`m`
+.. |KeyI| replace:: :fboxtt:`i`
+.. |KeyK| replace:: :fboxtt:`k`
+.. |KeyP| replace:: :fboxtt:`p`
+.. |KeyO| replace:: :fboxtt:`o`
+.. |KeyW| replace:: :fboxtt:`w`
+.. |KeyQ| replace:: :fboxtt:`q`
+.. |KeyCapK| replace:: :fboxtt:`K`
+.. |KeyCapS| replace:: :fboxtt:`S`
+.. |Plus| replace:: :fboxtt:`+`
+.. |KeyESC| replace:: :fboxtt:`ESC`
+.. |CTRL| replace:: :fboxtt:`CTRL`
.. |CTRL_L| replace:: :fboxtt:`CTRL+L`
+.. |CTRL_I| replace:: :fboxtt:`CTRL+I`
+.. |CTRL_P| replace:: :fboxtt:`CTRL+P`
+.. |CTRL_O| replace:: :fboxtt:`CTRL+O`
+.. |CTRL_W| replace:: :fboxtt:`CTRL+W`
+.. |CTRL_Q| replace:: :fboxtt:`CTRL+Q`
+.. |CTRL_Down| replace:: :fboxtt:`CTRL+Down`
+.. |CTRL_Up| replace:: :fboxtt:`CTRL+Up`
+.. |CTRL_Left| replace:: :fboxtt:`CTRL+Left`
+.. |CTRL_Right| replace:: :fboxtt:`CTRL+Right`
.. URLs
-.. _FGR: http://vlsicad.eecs.umich.edu/BK/FGR/
-.. _Box Router: http://www.cerc.utexas.edu/~thyeros/boxrouter/boxrouter.htm
-.. _hMETIS: http://glaros.dtc.umn.edu/gkhome/views/metis
-.. _Knik Thesis: http://www-soc.lip6.fr/en/users/damiendupuis/PhD/
+.. _FGR: http://vlsicad.eecs.umich.edu/BK/FGR/
+.. _Box Router: http://www.cerc.utexas.edu/~thyeros/boxrouter/boxrouter.htm
+.. _hMETIS: http://glaros.dtc.umn.edu/gkhome/views/metis
+.. _Knik Thesis: http://www-soc.lip6.fr/en/users/damiendupuis/PhD/
+.. _Coin Or Home: http://www.coin-or.org/index.html
.. _coriolis2-1.0.2049-1.slsoc6.i686.rpm: http://asim.lip6.fr/pub/coriolis/2.0/coriolis2-1.0.2049-1.slsoc6.i686.rpm
.. _coriolis2-1.0.2049-1.slsoc6.x86_64.rpm: http://asim.lip6.fr/pub/coriolis/2.0/coriolis2-1.0.2049-1.slsoc6.x86_64.rpm
@@ -274,8 +306,8 @@ Release `2049` is Alpha.
#. The |cgt| main has been rewritten in Python.
-Release **v2.0.1**
-~~~~~~~~~~~~~~~~~~
+Release v2.0.1
+~~~~~~~~~~~~~~
#. Migrated the repository from |svn| to |git|, and release complete sources.
As a consequence, we drop the distribution packaging support and give
@@ -284,7 +316,7 @@ Release **v2.0.1**
achieve a speedup factor greater than 20...
-Release **v3.0**
+**Release v2.1**
~~~~~~~~~~~~~~~~
#. Replace the old simulated annealing placer |Mauka| by an analytic placer
@@ -325,6 +357,17 @@ Main building prerequisites:
* latex
* latex2html.
* python-docutils (for reStructuredText).
+* |Coloquinte| (https://github.com/Coloquinte/Coloquinte.git).
+
+|Coloquinte| requires the |LEMON| component from |Coin-Or| (`Coin Or Home`_).
+A repository of |Coin-Or| packages backported from |Fedora| 21 is available here:
+
+* |SL6|: `ftp://pub/linux/distributions/slsoc/slsoc/soc/addons/i386/RPMS `_
+* |SL7|: `ftp://pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS `_
+
+For other distributions, refer to their own packaging system.
+
+|newpage|
Fixed Directory Tree
@@ -378,6 +421,8 @@ automatically created either by |ccb| or the build system.
``Static`` do not work because I don't know yet to mix statically linked binaries
and Python modules (which must be dynamic).
+|newpage|
+
Building Coriolis
~~~~~~~~~~~~~~~~~
@@ -394,9 +439,11 @@ The first step is to create the source directory and pull the |git| repository:
Second and final step, build & install: ::
- dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds --project=coriolis \
+ dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds \
+ --project=coriolis \
--make="-j4 install"
- dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis --doc --make="-j1 install"
+ dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
+ --doc --make="-j1 install"
We need two steps because the documentation do not support to be generated with
a parallel build. So we compile & install in a first step in ``-j4`` (or whatever)
@@ -404,7 +451,8 @@ then we generate the documentation in ``-j1``
Under |RHEL6| or clones, you must build using the |devtoolset2|: ::
- dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds --project=coriolis \
+ dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds \
+ --project=coriolis \
--devtoolset-2 --make="-j4 install"
If you want to uses Qt 5 instead of Qt 4, you may add the ``--qt5`` argument.
@@ -426,7 +474,8 @@ In the |Coriolis| |git| repository, two branches are present:
command just after the first step: ::
dummy@lepka:~$ git checkout devel
- dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds --project=coriolis \
+ dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds \
+ --project=coriolis \
--make="-j4 install" --debug
Be aware that it may requires newer versions of the dependencies and may introduce
@@ -437,6 +486,8 @@ In the |Coriolis| |git| repository, two branches are present:
dummy@lepka:work$ gdb python core.XXXX
+|newpage|
+
Additionnal Requirement under |MacOS|
-------------------------------------
@@ -615,6 +666,8 @@ simple assembly of tuples. The helpers are installed under the directory: ::
Where :cb:`/` is the root of the installation.
+|newpage|
+
.. _Alliance Helper:
@@ -909,14 +962,40 @@ Etesian -- Placer
~~~~~~~~~~~~~~~~~
The |Etesian| placer is a state of the art (as of 2015) analytical placer. This |Coriolis|
-tool is really an encapsulation of |Coloquinte| which *is* the placer. |Coloquinte|
-is provided a separate library, see the building instructions.
+tool is actually an encapsulation of |Coloquinte| which *is* the placer. |Coloquinte|
+is provided as a separate library, see the building instructions.
-.. note:: *Instance Duplication Problem:* a same logical instance cannot have
+.. note:: *Instance Uniquification Unsupported:* a same logical instance cannot have
two different placements. So, either you manually make a clone of it or you
- supply a placement for it. This is currently a drawback of our *folded hierarchy*
- approach.
+ supply a placement for it. We need to implement uniquification in the
+ |Hurricane| database.
+
+|noindent|
+**Hierarchical Placement**
+
+The placement area is defined by the top cell abutment box.
+
+When placing a complete hierarchy, the abutment boxes of the cells (models) other than
+the top cell are sets identical to the one of the top cell and their instances are
+all placed at position ``(0,0,ID)``. That is, all the abutments boxes, whatever the
+hierarchical level, defines the same area (they are exactly superposed).
+
+We choose this scheme because the placer will see all the instances as virtually
+flattened, so they can be placed anywhere inside the top-cell abutment box.
+
+|Etesian-1|
+
+
+|noindent|
+**Computing the Placement Area**
+
+The placement area is computed using the ``etesian.aspectRatio`` and ``etesian.spaceMargin``
+parameters only if the top-cell has an empty abutment box. If the top-cell abutment
+box has to be set, then it is propagated to all the instances models recursively.
+
+
+|noindent|
**Reseting the Placement**
Once a placement has been done, the placer cannot reset it (will be implemented
@@ -924,6 +1003,48 @@ later). To perform a new placement, you must restart |cgt|. In addition, if you
have saved the placement on disk, you must erase any :cb:`.ap` file, which are
automatically reloaded along with the netlist (:cb:`.vst`).
+|newpage|
+
+
+Etesian Configuration Parameters
+--------------------------------
+
++-----------------------------------+------------------+----------------------------+
+| Parameter Identifier | Type | Default |
++===================================+==================+============================+
+| **Etesian Parameters** |
++-----------------------------------+------------------+----------------------------+
+|``etesian.aspectRatio`` | TypePercentage | :cb:`100` |
+| +------------------+----------------------------+
+| | Define the height on width ``H/W`` aspect |
+| | ratio, can be comprised between 10 and 1000 |
++-----------------------------------+------------------+----------------------------+
+|``etesian.spaceMargin`` | TypePercentage | :cb:`5` |
+| +------------------+----------------------------+
+| | The extra white space added to the total area |
+| | of the standard cells |
++-----------------------------------+------------------+----------------------------+
+|``etesian.uniformDensity`` | TypeBool | :cb:`False` |
+| +------------------+----------------------------+
+| | Whether the cells will be spread envenly |
+| | across the area or allowed to form denser |
+| | clusters |
++-----------------------------------+------------------+----------------------------+
+|``etesian.effort`` | TypeInt | :cb:`2` |
+| +------------------+----------------------------+
+| | Sets the balance between the speed of the |
+| | placer and the solution quality |
++-----------------------------------+------------------+----------------------------+
+|``etesian.graphics`` | TypeInt | :cb:`2` |
+| +------------------+----------------------------+
+| | How often the display will be refreshed, more |
+| | refreshing slows the placer. |
+| | |
+| | * ``1`` show both upper and lower bounds |
+| | * ``2`` show only lower bound |
+| | * ``3`` Don't show anything |
++-----------------------------------+-----------------------------------------------+
+
Knik -- Global Router
~~~~~~~~~~~~~~~~~~~~~
@@ -976,8 +1097,6 @@ saturated area and increased wirelength. This is the saturation of the
which represent one track. The maximum capacity of the |SxLib| gauge is
10 tracks in two layers, that makes 20 tracks by |Knik| edge.
-|newpage|
-
Routing a design is done in four ordered steps:
#. Detailed pre-route |menu_P&R| |rightarrow| |menu_StepByStep| |rightarrow| |menu_KiteDetailedPreRoute|.
@@ -1125,7 +1244,7 @@ Printing & Snapshots
~~~~~~~~~~~~~~~~~~~~
Printing or saving into a |pdf| is fairly simple, just uses the **File -> Print**
-menu or the |Key_CTRL| |Plus| |Key_p| shortcut to open the dialog box.
+menu or the |CTRL_P| shortcut to open the dialog box.
The print functionality uses exactly the same rendering mechanism as for the
screen, beeing almost *WYSIWYG*. Thus, to obtain the best results it is advisable
@@ -1162,22 +1281,21 @@ The main application binary is |cgt|.
+---------------+-------------------+-----------------------------------------------------------+
| Category | Keys | Action |
+===============+===================+===========================================================+
-| **Moves** | | |Key_Up|, | Shift the view in the according direction |
-| | |Key_Down| | |
-| | | |Key_Left|, | |
-| | |Key_Right| | |
+| **Moves** | | |KeyUp|, | Shift the view in the according direction |
+| | |KeyDown| | |
+| | | |KeyLeft|, | |
+| | |KeyRight| | |
+---------------+-------------------+-----------------------------------------------------------+
-| **Fit** | |Key_f| | Fit to the Cell abutment box |
+| **Fit** | |KeyF| | Fit to the Cell abutment box |
+---------------+-------------------+-----------------------------------------------------------+
-| **Refresh** | |Key_CTRL| | Triggers a complete display redraw |
-| | |Plus| |Key_l| | |
+| **Refresh** | |CTRL_L| | Triggers a complete display redraw |
+---------------+-------------------+-----------------------------------------------------------+
-| **Goto** | |Key_g| | *apperture* is the minimum side of the area |
+| **Goto** | |KeyG| | *apperture* is the minimum side of the area |
| | | displayed around the point to go to. It's an |
| | | alternative way of setting the zoom level |
+---------------+-------------------+-----------------------------------------------------------+
-| **Zoom** | |Key_z|, | Respectively zoom by a 2 factor and *unzoom* |
-| | |Key_m| | by a 2 factor |
+| **Zoom** | |KeyZ|, | Respectively zoom by a 2 factor and *unzoom* |
+| | |KeyM| | by a 2 factor |
| +-------------------+-----------------------------------------------------------+
| | | |BigMouse| | You can perform a zoom to an area. |
| | | Area Zoom | Define the zoom area by *holding down the left |
@@ -1188,52 +1306,51 @@ The main application binary is |cgt|.
| | | right mouse button* while moving the mouse. |
| +-------------------+-----------------------------------------------------------+
| | | |BigMouse| | You can toggle the selection of one object under |
-| | | Toggle Selection| the mouse position by pressing |key_CTRL| and |
+| | | Toggle Selection| the mouse position by pressing |CTRL| and |
| | | pressing down *the right mouse button*. A popup |
| | | list of what's under the position shows up into |
| | | which you can toggle the selection state of one |
| | | item. |
| +-------------------+-----------------------------------------------------------+
-| | |Key_S| | Toggle the selection visibility |
+| | |KeyCapS| | Toggle the selection visibility |
+---------------+-------------------+-----------------------------------------------------------+
-| **Controller**| |Key_CTRL| | Show/hide the controller window. |
-| | |Plus| |Key_i| | |
+| **Controller**| |CTRL_I| | Show/hide the controller window. |
| | | |
| | | It's the Swiss Army Knife of the viewer. |
| | | From it, you can fine-control the display and |
| | | inspect almost everything in your design. |
+---------------+-------------------+-----------------------------------------------------------+
-| **Rulers** | |Key_k|, | One stroke on |Key_k| enters the ruler mode, in |
-| | |Key_ESC| | which you can draw one ruler. You can exit the |
-| | | ruler mode by pressing |Key_ESC|. Once in ruler |
+| **Rulers** | |KeyK|, | One stroke on |KeyK| enters the ruler mode, in |
+| | |KeyESC| | which you can draw one ruler. You can exit the |
+| | | ruler mode by pressing |KeyESC|. Once in ruler |
| | | mode, the first click on the *left mouse button* |
| | | sets the ruler's starting point and the second |
| | | click the ruler's end point. The second click |
| | | exits automatically the ruler mode. |
| +-------------------+-----------------------------------------------------------+
-| | |Key_K| | Clears all the drawn rulers |
+| | |KeyCapK| | Clears all the drawn rulers |
+---------------+-------------------+-----------------------------------------------------------+
-| **Print** | |Key_CTRL| | Currently rather crude. It's a direct copy of |
-| | |Plus| |Key_p| | what's displayed in pixels. So the resulting |
+| **Print** | |CTRL_P| | Currently rather crude. It's a direct copy of |
+| | | what's displayed in pixels. So the resulting |
| | | picture will be a little blurred due to |
| | | anti-aliasing mechanism. |
+---------------+-------------------+-----------------------------------------------------------+
-| **Open/Close**| |Key_CTRL| | Opens a new design. The design name must be |
-| | |Plus| |Key_o| | given without path or extention. |
+| **Open/Close**| |CTRL_O| | Opens a new design. The design name must be |
+| | | given without path or extention. |
| +-------------------+-----------------------------------------------------------+
-| | |Key_CTRL| | Close the current viewer window, but do not quit |
-| | |Plus| |Key_w| | the application. |
+| | |CTRL_W| | Close the current viewer window, but do not quit |
+| | | the application. |
| +-------------------+-----------------------------------------------------------+
-| | |Key_CTRL| | `CTRL+Q` quit the application |
-| | |Plus| |Key_q| | (closing all windows). |
+| | |CTRL_Q| | `CTRL+Q` quit the application |
+| | | (closing all windows). |
+---------------+-------------------+-----------------------------------------------------------+
-| **Hierarchy** | |Key_CTRL| |Plus| | Go one hierarchy level down. That is, if there |
-| | |Key_Down| | is an *instance* under the cursor position, load |
+| **Hierarchy** | |CTRL_Down| | Go one hierarchy level down. That is, if there |
+| | | is an *instance* under the cursor position, load |
| | | it's *model* Cell in place of the current one. |
| +-------------------+-----------------------------------------------------------+
-| | |Key_CTRL| |Plus| | Go one hierarchy level up. if we have entered |
-| | |Key_Up| | the current model through |Key_CTRL| |Plus| |
-| | | |Key_Down|, reload the previous model (the one |
+| | |CTRL_Up| | Go one hierarchy level up. if we have entered |
+| | | the current model through |CTRL_Down| |
+| | | reload the previous model (the one |
| | | in which this model is instanciated). |
+---------------+-------------------+-----------------------------------------------------------+
@@ -1348,6 +1465,9 @@ Miscellaneous Settings
| | To generate one set this flag to :cb:`True` |
+---------------------------------------+------------------+----------------------------+
+|newpage|
+
+
.. _The Controller:
The Controller
@@ -1579,11 +1699,249 @@ This typical script can be executed in two ways:
+----------------------+-----------------------------------------------+
+Plugins
+=======
+
+Plugins are |Python| scripts specially crafted to integrate with |cgt|.
+Their entry point is a :cb:`ScriptMain()` method as described in
+`Python Interface to Coriolis`_. They can be called by user scripts
+through this method.
+
+
+
+Chip Placement
+~~~~~~~~~~~~~~
+
+Automatically perform the placement of a complete chip. This plugin, as well
+as the other P&R tools expect a specific top-level hierarchy for the design.
+The top-level hierarchy must contains the instances of all the I/O pads and
+**exactly one** instance of the chip's core model.
+
+|ChipStructure-1|
+
+The designer must provide a configuration file that define the rules for the
+placement of the top-level hierarchy (that is, the pads and the core).
+This file must be named after the chip's name, by appending ``_chip.py``
+(obviously, it is a |Python| file). For instance if the chip netlist file
+is called ``amd2901_crl.vst``, then the configuration file must be named
+``amd2901_crl_chip.vst``.
+
+Example of chip placement configuration file (for ``AM2901``): ::
+
+ chip = \
+ { 'pads.south' : [ 'p_a3' , 'p_a2' , 'p_a1' , 'p_r0'
+ , 'p_vddick0', 'p_vssick0', 'p_a0' , 'p_i6'
+ , 'p_i8' , 'p_i7' , 'p_r3' ]
+ , 'pads.east' : [ 'p_zero' , 'p_i0' , 'p_i1' , 'p_i2'
+ , 'p_vddeck0', 'p_vsseck0', 'p_q3' , 'p_b0'
+ , 'p_b1' , 'p_b2' , 'p_b3' ]
+ , 'pads.north' : [ 'p_noe' , 'p_y3' , 'p_y2' , 'p_y1'
+ , 'p_y0' , 'p_vddeck1', 'p_vsseck1', 'p_np'
+ , 'p_ovr' , 'p_cout' , 'p_ng' ]
+ , 'pads.west' : [ 'p_cin' , 'p_i4' , 'p_i5' , 'p_i3'
+ , 'p_ck' , 'p_d0' , 'p_d1' , 'p_d2'
+ , 'p_d3' , 'p_q0' , 'p_f3' ]
+ , 'core.size' : ( 1500, 1500 )
+ , 'chip.size' : ( 3000, 3000 )
+ , 'chip.clockTree' : True
+ }
+
+The file must contain *one dictionnary* named ``chip``.
+
++----------------------+-------------------------------------------------------+
+| Chip Dictionnary |
++----------------------+-------------------------------------------------------+
+| Parameter Key/Name | Value/Contents type |
++======================+=======================================================+
+| ``'pad.south'`` | Ordered list (left to right) of pad instances names |
+| | to put on the south side of the chip |
++----------------------+-------------------------------------------------------+
+| ``'pad.east'`` | Ordered list (down to up) of pad instances names |
+| | to put on the east side of the chip |
++----------------------+-------------------------------------------------------+
+| ``'pad.north'`` | Ordered list (left to right) of pad instances names |
+| | to put on the north side of the chip |
++----------------------+-------------------------------------------------------+
+| ``'pad.west'`` | Ordered list (down to up) of pad instances names |
+| | to put on the west side of the chip |
++----------------------+-------------------------------------------------------+
+| ``'core.size'`` | The size of the core (to be used by the placer) |
++----------------------+-------------------------------------------------------+
+| ``'chip.size'`` | The size of the whole chip. The sides must be great |
+| | enough to accomodate all the pads |
++----------------------+-------------------------------------------------------+
+| ``'chip.clockTree'`` | Whether to generate a clock tree or not. This calls |
+| | the ClockTree plugin |
++----------------------+-------------------------------------------------------+
+
+Configuration parameters, defaults are defined in ``etc/coriolis2//plugins.conf``.
+
++-----------------------------------+------------------+----------------------------+
+| Parameter Identifier | Type | Default |
++===================================+==================+============================+
+| **Chip Plugin Parameters** |
++-----------------------------------+------------------+----------------------------+
+|``chip.block.rails.count`` | TypeInt | :cb:`5` |
+| +------------------+----------------------------+
+| | The minimum number of rails around the core |
+| | block. Must be odd and suppérior to 5. |
+| | One rail for the clock and at least two pairs |
+| | of power/grounds |
++-----------------------------------+------------------+----------------------------+
+|``chip.block.rails.hWidth`` | TypeInt | :cb:`12` |
+| +------------------+----------------------------+
+| | The horizontal with of the rails |
++-----------------------------------+------------------+----------------------------+
+|``chip.block.rails.vWidth`` | TypeInt | :cb:`12` |
+| +------------------+----------------------------+
+| | The vertical with of the rails |
++-----------------------------------+------------------+----------------------------+
+|``chip.block.rails.hSpacing`` | TypeInt | :cb:`6` |
+| +------------------+----------------------------+
+| | The spacing, *edge to edge* of two adjacent |
+| | horizontal rails |
++-----------------------------------+------------------+----------------------------+
+|``chip.block.rails.vSpacing`` | TypeInt | :cb:`6` |
+| +------------------+----------------------------+
+| | The spacing, *edge to edge* of two adjacent |
+| | vertical rails |
++-----------------------------------+------------------+----------------------------+
+|``chip.pad.pck`` | TypeString | :cb:`pck_px` |
+| +------------------+----------------------------+
+| | The model name of the pad connected to the |
+| | chip external clock |
++-----------------------------------+------------------+----------------------------+
+|``chip.pad.pvddeck`` | TypeString | :cb:`pvddeck_px` |
+| +------------------+----------------------------+
+| | The model name of the pad connected to the |
+| | ``vdde`` (external power) and suppling it to |
+| | the core |
++-----------------------------------+------------------+----------------------------+
+|``chip.pad.pvsseck`` | TypeString | :cb:`pvsseck_px` |
+| +------------------+----------------------------+
+| | The model name of the pad connected to the |
+| | ``vsse`` (external ground) and suppling it to |
+| | the core |
++-----------------------------------+------------------+----------------------------+
+|``chip.pad.pvddick`` | TypeString | :cb:`pvddick_px` |
+| +------------------+----------------------------+
+| | The model name of the pad connected to the |
+| | ``vddi`` (internal power) and suppling it to |
+| | the core |
++-----------------------------------+------------------+----------------------------+
+|``chip.pad.pvssick`` | TypeString | :cb:`pvssick_px` |
+| +------------------+----------------------------+
+| | The model name of the pad connected to the |
+| | ``vssi`` (internal ground) and suppling it to |
+| | the core |
++-----------------------------------+------------------+----------------------------+
+
+.. note::
+ If no clock tree is generated, then the clock rail is *not* created.
+ So even if the requested number of rails ``chip.block.rails.count`` is, say 5,
+ only four rails (2* ``power``, 2* ``ground``) will be generateds.
+
+
+Clock Tree
+~~~~~~~~~~
+
+Insert a clock tree into a block. The clock tree uses the H strategy.
+The clock net is splitted into sub-nets, one for each branch of the
+tree.
+
+* On **chips** design, the sub-nets are createds in the model of the
+ core block (then trans-hierarchically flattened to be shown at
+ chip level).
+* On **blocks**, the sub nets are created directly in the top block.
+* The sub-nets are named according to a simple geometrical scheme.
+ A common prefix ``ck_htree``, then one postfix by level telling
+ on which quarter of plane the sub-clock is located:
+
+ #. ``_bl``: bottom left plane quarter.
+ #. ``_br``: bottom right plane quarter.
+ #. ``_tl``: top left plane quarter.
+ #. ``_tr``: top right plane quarter.
+
+ We can have ``ck_htree_bl``, ``ck_htree_bl_bl``, ``ch_htree_bl_tl`` and so on.
+
+The clock tree plugin works in four steps:
+
+#. Build the clock tree: creates the top-block abutment box, compute the
+ levels of H tree neededs and place the clock buffers.
+#. Once the clock buffers are placed, calls the placer (|etesian|) to place
+ the ordinary standart cells, whithout disturbing clock H-tree buffers.
+#. At this point we know the exact positions of all the DFFs, so we can
+ connect them to the nearest H-tree leaf clock signal.
+#. Leaf clock signals that are not connecteds to any DFFs are removed.
+
+Netlist reorganisation:
+
+* Obviously the top block or chip core model netlist is modificated to
+ contains all the clock sub-nets. The interface is *not* changed.
+* If the top block contains instances of other models *and* those models
+ contains DFFs that get re-connecteds to the clock sub-nets (from the
+ top level). Change both the model netlist and interface to propagate
+ the relevant clock sub-nets to the instanciated model. The new model
+ with the added clock signal is renamed with a ``_clocked`` suffix.
+ For example, the sub-block model ``ram.vst`` will become ``ram_clocked.vst``.
+
+.. note::
+ If you are to re-run the clock tree plugin on a netlist, be careful
+ to erase any previously generated ``_clocked`` file (both netlist and
+ layout: ``rm *.clocked.{ap,vst}``). And restart |cgt| to clear it's
+ memory cache.
+
+Configuration parameters, defaults are defined in ``etc/coriolis2//plugins.conf``.
+
++-----------------------------------+------------------+----------------------------+
+| Parameter Identifier | Type | Default |
++===================================+==================+============================+
+| **ClockTree Plugin Parameters** |
++-----------------------------------+------------------+----------------------------+
+|``clockTree.minimumSide`` | TypeInt | :cb:`300` |
+| +------------------+----------------------------+
+| | The minimum size below which the clock tree |
+| | will stop to perform quadri-partitions |
++-----------------------------------+------------------+----------------------------+
+|``clockTree.buffer`` | TypeString | :cb:`buf_x2` |
+| +------------------+----------------------------+
+| | The buffer model to use to drive sub-nets |
++-----------------------------------+------------------+----------------------------+
+|``clockTree.placerEngine`` | TypeString | :cb:`Etesian` |
+| +------------------+----------------------------+
+| | The placer to use. Other value is ``Mauka`` |
+| | the simulated annealing placer which will go |
+| | into retirement very soon |
++-----------------------------------+------------------+----------------------------+
+
+
+Recursive-Save (RSave)
+~~~~~~~~~~~~~~~~~~~~~~
+
+Perform a recursive top down save of all the models from the top cell
+loaded in |cgt|. Force a write of any non-terminal model. This plugin is used
+by the clock tree plugin after the netlist clock sub-nets creation.
+
+
A Simple Example: AM2901
========================
To illustrate the capabilities of |Coriolis| tools and |Python| scripting, a small
example, derived from the |Alliance| :cb:`AM2901` is supplied.
-This example contains only the synthetized netlists and the :cb:`design.py` script
-which perform the whole P&R of the design. Just lanch |cgt| then execute :cb:`design.py`.
+This example contains only the synthetized netlists and the :cb:`doChip.py` script
+which perform the whole P&R of the design.
+
+You can generate the chip using one of the following method:
+
+#. **Command line mode:** directly run the script: ::
+
+ dummy@lepka:AM2901$ ./doChip -V --cell=amd2901
+
+#. **Graphic mode:** launch |cgt|, load chip netlist ``amd2901`` (the top cell)
+ then run the |Python| script :cb:`doChip.py`.
+
+.. note::
+ Between two consecutive run, be sure to erase the netlist/layout generateds: ::
+
+ dummy@lepka:AM2901$ rm *_clocked*.vst *.ap
diff --git a/documentation/UsersGuide/images/Coriolis-Soft-Schema.eps b/documentation/UsersGuide/images/Coriolis-Soft-Schema.eps
index ffa352cf..08c18320 100644
--- a/documentation/UsersGuide/images/Coriolis-Soft-Schema.eps
+++ b/documentation/UsersGuide/images/Coriolis-Soft-Schema.eps
@@ -1,11 +1,12 @@
-%!PS-Adobe-2.0 EPSF-2.0
+%!PS-Adobe-3.0 EPSF-3.0
%%Title: Coriolis-Soft-Schema.fig
-%%Creator: fig2dev Version 3.2 Patchlevel 5
-%%CreationDate: Sun Jun 29 14:12:01 2014
+%%Creator: fig2dev Version 3.2 Patchlevel 5d
+%%CreationDate: Sat Feb 28 17:31:06 2015
%%For: jpc@lepka (Jean-Paul Chaput)
-%%BoundingBox: 0 0 492 478
-%Magnification: 0.8000
+%%BoundingBox: 0 0 433 420
+%Magnification: 0.7000
%%EndComments
+%%BeginProlog
/MyAppDict 100 dict dup begin def
/$F2psDict 200 dict def
$F2psDict begin
@@ -45,10 +46,6 @@ $F2psDict /mtrx matrix put
/col31 {1.000 0.840 0.000 srgb} bind def
end
-save
-newpath 0 478 moveto 0 0 lineto 492 0 lineto 492 478 lineto closepath clip newpath
--200.5 418.7 translate
-1 -1 scale
% left30
<<
@@ -108,10 +105,22 @@ makepattern
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
+/pageheader {
+save
+newpath 0 420 moveto 0 0 lineto 433 0 lineto 433 420 lineto closepath clip newpath
+-174.6 367.2 translate
+1 -1 scale
$F2psBegin
10 setmiterlimit
0 slj 0 slc
- 0.04800 0.04800 sc
+ 0.04200 0.04200 sc
+} bind def
+/pagefooter {
+$F2psEnd
+restore
+} bind def
+%%EndProlog
+pageheader
%
% Fig objects follow
%
@@ -140,24 +149,6 @@ n 5100 600 m
n 5160 -27 m 5100 -267 l 5040 -27 l 5160 -27 l cp gs col21 1.00 shd ef gr col21 s
% Polyline
gs clippath
-5010 3572 m 5010 3285 l 4890 3285 l 4890 3572 l 4890 3572 l 4950 3332 l 5010 3572 l cp
-eoclip
-n 4950 7800 m
- 4950 3300 l gs col0 s gr gr
-
-% arrowhead
-n 5010 3572 m 4950 3332 l 4890 3572 l 5010 3572 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
-5160 1772 m 5160 1485 l 5040 1485 l 5040 1772 l 5040 1772 l 5100 1532 l 5160 1772 l cp
-eoclip
-n 5100 7800 m
- 5100 1500 l gs col0 s gr gr
-
-% arrowhead
-n 5160 1772 m 5100 1532 l 5040 1772 l 5160 1772 l cp gs 0.00 setgray ef gr col0 s
-% Polyline
-gs clippath
5460 5372 m 5460 5085 l 5340 5085 l 5340 5372 l 5340 5372 l 5400 5132 l 5460 5372 l cp
eoclip
n 5400 6000 m
@@ -176,24 +167,6 @@ n 5550 6000 m
n 5610 3572 m 5550 3332 l 5490 3572 l 5610 3572 l cp gs col8 1.00 shd ef gr col8 s
% Polyline
gs clippath
-5760 1772 m 5760 1485 l 5640 1485 l 5640 1772 l 5640 1772 l 5700 1532 l 5760 1772 l cp
-eoclip
-n 5700 6000 m
- 5700 1500 l gs col8 s gr gr
-
-% arrowhead
-n 5760 1772 m 5700 1532 l 5640 1772 l 5760 1772 l cp gs col8 1.00 shd ef gr col8 s
-% Polyline
-gs clippath
-5910 -27 m 5910 -315 l 5790 -315 l 5790 -27 l 5790 -27 l 5850 -267 l 5910 -27 l cp
-eoclip
-n 5850 6000 m
- 5850 -300 l gs col8 s gr gr
-
-% arrowhead
-n 5910 -27 m 5850 -267 l 5790 -27 l 5910 -27 l cp gs col8 1.00 shd ef gr col8 s
-% Polyline
-gs clippath
4860 5372 m 4860 5085 l 4740 5085 l 4740 5372 l 4740 5372 l 4800 5132 l 4860 5372 l cp
eoclip
n 4800 7800 m
@@ -300,23 +273,94 @@ n 14100 4800 m
% arrowhead
n 14160 872 m 14100 632 l 14040 872 l 14160 872 l cp gs col18 1.00 shd ef gr col18 s
+% Polyline
+45.000 slw
+n 13800 4800 m 14400 4800 l 14400 6600 l 13800 6600 l
+ cp gs col18 0.50 tnt ef gr gs col18 s gr
+% Polyline
+15.000 slw
+gs clippath
+5910 -27 m 5910 -315 l 5790 -315 l 5790 -27 l 5790 -27 l 5850 -267 l 5910 -27 l cp
+eoclip
+n 5850 6000 m
+ 5850 -300 l gs col8 s gr gr
+
+% arrowhead
+n 5910 -27 m 5850 -267 l 5790 -27 l 5910 -27 l cp gs col8 1.00 shd ef gr col8 s
+% Polyline
+45.000 slw
+n 13200 1800 m 13800 1800 l 13800 3600 l 13200 3600 l
+ cp gs col18 0.50 tnt ef gr gs col18 s gr
+% Polyline
+15.000 slw
+gs clippath
+5760 1772 m 5760 1485 l 5640 1485 l 5640 1772 l 5640 1772 l 5700 1532 l 5760 1772 l cp
+eoclip
+n 5700 6000 m
+ 5700 1500 l gs col8 s gr gr
+
+% arrowhead
+n 5760 1772 m 5700 1532 l 5640 1772 l 5760 1772 l cp gs col8 1.00 shd ef gr col8 s
+% Polyline
+gs clippath
+5010 3572 m 5010 3285 l 4890 3285 l 4890 3572 l 4890 3572 l 4950 3332 l 5010 3572 l cp
+eoclip
+n 4950 7800 m
+ 4950 3300 l gs col0 s gr gr
+
+% arrowhead
+n 5010 3572 m 4950 3332 l 4890 3572 l 5010 3572 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+45.000 slw
+n 12600 -1200 m 14400 -1200 l 14400 600 l 12600 600 l
+ cp gs col18 0.50 tnt ef gr gs col18 s gr
+% Polyline
+15.000 slw
+gs clippath
+5160 1772 m 5160 1485 l 5040 1485 l 5040 1772 l 5040 1772 l 5100 1532 l 5160 1772 l cp
+eoclip
+n 5100 7800 m
+ 5100 1500 l gs col0 s gr gr
+
+% arrowhead
+n 5160 1772 m 5100 1532 l 5040 1772 l 5160 1772 l cp gs 0.00 setgray ef gr col0 s
% here ends figure;
%
% here starts figure with depth 60
% Polyline
0 slj
0 slc
-15.000 slw
-n 4200 7800 m 9000 7800 l 9000 8700 l 4200 8700 l
- cp gs col7 1.00 shd ef gr gs col0 s gr
+45.000 slw
+n 9000 6000 m 10800 6000 l 10800 6900 l 9000 6900 l
+ cp
+% Fill with pattern background color
+gs /DeviceRGB setcolorspace 0.00 0.00 0.56 setcolor fill gr
+
+% Fill with pattern pen color
+gs /DeviceRGB setcolorspace 0.00 0.00 0.56 P1 setpattern fill gr
+
+gs col8 s gr
% Polyline
-n 9000 7800 m 10800 7800 l 10800 8700 l 9000 8700 l
- cp gs col7 0.00 shd ef gr gs col0 s gr
+n 4200 6000 m 9000 6000 l 9000 6900 l 4200 6900 l
+ cp gs col7 1.00 shd ef gr gs col8 s gr
% Polyline
-n 4200 4200 m 6000 4200 l 6000 5100 l 4200 5100 l
+n 9000 -1200 m 10800 -1200 l 10800 -300 l 9000 -300 l
+ cp
+% Fill with pattern background color
+gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
+
+% Fill with pattern pen color
+gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
+
+gs col21 s gr
+% Polyline
+n 4200 -1200 m 9000 -1200 l 9000 -300 l 4200 -300 l
cp gs col7 1.00 shd ef gr gs col21 s gr
% Polyline
-n 6000 4200 m 7800 4200 l 7800 5100 l 6000 5100 l
+n 4800 600 m 6600 600 l 6600 1500 l 4800 1500 l
+ cp gs col7 1.00 shd ef gr gs col21 s gr
+% Polyline
+n 6600 600 m 8400 600 l 8400 1500 l 6600 1500 l
cp
% Fill with pattern background color
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
@@ -339,10 +383,10 @@ gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
gs col21 s gr
% Polyline
-n 4800 600 m 6600 600 l 6600 1500 l 4800 1500 l
+n 4200 4200 m 6000 4200 l 6000 5100 l 4200 5100 l
cp gs col7 1.00 shd ef gr gs col21 s gr
% Polyline
-n 6600 600 m 8400 600 l 8400 1500 l 6600 1500 l
+n 6000 4200 m 7800 4200 l 7800 5100 l 6000 5100 l
cp
% Fill with pattern background color
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
@@ -352,98 +396,68 @@ gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
gs col21 s gr
% Polyline
-n 9000 -1200 m 10800 -1200 l 10800 -300 l 9000 -300 l
- cp
-% Fill with pattern background color
-gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
-
-% Fill with pattern pen color
-gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
-
-gs col21 s gr
+n 4200 7800 m 9000 7800 l 9000 8700 l 4200 8700 l
+ cp gs col7 1.00 shd ef gr gs col0 s gr
% Polyline
-n 4200 -1200 m 9000 -1200 l 9000 -300 l 4200 -300 l
- cp gs col7 1.00 shd ef gr gs col21 s gr
-% Polyline
-n 13200 1800 m 13800 1800 l 13800 3600 l 13200 3600 l
- cp gs col7 1.00 shd ef gr gs col18 s gr
-% Polyline
-n 13800 4800 m 14400 4800 l 14400 6600 l 13800 6600 l
- cp gs col7 1.00 shd ef gr gs col18 s gr
-% Polyline
-n 9000 6000 m 10800 6000 l 10800 6900 l 9000 6900 l
- cp
-% Fill with pattern background color
-gs /DeviceRGB setcolorspace 0.00 0.00 0.56 setcolor fill gr
-
-% Fill with pattern pen color
-gs /DeviceRGB setcolorspace 0.00 0.00 0.56 P1 setpattern fill gr
-
-gs col8 s gr
-% Polyline
-n 4200 6000 m 9000 6000 l 9000 6900 l 4200 6900 l
- cp gs col7 1.00 shd ef gr gs col8 s gr
+n 9000 7800 m 10800 7800 l 10800 8700 l 9000 8700 l
+ cp gs col7 0.00 shd ef gr gs col0 s gr
% Polyline
n 11700 -1200 m 12600 -1200 l 12600 8700 l 11700 8700 l
- cp gs col7 1.00 shd ef gr gs col18 s gr
-% Polyline
-n 12600 -1200 m 14400 -1200 l 14400 600 l 12600 600 l
cp gs col18 1.00 shd ef gr gs col18 s gr
% here ends figure;
%
% here starts figure with depth 50
-/Times-Bold ff 400.00 scf sf
-6600 8400 m
-gs 1 -1 sc (Hurricane) dup sw pop 2 div neg 0 rm col0 sh gr
-/Times-Bold ff 300.00 scf sf
-9900 8400 m
-gs 1 -1 sc (Isobar) dup sw pop 2 div neg 0 rm col7 sh gr
-/Times-Bold ff 300.00 scf sf
-6900 4800 m
-gs 1 -1 sc (PyMauka) dup sw pop 2 div neg 0 rm col7 sh gr
-/Times-Bold ff 400.00 scf sf
-5100 4800 m
-gs 1 -1 sc (Mauka) dup sw pop 2 div neg 0 rm col21 sh gr
-/Times-Bold ff 400.00 scf sf
-5700 3000 m
-gs 1 -1 sc (Knik) dup sw pop 2 div neg 0 rm col21 sh gr
-/Times-Bold ff 300.00 scf sf
-7500 3000 m
-gs 1 -1 sc (PyKnik) dup sw pop 2 div neg 0 rm col7 sh gr
-/Times-Bold ff 400.00 scf sf
-5700 1200 m
-gs 1 -1 sc (Kite) dup sw pop 2 div neg 0 rm col21 sh gr
-/Times-Bold ff 300.00 scf sf
-7500 1200 m
-gs 1 -1 sc (PyKite) dup sw pop 2 div neg 0 rm col7 sh gr
-/Times-Bold ff 300.00 scf sf
-9900 -600 m
-gs 1 -1 sc (PyUnicorn) dup sw pop 2 div neg 0 rm col7 sh gr
-/Times-Bold ff 400.00 scf sf
-6600 -600 m
-gs 1 -1 sc (Unicorn) dup sw pop 2 div neg 0 rm col21 sh gr
-/Times-Bold ff 400.00 scf sf
-13650 2700 m
-gs 1 -1 sc 90.0 rot (Stratus) dup sw pop 2 div neg 0 rm col18 sh gr
-/Times-Bold ff 400.00 scf sf
-14250 5700 m
-gs 1 -1 sc 90.0 rot (Plugin) dup sw pop 2 div neg 0 rm col18 sh gr
-/Times-Bold ff 400.00 scf sf
+/Helvetica-Bold ff 400.00 scf sf
6600 6600 m
gs 1 -1 sc (CRL Core) dup sw pop 2 div neg 0 rm col8 sh gr
-/Times-Bold ff 300.00 scf sf
+/Helvetica-Bold ff 300.00 scf sf
9975 6600 m
gs 1 -1 sc (PyCRL) dup sw pop 2 div neg 0 rm col7 sh gr
-/Times-Bold ff 533.33 scf sf
-12375 3150 m
-gs 1 -1 sc 90.0 rot (Python) dup sw pop 2 div neg 0 rm col18 sh gr
-/Times-Bold ff 533.33 scf sf
+/Helvetica-Bold ff 533.33 scf sf
13650 -300 m
gs 1 -1 sc 90.0 rot (cgt) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 300.00 scf sf
+9900 -600 m
+gs 1 -1 sc (PyUnicorn) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+6600 -600 m
+gs 1 -1 sc (Unicorn) dup sw pop 2 div neg 0 rm col21 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+5700 1200 m
+gs 1 -1 sc (Kite) dup sw pop 2 div neg 0 rm col21 sh gr
+/Helvetica-Bold ff 300.00 scf sf
+7500 1200 m
+gs 1 -1 sc (PyKite) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+5700 3000 m
+gs 1 -1 sc (Knik) dup sw pop 2 div neg 0 rm col21 sh gr
+/Helvetica-Bold ff 300.00 scf sf
+7500 3000 m
+gs 1 -1 sc (PyKnik) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 300.00 scf sf
+6900 4800 m
+gs 1 -1 sc (PyEtesian) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+5100 4800 m
+gs 1 -1 sc (Etesian) dup sw pop 2 div neg 0 rm col21 sh gr
+/Helvetica-Bold ff 533.33 scf sf
+12375 3600 m
+gs 1 -1 sc 90.0 rot (Python) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+13650 2700 m
+gs 1 -1 sc 90.0 rot (Stratus) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+14250 5700 m
+gs 1 -1 sc 90.0 rot (Plugin) dup sw pop 2 div neg 0 rm col7 sh gr
+/Helvetica-Bold ff 400.00 scf sf
+6600 8400 m
+gs 1 -1 sc (Hurricane) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 300.00 scf sf
+9900 8400 m
+gs 1 -1 sc (Isobar) dup sw pop 2 div neg 0 rm col7 sh gr
% here ends figure;
-$F2psEnd
-rs
-end
+pagefooter
showpage
%%Trailer
+end
%EOF
diff --git a/documentation/UsersGuide/images/Coriolis-Soft-Schema.fig b/documentation/UsersGuide/images/Coriolis-Soft-Schema.fig
index b7753022..7b95cc4b 100644
--- a/documentation/UsersGuide/images/Coriolis-Soft-Schema.fig
+++ b/documentation/UsersGuide/images/Coriolis-Soft-Schema.fig
@@ -1,4 +1,4 @@
-#FIG 3.2 Produced by xfig version 3.2.5a
+#FIG 3.2 Produced by xfig version 3.2.5c
Landscape
Center
Inches
@@ -83,9 +83,6 @@ Single
11700 -1200 12600 -1200 12600 8700 11700 8700 11700 -1200
2 2 0 4 18 18 70 -1 30 0.000 0 0 -1 0 0 5
13800 4800 14400 4800 14400 6600 13800 6600 13800 4800
-2 1 0 2 0 7 70 -1 -1 0.000 0 0 -1 1 0 2
- 1 1 2.00 120.00 240.00
- 5100 7800 5100 1500
2 1 0 2 8 7 70 -1 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
5850 6000 5850 -300
@@ -99,6 +96,9 @@ Single
4950 7800 4950 3300
2 2 0 4 18 18 70 -1 30 0.000 0 0 -1 0 0 5
12600 -1200 14400 -1200 14400 600 12600 600 12600 -1200
+2 1 0 2 0 7 70 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ 5100 7800 5100 1500
4 1 8 50 -1 18 24 0.0000 4 300 1920 6600 6600 CRL Core\001
4 1 7 50 -1 18 18 0.0000 4 285 990 9975 6600 PyCRL\001
4 1 7 50 -1 18 32 1.5708 4 480 810 13650 -300 cgt\001
@@ -108,8 +108,8 @@ Single
4 1 7 50 -1 18 18 0.0000 4 285 945 7500 1200 PyKite\001
4 1 21 50 -1 18 24 0.0000 4 300 900 5700 3000 Knik\001
4 1 7 50 -1 18 18 0.0000 4 285 1020 7500 3000 PyKnik\001
-4 1 7 50 -1 18 18 0.0000 4 285 1290 6900 4800 PyMauka\001
-4 1 21 50 -1 18 24 0.0000 4 300 1275 5100 4800 Mauka\001
+4 1 7 50 -1 18 18 0.0000 4 285 1425 6900 4800 PyEtesian\001
+4 1 21 50 -1 18 24 0.0000 4 300 1455 5100 4800 Etesian\001
4 1 7 50 -1 18 32 1.5708 4 510 1830 12375 3600 Python\001
4 1 7 50 -1 18 24 1.5708 4 300 1410 13650 2700 Stratus\001
4 1 7 50 -1 18 24 1.5708 4 390 1275 14250 5700 Plugin\001
diff --git a/documentation/UsersGuide/images/Coriolis-Soft-Schema.pdf b/documentation/UsersGuide/images/Coriolis-Soft-Schema.pdf
index 27fb14d2..60cd1650 100644
Binary files a/documentation/UsersGuide/images/Coriolis-Soft-Schema.pdf and b/documentation/UsersGuide/images/Coriolis-Soft-Schema.pdf differ
diff --git a/documentation/UsersGuide/images/Coriolis-Soft-Schema.png b/documentation/UsersGuide/images/Coriolis-Soft-Schema.png
index 40ab26b4..93c9135c 100644
Binary files a/documentation/UsersGuide/images/Coriolis-Soft-Schema.png and b/documentation/UsersGuide/images/Coriolis-Soft-Schema.png differ
diff --git a/documentation/UsersGuide/images/chip-structure-1.eps b/documentation/UsersGuide/images/chip-structure-1.eps
new file mode 100644
index 00000000..71b1f531
--- /dev/null
+++ b/documentation/UsersGuide/images/chip-structure-1.eps
@@ -0,0 +1,544 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: chip-structure-1.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 5d
+%%CreationDate: Thu Mar 5 23:52:42 2015
+%%For: jpc@lepka (Jean-Paul Chaput)
+%%BoundingBox: 0 0 1018 438
+%Magnification: 1.0000
+%%EndComments
+%%BeginProlog
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+/pageheader {
+save
+newpath 0 438 moveto 0 0 lineto 1018 0 lineto 1018 438 lineto closepath clip newpath
+403.1 488.6 translate
+1 -1 scale
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+} bind def
+/pagefooter {
+$F2psEnd
+restore
+} bind def
+%%EndProlog
+pageheader
+%
+% Fig objects follow
+%
+%
+% here starts figure with depth 70
+% Polyline
+0 slj
+0 slc
+0.000 slw
+n 3075 2925 m 3075 2475 l 3525 2475 l 3525 2925 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 4575 975 m 5025 975 l 5025 1425 l 4575 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 5175 975 m 5625 975 l 5625 1425 l 5175 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 5775 975 m 6225 975 l 6225 1425 l 5775 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 6375 975 m 6825 975 l 6825 1425 l 6375 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 6975 975 m 7425 975 l 7425 1425 l 6975 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 7575 975 m 8025 975 l 8025 1425 l 7575 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 8175 975 m 8625 975 l 8625 1425 l 8175 1425 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 3075 3525 m 3075 3075 l 3525 3075 l 3525 3525 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 3075 4125 m 3075 3675 l 3525 3675 l 3525 4125 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 3075 4725 m 3075 4275 l 3525 4275 l 3525 4725 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 3075 5325 m 3075 4875 l 3525 4875 l 3525 5325 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 3075 5925 m 3075 5475 l 3525 5475 l 3525 5925 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 3075 m 10125 3525 l 9675 3525 l 9675 3075 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 3675 m 10125 4125 l 9675 4125 l 9675 3675 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 4275 m 10125 4725 l 9675 4725 l 9675 4275 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 4875 m 10125 5325 l 9675 5325 l 9675 4875 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 5475 m 10125 5925 l 9675 5925 l 9675 5475 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 6075 m 10125 6525 l 9675 6525 l 9675 6075 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 6225 8025 m 5775 8025 l 5775 7575 l 6225 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 6825 8025 m 6375 8025 l 6375 7575 l 6825 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 7425 8025 m 6975 8025 l 6975 7575 l 7425 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 8025 8025 m 7575 8025 l 7575 7575 l 8025 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 5625 8025 m 5175 8025 l 5175 7575 l 5625 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 8625 8025 m 8175 8025 l 8175 7575 l 8625 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 5025 8025 m 4575 8025 l 4575 7575 l 5025 7575 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 10125 2475 m 10125 2925 l 9675 2925 l 9675 2475 l
+ cp gs col1 0.50 tnt ef gr
+% Polyline
+n 3075 6525 m 3075 6075 l 3525 6075 l 3525 6525 l
+ cp gs col1 0.50 tnt ef gr
+% here ends figure;
+%
+% here starts figure with depth 60
+% Polyline
+0 slj
+0 slc
+7.500 slw
+n 5100 3000 m 8100 3000 l 8100 6000 l 5100 6000 l
+ cp gs 0.50 setgray ef gr gs col0 s gr
+% here ends figure;
+%
+% here starts figure with depth 50
+% Polyline
+0 slj
+0 slc
+45.000 slw
+n 3000 3000 m 3000 2400 l 4500 2400 l 4500 3000 l
+ cp gs col0 s gr
+% Polyline
+n 4500 900 m 5100 900 l 5100 2400 l 4500 2400 l
+ cp gs col0 s gr
+% Polyline
+n 5100 900 m 5700 900 l 5700 2400 l 5100 2400 l
+ cp gs col0 s gr
+% Polyline
+n 5700 900 m 6300 900 l 6300 2400 l 5700 2400 l
+ cp gs col0 s gr
+% Polyline
+n 6300 900 m 6900 900 l 6900 2400 l 6300 2400 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+6600 1650 m
+gs 1 -1 sc 90.0 rot (pvddeck_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 6900 900 m 7500 900 l 7500 2400 l 6900 2400 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+7200 1650 m
+gs 1 -1 sc 90.0 rot (pvsseck_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 7500 900 m 8100 900 l 8100 2400 l 7500 2400 l
+ cp gs col0 s gr
+% Polyline
+n 8100 900 m 8700 900 l 8700 2400 l 8100 2400 l
+ cp gs col0 s gr
+% Polyline
+n 3000 3600 m 3000 3000 l 4500 3000 l 4500 3600 l
+ cp gs col0 s gr
+% Polyline
+n 3000 4200 m 3000 3600 l 4500 3600 l 4500 4200 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+3750 3900 m
+gs 1 -1 sc 180.0 rot (pvssick_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 3000 4800 m 3000 4200 l 4500 4200 l 4500 4800 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+3750 4500 m
+gs 1 -1 sc 180.0 rot (pvddick_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 3000 5400 m 3000 4800 l 4500 4800 l 4500 5400 l
+ cp gs col0 s gr
+% Polyline
+n 3000 6000 m 3000 5400 l 4500 5400 l 4500 6000 l
+ cp gs col0 s gr
+% Polyline
+n 10200 3000 m 10200 3600 l 8700 3600 l 8700 3000 l
+ cp gs col0 s gr
+% Polyline
+n 10200 3600 m 10200 4200 l 8700 4200 l 8700 3600 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+9450 3900 m
+gs 1 -1 sc (pvddeck_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 10200 4200 m 10200 4800 l 8700 4800 l 8700 4200 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+9450 4500 m
+gs 1 -1 sc (pvsseck_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 10200 4800 m 10200 5400 l 8700 5400 l 8700 4800 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+9450 5100 m
+gs 1 -1 sc (pck_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 10200 5400 m 10200 6000 l 8700 6000 l 8700 5400 l
+ cp gs col0 s gr
+% Polyline
+n 10200 6000 m 10200 6600 l 8700 6600 l 8700 6000 l
+ cp gs col0 s gr
+% Polyline
+n 6300 8100 m 5700 8100 l 5700 6600 l 6300 6600 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+6000 7350 m
+gs 1 -1 sc 270.0 rot (pvddick_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 6900 8100 m 6300 8100 l 6300 6600 l 6900 6600 l
+ cp gs col0 s gr
+/Courier-Bold ff 200.00 scf sf
+6600 7350 m
+gs 1 -1 sc 270.0 rot (pvssick_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 7500 8100 m 6900 8100 l 6900 6600 l 7500 6600 l
+ cp gs col0 s gr
+% Polyline
+n 8100 8100 m 7500 8100 l 7500 6600 l 8100 6600 l
+ cp gs col0 s gr
+% Polyline
+n 5700 8100 m 5100 8100 l 5100 6600 l 5700 6600 l
+ cp gs col0 s gr
+% Polyline
+n 8700 8100 m 8100 8100 l 8100 6600 l 8700 6600 l
+ cp gs col0 s gr
+% Polyline
+n 5100 8100 m 4500 8100 l 4500 6600 l 5100 6600 l
+ cp gs col0 s gr
+% Polyline
+n 10200 2400 m 10200 3000 l 8700 3000 l 8700 2400 l
+ cp gs col0 s gr
+% Polyline
+n 3000 6600 m 3000 6000 l 4500 6000 l 4500 6600 l
+ cp gs col0 s gr
+% Polyline
+n -1800 4500 m -2400 4500 l -2400 4125 l -2175 3900 l -1200 3900 l -1200 4500 l
+
+ -1800 4500 l cp gs col0 s gr
+/Helvetica-Bold ff 233.33 scf sf
+-1800 4275 m
+gs 1 -1 sc (pck_px) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+15.000 slw
+n -6600 2400 m -5400 2400 l -5400 3000 l -6600 3000 l
+ cp gs col0 s gr
+% Polyline
+n -4800 2400 m -3600 2400 l -3600 3000 l -4800 3000 l
+ cp gs col0 s gr
+% Polyline
+n -3000 2400 m -1800 2400 l -1800 3000 l -3000 3000 l
+ cp gs col0 s gr
+% Polyline
+n -1200 2400 m 0 2400 l 0 3000 l -1200 3000 l
+ cp gs col0 s gr
+% Polyline
+n 600 2400 m 1800 2400 l 1800 3000 l 600 3000 l
+ cp gs col0 s gr
+% Polyline
+45.000 slw
+n -6000 4500 m -6600 4500 l -6600 4125 l -6375 3900 l -5400 3900 l -5400 4500 l
+
+ -6000 4500 l cp gs col0 s gr
+% Polyline
+n -4200 4500 m -4800 4500 l -4800 4125 l -4575 3900 l -3600 3900 l -3600 4500 l
+
+ -4200 4500 l cp gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-6059 3628 m -6060 3915 l -5940 3915 l -5939 3628 l -5939 3628 l -5999 3868 l -6059 3628 l cp
+eoclip
+n -6000 3000 m
+ -6000 3900 l gs col0 s gr gr
+
+% arrowhead
+n -6059 3628 m -5999 3868 l -5939 3628 l -6059 3628 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+-4259 3628 m -4260 3915 l -4140 3915 l -4139 3628 l -4139 3628 l -4199 3868 l -4259 3628 l cp
+eoclip
+n -4200 3000 m
+ -4200 3900 l gs col0 s gr gr
+
+% arrowhead
+n -4259 3628 m -4199 3868 l -4139 3628 l -4259 3628 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+-3696 3708 m -3943 3856 l -3881 3959 l -3634 3810 l -3634 3810 l -3871 3883 l -3696 3708 l cp
+eoclip
+n -2400 3000 m
+ -3900 3900 l gs col0 s gr gr
+
+% arrowhead
+n -3696 3708 m -3871 3883 l -3634 3810 l -3696 3708 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+-1617 3689 m -1848 3861 l -1776 3957 l -1545 3785 l -1545 3785 l -1773 3881 l -1617 3689 l cp
+eoclip
+n -600 3000 m
+ -1800 3900 l gs col0 s gr gr
+
+% arrowhead
+n -1617 3689 m -1773 3881 l -1545 3785 l -1617 3689 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+1140 3628 m 1140 3915 l 1260 3915 l 1260 3628 l 1260 3628 l 1200 3868 l 1140 3628 l cp
+eoclip
+n 1200 3000 m
+ 1200 3900 l gs col0 s gr gr
+
+% arrowhead
+n 1140 3628 m 1200 3868 l 1260 3628 l 1140 3628 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+45.000 slw
+n -6000 7200 m -6600 7200 l -6600 6825 l -6375 6600 l -5400 6600 l -5400 7200 l
+
+ -6000 7200 l cp gs col0 s gr
+% Polyline
+15.000 slw
+n -6600 7500 m -5400 7500 l -5400 8100 l -6600 8100 l
+ cp gs col0 s gr
+% Polyline
+7.500 slw
+n 3000 900 m 10200 900 l 10200 8100 l 3000 8100 l
+ cp gs col0 s gr
+% Polyline
+45.000 slw
+n -2400 3150 m -6675 3150 l -6675 1875 l -6225 1425 l 1875 1425 l 1875 3150 l
+
+ -2400 3150 l cp gs col0 s gr
+% Polyline
+n -3300 1425 m -3300 1875 l -1500 1875 l
+ -1500 1425 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-5740 2293 m -6025 2343 l -6004 2461 l -5720 2411 l -5720 2411 l -5967 2394 l -5740 2293 l cp
+eoclip
+n -3000 1875 m
+ -6000 2400 l gs col0 s gr gr
+
+% arrowhead
+n -5740 2293 m -5967 2394 l -5720 2411 l -5740 2293 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-3967 2245 m -4235 2349 l -4192 2461 l -3923 2356 l -3923 2356 l -4169 2388 l -3967 2245 l cp
+eoclip
+n -2850 1875 m
+ -4200 2400 l gs col0 s gr gr
+
+% arrowhead
+n -3967 2245 m -4169 2388 l -3923 2356 l -3967 2245 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-2459 2128 m -2460 2415 l -2340 2415 l -2339 2128 l -2339 2128 l -2399 2368 l -2459 2128 l cp
+eoclip
+n -2400 1875 m
+ -2400 2400 l gs col0 s gr gr
+
+% arrowhead
+n -2459 2128 m -2399 2368 l -2339 2128 l -2459 2128 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-876 2366 m -605 2461 l -566 2348 l -836 2253 l -836 2253 l -630 2389 l -876 2366 l cp
+eoclip
+n -2100 1875 m
+ -600 2400 l gs col0 s gr gr
+
+% arrowhead
+n -876 2366 m -630 2389 l -836 2253 l -876 2366 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+921 2409 m 1203 2461 l 1225 2343 l 942 2291 l 942 2291 l 1168 2394 l 921 2409 l cp
+eoclip
+n -1650 1875 m
+ 1200 2400 l gs col0 s gr gr
+
+% arrowhead
+n 921 2409 m 1168 2394 l 942 2291 l 921 2409 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+45.000 slw
+n 1200 5100 m 0 5100 l 0 4275 l 375 3900 l 2400 3900 l 2400 5100 l
+
+ 1200 5100 l cp gs col0 s gr
+% Polyline
+n 600 3900 m 600 4275 l 1800 4275 l
+ 1800 3900 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+682 4533 m 540 4783 l 644 4842 l 787 4593 l 787 4593 l 616 4772 l 682 4533 l cp
+eoclip
+n 900 4275 m
+ 600 4800 l gs col0 s gr gr
+
+% arrowhead
+n 682 4533 m 616 4772 l 787 4593 l 682 4533 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+1140 4528 m 1140 4815 l 1260 4815 l 1260 4528 l 1260 4528 l 1200 4768 l 1140 4528 l cp
+eoclip
+n 1200 4275 m
+ 1200 4800 l gs col0 s gr gr
+
+% arrowhead
+n 1140 4528 m 1200 4768 l 1260 4528 l 1140 4528 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+1612 4593 m 1755 4842 l 1859 4783 l 1717 4533 l 1717 4533 l 1784 4772 l 1612 4593 l cp
+eoclip
+n 1500 4275 m
+ 1800 4800 l gs col0 s gr gr
+
+% arrowhead
+n 1612 4593 m 1784 4772 l 1717 4533 l 1612 4593 l cp gs col7 1.00 shd ef gr col0 s
+/Courier-Bold ff 266.67 scf sf
+-5100 6975 m
+gs 1 -1 sc (Cell \(Model\)) col0 sh gr
+/Courier ff 266.67 scf sf
+-5100 7875 m
+gs 1 -1 sc (Instance) col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+-6000 4275 m
+gs 1 -1 sc (pi_px) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+-4200 4275 m
+gs 1 -1 sc (po_px) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-6000 2775 m
+gs 1 -1 sc (p_a0) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-4200 2775 m
+gs 1 -1 sc (p_ovr) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-2400 2775 m
+gs 1 -1 sc (p_ng) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-600 2775 m
+gs 1 -1 sc (p_ck) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+1200 2775 m
+gs 1 -1 sc (core) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-6000 7875 m
+gs 1 -1 sc (i_name) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+-6000 6975 m
+gs 1 -1 sc (m_name) dup sw pop 2 div neg 0 rm col0 sh gr
+/Courier-Bold ff 300.00 scf sf
+6525 4575 m
+gs 1 -1 sc (coeur) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+-2400 1725 m
+gs 1 -1 sc (amd2901) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+1200 4125 m
+gs 1 -1 sc (coeur) dup sw pop 2 div neg 0 rm col0 sh gr
+% here ends figure;
+pagefooter
+showpage
+%%Trailer
+%EOF
diff --git a/documentation/UsersGuide/images/chip-structure-1.fig b/documentation/UsersGuide/images/chip-structure-1.fig
new file mode 100644
index 00000000..a3658fca
--- /dev/null
+++ b/documentation/UsersGuide/images/chip-structure-1.fig
@@ -0,0 +1,280 @@
+#FIG 3.2 Produced by xfig version 3.2.5c
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 2925 2325 4575 3075
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 3000 3000 2400 4500 2400 4500 3000 3000 3000
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 2925 3075 2475 3525 2475 3525 2925 3075 2925
+-6
+6 4425 825 5175 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 900 5100 900 5100 2400 4500 2400 4500 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 4575 975 5025 975 5025 1425 4575 1425 4575 975
+-6
+6 5025 825 5775 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5100 900 5700 900 5700 2400 5100 2400 5100 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 5175 975 5625 975 5625 1425 5175 1425 5175 975
+-6
+6 5625 825 6375 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5700 900 6300 900 6300 2400 5700 2400 5700 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 5775 975 6225 975 6225 1425 5775 1425 5775 975
+-6
+6 6225 825 6975 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6300 900 6900 900 6900 2400 6300 2400 6300 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 6375 975 6825 975 6825 1425 6375 1425 6375 975
+4 1 0 50 -1 14 12 1.5708 4 165 1200 6600 1650 pvddeck_px\001
+-6
+6 6825 825 7575 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6900 900 7500 900 7500 2400 6900 2400 6900 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 6975 975 7425 975 7425 1425 6975 1425 6975 975
+4 1 0 50 -1 14 12 1.5708 4 165 1200 7200 1650 pvsseck_px\001
+-6
+6 7425 825 8175 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 7500 900 8100 900 8100 2400 7500 2400 7500 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 7575 975 8025 975 8025 1425 7575 1425 7575 975
+-6
+6 8025 825 8775 2475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 8100 900 8700 900 8700 2400 8100 2400 8100 900
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 8175 975 8625 975 8625 1425 8175 1425 8175 975
+-6
+6 2925 2925 4575 3675
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 3600 3000 3000 4500 3000 4500 3600 3000 3600
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 3525 3075 3075 3525 3075 3525 3525 3075 3525
+-6
+6 2925 3525 4575 4275
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 4200 3000 3600 4500 3600 4500 4200 3000 4200
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 4125 3075 3675 3525 3675 3525 4125 3075 4125
+4 1 0 50 -1 14 12 3.1416 4 165 1200 3750 3900 pvssick_px\001
+-6
+6 2925 4125 4575 4875
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 4800 3000 4200 4500 4200 4500 4800 3000 4800
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 4725 3075 4275 3525 4275 3525 4725 3075 4725
+4 1 0 50 -1 14 12 3.1416 4 165 1200 3750 4500 pvddick_px\001
+-6
+6 2925 4725 4575 5475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 5400 3000 4800 4500 4800 4500 5400 3000 5400
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 5325 3075 4875 3525 4875 3525 5325 3075 5325
+-6
+6 2925 5325 4575 6075
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 6000 3000 5400 4500 5400 4500 6000 3000 6000
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 5925 3075 5475 3525 5475 3525 5925 3075 5925
+-6
+6 8625 2925 10275 3675
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 3000 10200 3600 8700 3600 8700 3000 10200 3000
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 3075 10125 3525 9675 3525 9675 3075 10125 3075
+-6
+6 8625 3525 10275 4275
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 3600 10200 4200 8700 4200 8700 3600 10200 3600
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 3675 10125 4125 9675 4125 9675 3675 10125 3675
+4 1 0 50 -1 14 12 0.0000 4 165 1200 9450 3900 pvddeck_px\001
+-6
+6 8625 4125 10275 4875
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 4200 10200 4800 8700 4800 8700 4200 10200 4200
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 4275 10125 4725 9675 4725 9675 4275 10125 4275
+4 1 0 50 -1 14 12 0.0000 4 165 1200 9450 4500 pvsseck_px\001
+-6
+6 8625 4725 10275 5475
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 4800 10200 5400 8700 5400 8700 4800 10200 4800
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 4875 10125 5325 9675 5325 9675 4875 10125 4875
+4 1 0 50 -1 14 12 0.0000 4 165 720 9450 5100 pck_px\001
+-6
+6 8625 5325 10275 6075
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 5400 10200 6000 8700 6000 8700 5400 10200 5400
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 5475 10125 5925 9675 5925 9675 5475 10125 5475
+-6
+6 8625 5925 10275 6675
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 6000 10200 6600 8700 6600 8700 6000 10200 6000
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 6075 10125 6525 9675 6525 9675 6075 10125 6075
+-6
+6 5625 6525 6375 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6300 8100 5700 8100 5700 6600 6300 6600 6300 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 6225 8025 5775 8025 5775 7575 6225 7575 6225 8025
+4 1 0 50 -1 14 12 4.7124 4 165 1200 6000 7350 pvddick_px\001
+-6
+6 6225 6525 6975 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6900 8100 6300 8100 6300 6600 6900 6600 6900 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 6825 8025 6375 8025 6375 7575 6825 7575 6825 8025
+4 1 0 50 -1 14 12 4.7124 4 165 1200 6600 7350 pvssick_px\001
+-6
+6 6825 6525 7575 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 7500 8100 6900 8100 6900 6600 7500 6600 7500 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 7425 8025 6975 8025 6975 7575 7425 7575 7425 8025
+-6
+6 7425 6525 8175 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 8100 8100 7500 8100 7500 6600 8100 6600 8100 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 8025 8025 7575 8025 7575 7575 8025 7575 8025 8025
+-6
+6 5025 6525 5775 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5700 8100 5100 8100 5100 6600 5700 6600 5700 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 5625 8025 5175 8025 5175 7575 5625 7575 5625 8025
+-6
+6 8025 6525 8775 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 8700 8100 8100 8100 8100 6600 8700 6600 8700 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 8625 8025 8175 8025 8175 7575 8625 7575 8625 8025
+-6
+6 4425 6525 5175 8175
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5100 8100 4500 8100 4500 6600 5100 6600 5100 8100
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 5025 8025 4575 8025 4575 7575 5025 7575 5025 8025
+-6
+6 8625 2325 10275 3075
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 10200 2400 10200 3000 8700 3000 8700 2400 10200 2400
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 10125 2475 10125 2925 9675 2925 9675 2475 10125 2475
+-6
+6 2925 5925 4575 6675
+2 2 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 6600 3000 6000 4500 6000 4500 6600 3000 6600
+2 2 0 0 1 1 70 -1 30 0.000 0 0 -1 0 0 5
+ 3075 6525 3075 6075 3525 6075 3525 6525 3075 6525
+-6
+6 -2475 3825 -1125 4575
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -1800 4500 -2400 4500 -2400 4125 -2175 3900 -1200 3900 -1200 4500
+ -1800 4500
+4 1 0 50 -1 18 14 0.0000 4 225 840 -1800 4275 pck_px\001
+-6
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -6600 2400 -5400 2400 -5400 3000 -6600 3000 -6600 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -4800 2400 -3600 2400 -3600 3000 -4800 3000 -4800 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -3000 2400 -1800 2400 -1800 3000 -3000 3000 -3000 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -1200 2400 0 2400 0 3000 -1200 3000 -1200 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 600 2400 1800 2400 1800 3000 600 3000 600 2400
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -6000 4500 -6600 4500 -6600 4125 -6375 3900 -5400 3900 -5400 4500
+ -6000 4500
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -4200 4500 -4800 4500 -4800 4125 -4575 3900 -3600 3900 -3600 4500
+ -4200 4500
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -6000 3000 -6000 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -4200 3000 -4200 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -2400 3000 -3900 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -600 3000 -1800 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ 1200 3000 1200 3900
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -6000 7200 -6600 7200 -6600 6825 -6375 6600 -5400 6600 -5400 7200
+ -6000 7200
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -6600 7500 -5400 7500 -5400 8100 -6600 8100 -6600 7500
+2 2 0 1 0 0 60 -1 10 0.000 0 0 -1 0 0 5
+ 5100 3000 8100 3000 8100 6000 5100 6000 5100 3000
+2 2 0 1 0 1 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3000 900 10200 900 10200 8100 3000 8100 3000 900
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 7
+ -2400 3150 -6675 3150 -6675 1875 -6225 1425 1875 1425 1875 3150
+ -2400 3150
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ -3300 1425 -3300 1875 -1500 1875 -1500 1425
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -3000 1875 -6000 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -2850 1875 -4200 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -2400 1875 -2400 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -2100 1875 -600 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -1650 1875 1200 2400
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 7
+ 1200 5100 0 5100 0 4275 375 3900 2400 3900 2400 5100
+ 1200 5100
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ 600 3900 600 4275 1800 4275 1800 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ 900 4275 600 4800
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ 1200 4275 1200 4800
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ 1500 4275 1800 4800
+4 0 0 50 -1 14 16 0.0000 4 210 1980 -5100 6975 Cell (Model)\001
+4 0 0 50 -1 12 16 0.0000 4 150 1320 -5100 7875 Instance\001
+4 1 0 50 -1 18 14 0.0000 4 225 630 -6000 4275 pi_px\001
+4 1 0 50 -1 18 14 0.0000 4 180 720 -4200 4275 po_px\001
+4 1 0 50 -1 16 14 0.0000 4 210 540 -6000 2775 p_a0\001
+4 1 0 50 -1 16 14 0.0000 4 165 600 -4200 2775 p_ovr\001
+4 1 0 50 -1 16 14 0.0000 4 165 540 -2400 2775 p_ng\001
+4 1 0 50 -1 16 14 0.0000 4 225 510 -600 2775 p_ck\001
+4 1 0 50 -1 16 14 0.0000 4 120 465 1200 2775 core\001
+4 1 0 50 -1 16 14 0.0000 4 225 795 -6000 7875 i_name\001
+4 1 0 50 -1 18 14 0.0000 4 180 975 -6000 6975 m_name\001
+4 1 0 50 -1 14 18 0.0000 4 135 900 6525 4575 coeur\001
+4 1 0 50 -1 18 14 0.0000 4 180 1035 -2400 1725 amd2901\001
+4 1 0 50 -1 18 14 0.0000 4 135 660 1200 4125 coeur\001
diff --git a/documentation/UsersGuide/images/chip-structure-1.png b/documentation/UsersGuide/images/chip-structure-1.png
new file mode 100644
index 00000000..8af23393
Binary files /dev/null and b/documentation/UsersGuide/images/chip-structure-1.png differ
diff --git a/documentation/UsersGuide/images/etesian-1.eps b/documentation/UsersGuide/images/etesian-1.eps
new file mode 100644
index 00000000..a413c9d0
--- /dev/null
+++ b/documentation/UsersGuide/images/etesian-1.eps
@@ -0,0 +1,437 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: etesian-1.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 5d
+%%CreationDate: Fri Mar 6 00:13:07 2015
+%%For: jpc@lepka (Jean-Paul Chaput)
+%%BoundingBox: 0 0 507 267
+%Magnification: 0.7000
+%%EndComments
+%%BeginProlog
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+/pageheader {
+save
+newpath 0 267 moveto 0 0 lineto 507 0 lineto 507 267 lineto closepath clip newpath
+253.8 315.9 translate
+1 -1 scale
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.04200 0.04200 sc
+} bind def
+/pagefooter {
+$F2psEnd
+restore
+} bind def
+%%EndProlog
+pageheader
+%
+% Fig objects follow
+%
+%
+% here starts figure with depth 50
+% Polyline
+0 slj
+0 slc
+45.000 slw
+n -5100 6600 m -5700 6600 l -5700 6225 l -5475 6000 l -4500 6000 l -4500 6600 l
+
+ -5100 6600 l cp gs col0 s gr
+% Polyline
+15.000 slw
+n -5700 6900 m -4500 6900 l -4500 7500 l -5700 7500 l
+ cp gs col0 s gr
+/Courier ff 266.67 scf sf
+-4200 7275 m
+gs 1 -1 sc (Instance) col0 sh gr
+/Helvetica ff 233.33 scf sf
+-5100 7275 m
+gs 1 -1 sc (i_name) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+-5100 6375 m
+gs 1 -1 sc (m_name) dup sw pop 2 div neg 0 rm col0 sh gr
+/Courier-Bold ff 266.67 scf sf
+-4200 6375 m
+gs 1 -1 sc (Cell \(Model\)) col0 sh gr
+% Polyline
+45.000 slw
+n -5400 4800 m -6000 4800 l -6000 4125 l -5775 3900 l -4350 3900 l -4350 4800 l
+
+ -5400 4800 l cp gs col0 s gr
+% Polyline
+n -5550 3900 m -5550 4200 l -4875 4200 l
+ -4875 3900 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-5459 4378 m -5460 4665 l -5340 4665 l -5339 4378 l -5339 4378 l -5399 4618 l -5459 4378 l cp
+eoclip
+n -5400 4200 m
+ -5400 4650 l gs col0 s gr gr
+
+% arrowhead
+n -5459 4378 m -5399 4618 l -5339 4378 l -5459 4378 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-5009 4378 m -5010 4665 l -4890 4665 l -4889 4378 l -4889 4378 l -4949 4618 l -5009 4378 l cp
+eoclip
+n -4950 4200 m
+ -4950 4650 l gs col0 s gr gr
+
+% arrowhead
+n -5009 4378 m -4949 4618 l -4889 4378 l -5009 4378 l cp gs col7 1.00 shd ef gr col0 s
+/Helvetica-Bold ff 233.33 scf sf
+-5175 4125 m
+gs 1 -1 sc (alu) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+45.000 slw
+n -3600 4800 m -4200 4800 l -4200 4125 l -3975 3900 l -2550 3900 l -2550 4800 l
+
+ -3600 4800 l cp gs col0 s gr
+% Polyline
+n -3750 3900 m -3750 4200 l -3000 4200 l
+ -3000 3900 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-3659 4378 m -3660 4665 l -3540 4665 l -3539 4378 l -3539 4378 l -3599 4618 l -3659 4378 l cp
+eoclip
+n -3600 4200 m
+ -3600 4650 l gs col0 s gr gr
+
+% arrowhead
+n -3659 4378 m -3599 4618 l -3539 4378 l -3659 4378 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-3209 4378 m -3210 4665 l -3090 4665 l -3089 4378 l -3089 4378 l -3149 4618 l -3209 4378 l cp
+eoclip
+n -3150 4200 m
+ -3150 4650 l gs col0 s gr gr
+
+% arrowhead
+n -3209 4378 m -3149 4618 l -3089 4378 l -3209 4378 l cp gs col7 1.00 shd ef gr col0 s
+/Helvetica-Bold ff 233.33 scf sf
+-3375 4125 m
+gs 1 -1 sc (accu) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+45.000 slw
+n -1800 4800 m -2400 4800 l -2400 4125 l -2175 3900 l -750 3900 l -750 4800 l
+
+ -1800 4800 l cp gs col0 s gr
+% Polyline
+n -1950 3900 m -1950 4200 l -1200 4200 l
+ -1200 3900 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-1859 4378 m -1860 4665 l -1740 4665 l -1739 4378 l -1739 4378 l -1799 4618 l -1859 4378 l cp
+eoclip
+n -1800 4200 m
+ -1800 4650 l gs col0 s gr gr
+
+% arrowhead
+n -1859 4378 m -1799 4618 l -1739 4378 l -1859 4378 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-1409 4378 m -1410 4665 l -1290 4665 l -1289 4378 l -1289 4378 l -1349 4618 l -1409 4378 l cp
+eoclip
+n -1350 4200 m
+ -1350 4650 l gs col0 s gr gr
+
+% arrowhead
+n -1409 4378 m -1349 4618 l -1289 4378 l -1409 4378 l cp gs col7 1.00 shd ef gr col0 s
+/Helvetica-Bold ff 233.33 scf sf
+-1575 4125 m
+gs 1 -1 sc (ram) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+45.000 slw
+n 0 4800 m -600 4800 l -600 4125 l -375 3900 l 1050 3900 l 1050 4800 l
+
+ 0 4800 l cp gs col0 s gr
+% Polyline
+n -225 3900 m -225 4200 l 675 4200 l
+ 675 3900 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-60 4378 m -60 4665 l 60 4665 l 60 4378 l 60 4378 l 0 4618 l -60 4378 l cp
+eoclip
+n 0 4200 m
+ 0 4650 l gs col0 s gr gr
+
+% arrowhead
+n -60 4378 m 0 4618 l 60 4378 l -60 4378 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+390 4378 m 390 4665 l 510 4665 l 510 4378 l 510 4378 l 450 4618 l 390 4378 l cp
+eoclip
+n 450 4200 m
+ 450 4650 l gs col0 s gr gr
+
+% arrowhead
+n 390 4378 m 450 4618 l 510 4378 l 390 4378 l cp gs col7 1.00 shd ef gr col0 s
+/Helvetica-Bold ff 233.33 scf sf
+225 4125 m
+gs 1 -1 sc (muxs) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+7.500 slw
+gs clippath
+1860 1473 m 1860 1185 l 1740 1185 l 1740 1473 l 1740 1473 l 1800 1233 l 1860 1473 l cp
+eoclip
+n 1800 5400 m
+ 1800 1200 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 1860 1473 m 1800 1233 l 1740 1473 l col0 s
+% Polyline
+7.500 slw
+gs clippath
+5727 5160 m 6015 5160 l 6015 5040 l 5727 5040 l 5727 5040 l 5967 5100 l 5727 5160 l cp
+eoclip
+n 1500 5100 m
+ 6000 5100 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 5727 5160 m 5967 5100 l 5727 5040 l col0 s
+% Polyline
+45.000 slw
+ [150] 0 sd
+n 1800 1800 m 5100 1800 l 5100 5100 l 1800 5100 l
+ cp gs col0 s gr [] 0 sd
+% Polyline
+15.000 slw
+ [90] 0 sd
+n 1875 5025 m 5025 5025 l 5025 1875 l 1875 1875 l
+ cp gs col1 s gr [] 0 sd
+% Polyline
+ [180] 0 sd
+n 1950 1950 m 4950 1950 l 4950 4950 l 1950 4950 l
+ cp gs col4 s gr [] 0 sd
+% Polyline
+n 1800 6300 m
+ 2100 6300 l gs col1 s gr
+% Polyline
+n 1800 6000 m
+ 2100 6000 l gs col4 s gr
+% Polyline
+45.000 slw
+n 1800 5700 m
+ 2100 5700 l gs col0 s gr
+% Polyline
+15.000 slw
+ [360] 0 sd
+n 2025 2025 m 4875 2025 l 4875 4875 l 2025 4875 l
+ cp gs col12 s gr [] 0 sd
+% Polyline
+n 1800 6600 m
+ 2100 6600 l gs col12 s gr
+% Polyline
+45.000 slw
+n -2400 3150 m -5775 3150 l -5775 2175 l -5325 1725 l 975 1725 l 975 3150 l
+
+ -2400 3150 l cp gs col0 s gr
+% Polyline
+n -3000 1725 m -3000 2025 l -1800 2025 l
+ -1800 1725 l gs col0 s gr
+% Polyline
+15.000 slw
+gs clippath
+-4840 2296 m -5124 2343 l -5104 2461 l -4820 2414 l -4820 2414 l -5067 2395 l -4840 2296 l cp
+eoclip
+n -2850 2025 m
+ -5100 2400 l gs col0 s gr gr
+
+% arrowhead
+n -4840 2296 m -5067 2395 l -4820 2414 l -4840 2296 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-3082 2225 m -3340 2353 l -3286 2460 l -3028 2332 l -3028 2332 l -3270 2386 l -3082 2225 l cp
+eoclip
+n -2550 2025 m
+ -3300 2400 l gs col0 s gr gr
+
+% arrowhead
+n -3082 2225 m -3270 2386 l -3028 2332 l -3082 2225 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+-1769 2332 m -1513 2460 l -1459 2353 l -1715 2225 l -1715 2225 l -1528 2386 l -1769 2332 l cp
+eoclip
+n -2250 2025 m
+ -1500 2400 l gs col0 s gr gr
+
+% arrowhead
+n -1769 2332 m -1528 2386 l -1715 2225 l -1769 2332 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+gs clippath
+21 2414 m 304 2461 l 324 2343 l 41 2296 l 41 2296 l 268 2395 l 21 2414 l cp
+eoclip
+n -1950 2025 m
+ 300 2400 l gs col0 s gr gr
+
+% arrowhead
+n 21 2414 m 268 2395 l 41 2296 l 21 2414 l cp gs col7 1.00 shd ef gr col0 s
+% Polyline
+n -5700 2400 m -4500 2400 l -4500 3000 l -5700 3000 l
+ cp gs col0 s gr
+% Polyline
+gs clippath
+-5159 3628 m -5160 3915 l -5040 3915 l -5039 3628 l -5039 3628 l -5099 3868 l -5159 3628 l cp
+eoclip
+n -5100 3000 m
+ -5100 3900 l gs col0 s gr gr
+
+% arrowhead
+n -5159 3628 m -5099 3868 l -5039 3628 l -5159 3628 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n -3900 2400 m -2700 2400 l -2700 3000 l -3900 3000 l
+ cp gs col0 s gr
+% Polyline
+gs clippath
+-3359 3628 m -3360 3915 l -3240 3915 l -3239 3628 l -3239 3628 l -3299 3868 l -3359 3628 l cp
+eoclip
+n -3300 3000 m
+ -3300 3900 l gs col0 s gr gr
+
+% arrowhead
+n -3359 3628 m -3299 3868 l -3239 3628 l -3359 3628 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n -2100 2400 m -900 2400 l -900 3000 l -2100 3000 l
+ cp gs col0 s gr
+% Polyline
+gs clippath
+-1559 3628 m -1560 3915 l -1440 3915 l -1439 3628 l -1439 3628 l -1499 3868 l -1559 3628 l cp
+eoclip
+n -1500 3000 m
+ -1500 3900 l gs col0 s gr gr
+
+% arrowhead
+n -1559 3628 m -1499 3868 l -1439 3628 l -1559 3628 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n -300 2400 m 900 2400 l 900 3000 l -300 3000 l
+ cp gs col0 s gr
+% Polyline
+gs clippath
+240 3628 m 240 3915 l 360 3915 l 360 3628 l 360 3628 l 300 3868 l 240 3628 l cp
+eoclip
+n 300 3000 m
+ 300 3900 l gs col0 s gr gr
+
+% arrowhead
+n 240 3628 m 300 3868 l 360 3628 l 240 3628 l cp gs 0.00 setgray ef gr col0 s
+/Helvetica-Bold ff 233.33 scf sf
+2400 5700 m
+gs 1 -1 sc (coeur) col0 sh gr
+/Helvetica ff 233.33 scf sf
+2400 6000 m
+gs 1 -1 sc (ialu) col0 sh gr
+/Helvetica ff 233.33 scf sf
+2400 6300 m
+gs 1 -1 sc (iaccu) col0 sh gr
+/Helvetica ff 233.33 scf sf
+2400 6600 m
+gs 1 -1 sc (iram) col0 sh gr
+/Helvetica-Bold ff 233.33 scf sf
+-2400 1950 m
+gs 1 -1 sc (coeur) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-5100 2625 m
+gs 1 -1 sc (ialu) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-5100 2925 m
+gs 1 -1 sc (\(0,0,ID\)) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-3300 2625 m
+gs 1 -1 sc (iaccu) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-3300 2925 m
+gs 1 -1 sc (\(0,0,ID\)) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-1500 2625 m
+gs 1 -1 sc (iram) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+-1500 2925 m
+gs 1 -1 sc (\(0,0,ID\)) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+300 2625 m
+gs 1 -1 sc (imuxs) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica ff 233.33 scf sf
+300 2925 m
+gs 1 -1 sc (\(0,0,ID\)) dup sw pop 2 div neg 0 rm col0 sh gr
+% here ends figure;
+pagefooter
+showpage
+%%Trailer
+%EOF
diff --git a/documentation/UsersGuide/images/etesian-1.fig b/documentation/UsersGuide/images/etesian-1.fig
new file mode 100644
index 00000000..7b1231c9
--- /dev/null
+++ b/documentation/UsersGuide/images/etesian-1.fig
@@ -0,0 +1,148 @@
+#FIG 3.2 Produced by xfig version 3.2.5c
+Landscape
+Center
+Inches
+Letter
+70.00
+Single
+-2
+1200 2
+6 -5775 5925 -2175 7575
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -5100 6600 -5700 6600 -5700 6225 -5475 6000 -4500 6000 -4500 6600
+ -5100 6600
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -5700 6900 -4500 6900 -4500 7500 -5700 7500 -5700 6900
+4 0 0 50 -1 12 16 0.0000 4 150 1320 -4200 7275 Instance\001
+4 1 0 50 -1 16 14 0.0000 4 225 795 -5100 7275 i_name\001
+4 1 0 50 -1 18 14 0.0000 4 180 975 -5100 6375 m_name\001
+4 0 0 50 -1 14 16 0.0000 4 210 1980 -4200 6375 Cell (Model)\001
+-6
+6 -6075 3825 -4275 4875
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -5400 4800 -6000 4800 -6000 4125 -5775 3900 -4350 3900 -4350 4800
+ -5400 4800
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ -5550 3900 -5550 4200 -4875 4200 -4875 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -5400 4200 -5400 4650
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -4950 4200 -4950 4650
+4 1 0 50 -1 18 14 0.0000 4 180 345 -5175 4125 alu\001
+-6
+6 -4275 3825 -2475 4875
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -3600 4800 -4200 4800 -4200 4125 -3975 3900 -2550 3900 -2550 4800
+ -3600 4800
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ -3750 3900 -3750 4200 -3000 4200 -3000 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -3600 4200 -3600 4650
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -3150 4200 -3150 4650
+4 1 0 50 -1 18 14 0.0000 4 135 555 -3375 4125 accu\001
+-6
+6 -2475 3825 -675 4875
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ -1800 4800 -2400 4800 -2400 4125 -2175 3900 -750 3900 -750 4800
+ -1800 4800
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ -1950 3900 -1950 4200 -1200 4200 -1200 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -1800 4200 -1800 4650
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -1350 4200 -1350 4650
+4 1 0 50 -1 18 14 0.0000 4 135 435 -1575 4125 ram\001
+-6
+6 -675 3825 1125 4875
+2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 7
+ 0 4800 -600 4800 -600 4125 -375 3900 1050 3900 1050 4800
+ 0 4800
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ -225 3900 -225 4200 675 4200 675 3900
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ 0 4200 0 4650
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ 450 4200 450 4650
+4 1 0 50 -1 18 14 0.0000 4 135 630 225 4125 muxs\001
+-6
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+ 0 0 2.00 120.00 240.00
+ 1800 5400 1800 1200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+ 0 0 2.00 120.00 240.00
+ 1500 5100 6000 5100
+2 2 1 4 0 7 50 -1 -1 10.000 0 0 -1 0 0 5
+ 1800 1800 5100 1800 5100 5100 1800 5100 1800 1800
+2 2 1 2 1 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 1875 5025 5025 5025 5025 1875 1875 1875 1875 5025
+2 2 1 2 4 7 50 -1 -1 12.000 0 0 -1 0 0 5
+ 1950 1950 4950 1950 4950 4950 1950 4950 1950 1950
+2 1 0 2 1 7 50 -1 -1 12.000 0 0 -1 0 0 2
+ 1800 6300 2100 6300
+2 1 0 2 4 7 50 -1 -1 12.000 0 0 -1 0 0 2
+ 1800 6000 2100 6000
+2 1 0 4 0 7 50 -1 -1 20.000 0 0 -1 0 0 2
+ 1800 5700 2100 5700
+2 2 1 2 12 7 50 -1 -1 24.000 0 0 -1 0 0 5
+ 2025 2025 4875 2025 4875 4875 2025 4875 2025 2025
+2 1 0 2 12 7 50 -1 -1 24.000 0 0 -1 0 0 2
+ 1800 6600 2100 6600
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 7
+ -2400 3150 -5775 3150 -5775 2175 -5325 1725 975 1725 975 3150
+ -2400 3150
+2 1 0 4 0 7 50 -1 -1 40.000 0 0 -1 0 0 4
+ -3000 1725 -3000 2025 -1800 2025 -1800 1725
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -2850 2025 -5100 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -2550 2025 -3300 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -2250 2025 -1500 2400
+2 1 0 2 0 7 50 -1 -1 24.000 0 0 -1 1 0 2
+ 1 0 2.00 120.00 240.00
+ -1950 2025 300 2400
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -5700 2400 -4500 2400 -4500 3000 -5700 3000 -5700 2400
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -5100 3000 -5100 3900
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -3900 2400 -2700 2400 -2700 3000 -3900 3000 -3900 2400
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -3300 3000 -3300 3900
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -2100 2400 -900 2400 -900 3000 -2100 3000 -2100 2400
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ -1500 3000 -1500 3900
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ -300 2400 900 2400 900 3000 -300 3000 -300 2400
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 2.00 120.00 240.00
+ 300 3000 300 3900
+4 0 0 50 -1 18 14 0.0000 4 135 660 2400 5700 coeur\001
+4 0 0 50 -1 16 14 0.0000 4 180 390 2400 6000 ialu\001
+4 0 0 50 -1 16 14 0.0000 4 180 570 2400 6300 iaccu\001
+4 0 0 50 -1 16 14 0.0000 4 180 465 2400 6600 iram\001
+4 1 0 50 -1 18 14 0.0000 4 135 660 -2400 1950 coeur\001
+4 1 0 50 -1 16 14 0.0000 4 180 390 -5100 2625 ialu\001
+4 1 0 50 -1 16 14 0.0000 4 225 780 -5100 2925 (0,0,ID)\001
+4 1 0 50 -1 16 14 0.0000 4 180 570 -3300 2625 iaccu\001
+4 1 0 50 -1 16 14 0.0000 4 225 780 -3300 2925 (0,0,ID)\001
+4 1 0 50 -1 16 14 0.0000 4 180 465 -1500 2625 iram\001
+4 1 0 50 -1 16 14 0.0000 4 225 780 -1500 2925 (0,0,ID)\001
+4 1 0 50 -1 16 14 0.0000 4 180 630 300 2625 imuxs\001
+4 1 0 50 -1 16 14 0.0000 4 225 780 300 2925 (0,0,ID)\001
diff --git a/documentation/UsersGuide/images/etesian-1.png b/documentation/UsersGuide/images/etesian-1.png
new file mode 100644
index 00000000..80552016
Binary files /dev/null and b/documentation/UsersGuide/images/etesian-1.png differ
diff --git a/documentation/UsersGuide/socstyle.tex b/documentation/UsersGuide/socstyle.tex
index 21f564fa..c2577ee7 100644
--- a/documentation/UsersGuide/socstyle.tex
+++ b/documentation/UsersGuide/socstyle.tex
@@ -78,7 +78,7 @@
\renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{\thesection\ #1}}
\renewcommand{\subsectionmark}[1]{}
\lhead[]{Documentation \SoC}
- \rhead[]{March 2014}
+ \rhead[]{March 2015}
\lfoot[]{\UPMC/\LIP/\SoC}
\rfoot[]{\thepage}
\cfoot[]{}
diff --git a/documentation/examples/AM2901/.coriolis2/kite.py b/documentation/examples/AM2901/.coriolis2/kite.py
new file mode 100644
index 00000000..6332c785
--- /dev/null
+++ b/documentation/examples/AM2901/.coriolis2/kite.py
@@ -0,0 +1,4 @@
+
+from Hurricane import DebugSession
+
+#DebugSession.addToTrace( kite.getCell().getNet( 'f_i(3)' ) )
diff --git a/documentation/examples/AM2901/.coriolis2/settings.py b/documentation/examples/AM2901/.coriolis2/settings.py
new file mode 100644
index 00000000..4a1aed48
--- /dev/null
+++ b/documentation/examples/AM2901/.coriolis2/settings.py
@@ -0,0 +1,31 @@
+
+# -*- Mode:Python -*-
+
+
+defaultStyle = 'Alliance.Classic [black]'
+
+parametersTable = \
+ ( ('misc.catchCore' , TypeBool , False )
+ , ('misc.info' , TypeBool , False )
+ , ('misc.paranoid' , TypeBool , False )
+ , ('misc.bug' , TypeBool , False )
+ , ('misc.logMode' , TypeBool , False )
+ , ('misc.verboseLevel1' , TypeBool , False )
+ , ('misc.verboseLevel2' , TypeBool , True )
+ , ('misc.traceLevel' , TypeInt , 1000 )
+ , ('etesian.spaceMargin' , TypePercentage, 5.0 )
+ , ('etesian.aspectRatio' , TypePercentage, 100.0 )
+ # Kite parameters.
+ , ("kite.eventsLimit" , TypeInt , 1000000 )
+ , ('katabatic.topRoutingLayer', TypeString , 'METAL5')
+ , ("kite.hTracksReservedLocal", TypeInt , 4 )
+ , ("kite.vTracksReservedLocal", TypeInt , 3 )
+ )
+
+#import os
+#
+#print ' o Cleaning up ClockTree previous run.'
+#for fileName in os.listdir('.'):
+# if fileName.endswith('.ap') or (fileName.find('_clocked.') >= 0):
+# print ' - <%s>' % fileName
+# os.unlink(fileName)
diff --git a/documentation/examples/AM2901/.coriolis2/techno.py b/documentation/examples/AM2901/.coriolis2/techno.py
new file mode 100644
index 00000000..3444c29b
--- /dev/null
+++ b/documentation/examples/AM2901/.coriolis2/techno.py
@@ -0,0 +1,2 @@
+symbolicTechno = 'cmos'
+realTechno = 'hcmos9'
diff --git a/documentation/examples/AM2901/CMakeLists.txt b/documentation/examples/AM2901/CMakeLists.txt
index f53d027f..905beb98 100644
--- a/documentation/examples/AM2901/CMakeLists.txt
+++ b/documentation/examples/AM2901/CMakeLists.txt
@@ -8,6 +8,10 @@
muxe.vst
muxs.vst
ram.vst
- design.py
- DESTINATION ${examplesInstallDir}/AM2901 )
+ amd2901_chip.py DESTINATION ${examplesInstallDir}/AM2901 )
+ install ( FILES doChip.py PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE
+ OWNER_READ GROUP_READ WORLD_READ
+ OWNER_WRITE
+ DESTINATION ${examplesInstallDir}/AM2901 )
+ install ( DIRECTORY .coriolis2 DESTINATION ${examplesInstallDir}/AM2901 )
diff --git a/documentation/examples/AM2901/amd2901_chip.py b/documentation/examples/AM2901/amd2901_chip.py
new file mode 100644
index 00000000..ba638662
--- /dev/null
+++ b/documentation/examples/AM2901/amd2901_chip.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+
+
+chip = { 'pads.south' : [ 'p_a3' , 'p_a2', 'p_a1', 'p_r0', 'p_vddick0', 'p_vssick0', 'p_a0' , 'p_i6', 'p_i8' , 'p_i7' , 'p_r3' ]
+ , 'pads.east' : [ 'p_zero', 'p_i0', 'p_i1', 'p_i2', 'p_vddeck0', 'p_vsseck0', 'p_q3' , 'p_b0', 'p_b1' , 'p_b2' , 'p_b3' ]
+ , 'pads.north' : [ 'p_noe' , 'p_y3', 'p_y2', 'p_y1', 'p_y0' , 'p_vddeck1', 'p_vsseck1', 'p_np', 'p_ovr', 'p_cout', 'p_ng' ]
+ #, 'pads.west' : [ 'p_i5', 'p_i3', 'p_ck' , 'p_d0' , 'p_d1' , 'p_d2', 'p_d3' , 'p_q0' , 'p_f3' ]
+ , 'pads.west' : [ 'p_cin' , 'p_i4', 'p_i5', 'p_i3', 'p_ck' , 'p_d0' , 'p_d1' , 'p_d2', 'p_d3' , 'p_q0' , 'p_f3' ]
+ , 'core.size' : ( 1500, 1500 )
+ , 'chip.size' : ( 3000, 3000 )
+ , 'chip.clockTree' : True
+ }
diff --git a/documentation/examples/AM2901/design.py b/documentation/examples/AM2901/design.py
deleted file mode 100755
index faa5ff8e..00000000
--- a/documentation/examples/AM2901/design.py
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/env python
-
-try:
- import sys
- import traceback
- import os.path
- import optparse
- import Cfg
- import Hurricane
- from Hurricane import DbU
- from Hurricane import UpdateSession
- from Hurricane import Breakpoint
- from Hurricane import Transformation
- from Hurricane import Instance
- import Viewer
- import CRL
- from helpers import ErrorMessage
- import Nimbus
- import Metis
- import Mauka
- import Katabatic
- import Kite
- import Unicorn
- import placeandroute
-except ImportError, e:
- serror = str(e)
- if serror.startswith('No module named'):
- module = serror.split()[-1]
- print '[ERROR] The <%s> python module or symbol cannot be loaded.' % module
- print ' Please check the integrity of the package.'
- if str(e).find('cannot open shared object file'):
- library = serror.split(':')[0]
- print '[ERROR] The <%s> shared library cannot be loaded.' % library
- print ' Under RHEL 6, you must be under devtoolset-2.'
- print ' (scl enable devtoolset-2 bash)'
- sys.exit(1)
-except Exception, e:
- print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python'
- print ' modules. Something may be wrong at Python/C API level.\n'
- print ' %s' % e
- sys.exit(2)
-
-
-# Check that all the instances have been placed by Mauka.
-def checkForUnplaceds ( cell ):
- unplaceds = []
- for instance in cell.getInstances():
- if instance.getPlacementStatus() == Instance.PlacementStatus.UNPLACED:
- unplaceds += [ instance ]
- if unplaceds:
- message = [ 'Some instances are still unplaceds:' ]
- for instance in unplaceds:
- message += [ '<%s> of model <%s>'%(str(instance.getName())
- ,str(instance.getMasterCell().getName())) ]
- raise ErrorMessage( 3, message )
- return
-
-
-# Small wrapper to display breakpoints, when in graphic mode only.
-def breakpoint ( editor, level, message ):
- if editor:
- editor.fit()
- editor.refresh()
- Breakpoint.stop( level, message )
- return
-
-
-def ScriptMain ( cell=None ):
- # Force removal of any previouly generated placement (.ap files)
- # as they would prevent the the placer to run again.
- # This is a little bit inconvenient, but will change in the future.
- print ' o Cleaning up any previous run.'
- for fileName in os.listdir('.'):
- if fileName.endswith('.ap'):
- print ' - <%s>' % fileName
- os.unlink(fileName)
-
- editor = None
- if globals().has_key('__editor'):
- print ' o Editor detected, running in graphic mode.'
- editor = __editor
-
- Cfg.Configuration.pushDefaultPriority(Cfg.Parameter.Priority.CommandLine)
- Cfg.getParamBool('misc.verboseLevel1').setBool(True)
- Cfg.getParamBool('misc.verboseLevel2').setBool(True)
- Cfg.Configuration.popDefaultPriority()
-
- errorCode = 0
- framework = CRL.AllianceFramework.get()
-
- padHeight = DbU.fromLambda( 400.0)
- padWidth = DbU.fromLambda( 200.0)
- coreSide = DbU.fromLambda(1400.0)
-
- # Cell must be loaded *before* opening the UpdateSession.
- print ' o Placing .'
- modelCoeur = framework.getCell('coeur',CRL.Catalog.State.Logical)
-
- UpdateSession.open()
- try:
- modelCoeur.setAbutmentBox( Hurricane.Box( DbU.fromLambda(0)
- , DbU.fromLambda(0)
- , coreSide
- , coreSide
- ) )
- # Cannot place a rail if at least one instance is placed.
- # (to compute the orientation of the cells rows)
- #placeandroute.pyAlimVerticalRail( modelCoeur, coreSide/DbU.fromLambda(5.0*2) )
-
- except Exception, e:
- print e; errorCode = 1
-
- # For the geometrical modifications to be taken into account, we must
- # close this UpdateSession now. So the chip will see the core correctly.
- UpdateSession.close()
- if errorCode: sys.exit(errorCode)
-
- print ' o Placing .'
- amd2901 = framework.getCell('amd2901',CRL.Catalog.State.Logical)
- if editor: editor.setCell(amd2901)
-
- UpdateSession.open()
- try:
-
- chipSide = 11*padWidth + 2*padHeight # Le chip est carre, avec 11 plots par face.
- abutmentBoxChip = Hurricane.Box( DbU.fromLambda(0.0)
- , DbU.fromLambda(0.0)
- , chipSide
- , chipSide
- )
- amd2901.setAbutmentBox( abutmentBoxChip )
-
- instanceCoeur = amd2901.getInstance( 'core' )
- instanceCoeur.setTransformation(Hurricane.Transformation( (chipSide-coreSide)/2
- , (chipSide-coreSide)/2
- , Transformation.Orientation.ID ) )
- instanceCoeur.setPlacementStatus( Instance.PlacementStatus.PLACED )
-
- # Placing Pads
- southPads = [ 'p_a3' , 'p_a2', 'p_a1', 'p_r0', 'p_vddick0', 'p_vssick0', 'p_a0' , 'p_i6', 'p_i8' , 'p_i7' , 'p_r3' ]
- eastPads = [ 'p_zero', 'p_i0', 'p_i1', 'p_i2', 'p_vddeck0', 'p_vsseck0', 'p_q3' , 'p_b0', 'p_b1' , 'p_b2' , 'p_b3' ]
- northPads = [ 'p_noe' , 'p_y3', 'p_y2', 'p_y1', 'p_y0' , 'p_vddeck1', 'p_vsseck1', 'p_np', 'p_ovr', 'p_cout', 'p_ng' ]
- westPads = [ 'p_cin' , 'p_i4', 'p_i5', 'p_i3', 'p_ck' , 'p_d0' , 'p_d1' , 'p_d2', 'p_d3' , 'p_q0' , 'p_f3' ]
-
- for (key,listPads) in {'south':southPads, 'east':eastPads, 'north':northPads, 'west':westPads}.iteritems():
- print ' o Pads on %s side:' %key
- for ipad in range(len(listPads)):
- pad = amd2901.getInstance( listPads[ipad] )
- print ' - Placing pad: <%s> (model:<%s>).' % (listPads[ipad],str(pad.getMasterCell().getName()))
-
- # south
- if key == 'south' :
- xpad = abutmentBoxChip.getXMin() + padHeight + ipad*(padWidth)
- ypad = abutmentBoxChip.getYMin() + padHeight
- pad.setTransformation( Hurricane.Transformation( xpad, ypad, Transformation.Orientation.MY) )
-
- # east
- if key == 'east' :
- xpad = abutmentBoxChip.getXMax() - padHeight
- ypad = padHeight + padWidth + ipad*(padWidth)
- pad.setTransformation( Hurricane.Transformation( xpad, ypad, Transformation.Orientation.R3) )
-
- # north
- if key == 'north' :
- xpad = padHeight + ipad*(padWidth)
- ypad = abutmentBoxChip.getYMax() - padHeight
- pad.setTransformation( Hurricane.Transformation( xpad, ypad, Transformation.Orientation.ID) )
-
- # west
- if key == 'west' :
- xpad = padHeight
- ypad = padHeight + ipad*(padWidth)
- pad.setTransformation( Hurricane.Transformation( xpad, ypad, Transformation.Orientation.R1) )
-
- pad.setPlacementStatus( Instance.PlacementStatus.PLACED )
-
- except ErrorMessage, e:
- print e; errorCode = e.code
- except Exception, e:
- print '\n\n', e; errorCode = 1
- traceback.print_tb(sys.exc_info()[2])
-
- UpdateSession.close()
- if errorCode: sys.exit(errorCode)
-
- breakpoint( editor, 1, 'Chip After Pad Placement' )
-
- try:
- # Now run the tools.
- coeur = framework.getCell('coeur',CRL.Catalog.State.Logical)
-
- mauka = Mauka.MaukaEngine.create(coeur)
- mauka.run()
- mauka.destroy()
-
- breakpoint( editor, 1, 'Core After Standard Cell Placement' )
-
- placeandroute.pyAlimConnectors(coeur)
-
- # This is gross. It's the ghost of Wu Yifei and his demonic code...
- # Will not be needed in the future (dynamic detection based on the
- # transformations).
- for pad in southPads: placeandroute.pad_south += [ amd2901.getInstance(pad) ]
- for pad in northPads: placeandroute.pad_north += [ amd2901.getInstance(pad) ]
- for pad in eastPads: placeandroute.pad_east += [ amd2901.getInstance(pad) ]
- for pad in westPads: placeandroute.pad_west += [ amd2901.getInstance(pad) ]
-
- placeandroute.pyPowerRing( amd2901, amd2901.getInstance('core'), 3 )
- placeandroute.pyRouteCk ( amd2901, amd2901.getNet('ckc') )
- breakpoint( editor, 1, 'Core After Clock & Power Routing' )
-
- kite = Kite.KiteEngine.create( amd2901 )
- kite.runGlobalRouter( Kite.KtBuildGlobalRouting )
- kite.loadGlobalRouting( Katabatic.EngineLoadGrByNet, [] )
- kite.layerAssign( Katabatic.EngineNoNetLayerAssign )
- kite.runNegociate()
- breakpoint( editor, 1, 'Routing done, but router still active for inspection.' )
- kite.finalizeLayout()
- kite.destroy()
-
- # Write back layout to disk if everything has gone fine.
- # Must write all the sub-blocks of the core but *not* the
- # standard cell (mainly the feed-through).
- for instance in modelCoeur.getInstances():
- masterCell = instance.getMasterCell()
- if not masterCell.isTerminal():
- framework.saveCell( masterCell, CRL.Catalog.State.Physical )
-
- framework.saveCell( modelCoeur, CRL.Catalog.State.Physical )
- framework.saveCell( amd2901 , CRL.Catalog.State.Physical )
-
- except ErrorMessage, e:
- print e; errorCode = e.code
- except Exception, e:
- print '\n\n', e; errorCode = 1
- traceback.print_tb(sys.exc_info()[2])
-
- if editor: editor.setCell(amd2901)
-
- return 0
-
-
-if __name__ == '__main__':
- ScriptMain()
-
- sys.exit(0)
diff --git a/documentation/examples/AM2901/doChip.py b/documentation/examples/AM2901/doChip.py
new file mode 100755
index 00000000..4a0eed7b
--- /dev/null
+++ b/documentation/examples/AM2901/doChip.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+
+try:
+ import sys
+ import traceback
+ import os.path
+ import optparse
+ import Cfg
+ import Hurricane
+ from Hurricane import DbU
+ from Hurricane import UpdateSession
+ from Hurricane import Breakpoint
+ from Hurricane import Transformation
+ from Hurricane import Instance
+ import Viewer
+ import CRL
+ from helpers import ErrorMessage
+ import Nimbus
+ import Metis
+ import Mauka
+ import Katabatic
+ import Kite
+ import Unicorn
+ import plugins.ChipPlugin
+ import plugins.RSavePlugin
+except ImportError, e:
+ serror = str(e)
+ if serror.startswith('No module named'):
+ module = serror.split()[-1]
+ print '[ERROR] The <%s> python module or symbol cannot be loaded.' % module
+ print ' Please check the integrity of the package.'
+ sys.exit(1)
+ if str(e).find('cannot open shared object file'):
+ library = serror.split(':')[0]
+ print '[ERROR] The <%s> shared library cannot be loaded.' % library
+ print ' Under RHEL 6, you must be under devtoolset-2.'
+ print ' (scl enable devtoolset-2 bash)'
+ sys.exit(1)
+except Exception, e:
+ print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python'
+ print ' modules. Something may be wrong at Python/C API level.\n'
+ print ' %s' % e
+ sys.exit(2)
+
+
+DoPlacement = 0x0001
+DoRouting = 0x0002
+AllStages = DoPlacement|DoRouting
+
+framework = CRL.AllianceFramework.get()
+
+
+def ScriptMain ( **kw ):
+ success = False
+ doStages = AllStages
+ if kw.has_key('doStages'):
+ doStages = kw['doStages']
+ try:
+ cell, editor = plugins.kwParseMain( **kw )
+
+ if doStages & DoPlacement:
+ success = plugins.ChipPlugin.ScriptMain( **kw )
+ if not success: return False
+
+ if doStages & DoRouting:
+ routingNets = []
+ kite = Kite.KiteEngine.create( cell )
+ #kite.printConfiguration()
+
+ kite.runGlobalRouter ( Kite.KtBuildGlobalRouting )
+ kite.loadGlobalRouting( Katabatic.EngineLoadGrByNet, routingNets )
+ kite.layerAssign ( Katabatic.EngineNoNetLayerAssign )
+ kite.runNegociate ()
+ success = kite.getToolSuccess()
+ kite.finalizeLayout()
+ kite.destroy()
+ cell.setName( cell.getName()+'_kite' )
+ framework.saveCell( cell, CRL.Catalog.State.Logical )
+
+ plugins.RSavePlugin.ScriptMain( **kw )
+
+ except Exception, e:
+ print e
+
+ return success
+
+
+if __name__ == '__main__':
+ parser = optparse.OptionParser()
+ parser.add_option( '-c', '--cell' , type='string', dest='cell' , help='The name of the chip to build, whithout extension.')
+ parser.add_option( '-s', '--script', type='string', dest='script' , help='The name of a Python script, without extension.')
+ parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.')
+ parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose', help='Second level of verbosity.')
+ parser.add_option( '-p', '--place' , action='store_true', dest='doPlacement', help='Perform chip placement step only.')
+ parser.add_option( '-r', '--route' , action='store_true', dest='doRouting' , help='Perform routing step only.')
+ (options, args) = parser.parse_args()
+
+
+ doStages = 0
+ if options.verbose: Cfg.getParamBool('misc.verboseLevel1').setBool(True)
+ if options.veryVerbose: Cfg.getParamBool('misc.verboseLevel2').setBool(True)
+ if options.doPlacement: doStages |= DoPlacement
+ if options.doRouting: doStages |= DoRouting
+ if not doStages: doStages = AllStages
+
+ kw = { 'doStages':doStages }
+ if options.script:
+ try:
+ module = __import__( options.script, globals(), locals() )
+ if not module.__dict__.has_key('ScriptMain'):
+ print '[ERROR] Script module <%s> do not contains a ScripMain() function.' % options.script
+ sys.exit(1)
+
+ cell = module.__dict__['ScriptMain']( **kw )
+ kw['cell'] = cell
+
+ except ImportError, e:
+ module = str(e).split()[-1]
+
+ print '[ERROR] The <%s> script cannot be loaded.' % module
+ print ' Please check your design hierarchy.'
+ sys.exit(1)
+ except Exception, e:
+ print '[ERROR] A strange exception occurred while loading the Python'
+ print ' script <%s>. Please check that module for error:\n' % options.script
+ traceback.print_tb(sys.exc_info()[2])
+ print ' %s' % e
+ sys.exit(2)
+ elif options.cell:
+ kw['cell'] = framework.getCell( options.cell, CRL.Catalog.State.Views )
+
+ success = ScriptMain( **kw )
+ shellSuccess = 0
+ if not success: shellSuccess = 1
+
+ sys.exit( shellSuccess )