Update documentation to build on Debian 9.2 (stretch).
* Change: In documentation/CMakeLists.txt, for add_custom_targets(), add_dependencies() no longer allow to give files (only others *target* in the sense of cmake). We must use the DEPENDS option of add_custom_target(). * Change: In documentation/UsersGuide, it seems that docutils no longer handle correctly '$' and/or '_' in verbatim in the LaTeX backend. (i.e. they are *not* escaped, resulting in math mode errors). Remove those characters as we can use others... * Commit a snaphot of the current documentation.
|
@ -8,7 +8,7 @@ TAGS
|
|||
GTAGS
|
||||
GPATH
|
||||
GRTAGS
|
||||
dir-locals.el
|
||||
.dir-locals.el
|
||||
.projectile
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
if(BUILD_DOC)
|
||||
set ( htmlInstallDir share/doc/coriolis2/en/html/main )
|
||||
set ( pdfInstallDir share/doc/coriolis2/en/pdf/main )
|
||||
|
||||
|
||||
set ( pythonCppRst PythonCpp/pdfHeader.rst
|
||||
PythonCpp/Introduction.rst
|
||||
PythonCpp/Configuration.rst
|
||||
|
@ -46,46 +46,44 @@
|
|||
add_custom_target ( doc_HTML ALL
|
||||
cd ${DOCUMENTATION_SOURCE_DIR}
|
||||
&& rm -rf _build
|
||||
&& sphinx-build -b html -d _build/doctrees . _build/html )
|
||||
add_dependencies ( doc_HTML ../etc/definitions.rst
|
||||
../_static/SoC.css
|
||||
../_static/www-SoC.css
|
||||
../_static/SoC-ReST.css
|
||||
../_static/pygments.css
|
||||
CrlCore/CrlCore.rst
|
||||
DpGen/DpGen.rst
|
||||
Hurricane/Hurricane.rst
|
||||
Patterns/Patterns.rst
|
||||
Stratus/Stratus.rst
|
||||
Unicorn/Unicorn.rst
|
||||
Viewer/Viewer.rst
|
||||
${usersGuideRst} UsersGuide/index.rst
|
||||
${pythonCppRst} PythonCpp/index.rst
|
||||
${rdsRst} RDS/index.rst
|
||||
&& sphinx-build -b html -d _build/doctrees . _build/html
|
||||
DEPENDS etc/definitions.rst
|
||||
_static/SoC.css
|
||||
_static/www-SoC.css
|
||||
_static/SoC-ReST.css
|
||||
_static/pygments.css
|
||||
CrlCore/CrlCore.rst
|
||||
DpGen/DpGen.rst
|
||||
Hurricane/Hurricane.rst
|
||||
Patterns/Patterns.rst
|
||||
Stratus/Stratus.rst
|
||||
Unicorn/Unicorn.rst
|
||||
Viewer/Viewer.rst
|
||||
${usersGuideRst} UsersGuide/index.rst
|
||||
${pythonCppRst} PythonCpp/index.rst
|
||||
${rdsRst} RDS/index.rst
|
||||
)
|
||||
|
||||
add_custom_target ( pdf_UsersGuide ALL
|
||||
cd ${DOCUMENTATION_SOURCE_DIR}/UsersGuide
|
||||
&& ../etc/doPdf.sh ${usersGuideRst} UsersGuide.rst )
|
||||
add_dependencies ( pdf_UsersGuide ../etc/definitions.rst
|
||||
../etc/SoC-ReST.tex
|
||||
${usersGuideRst} )
|
||||
&& ../etc/doPdf.sh ${usersGuideRst} UsersGuide.rst
|
||||
DEPENDS etc/definitions.rst
|
||||
etc/SoC-ReST.tex
|
||||
${usersGuideRst} )
|
||||
|
||||
add_custom_target ( pdf_PythonCpp ALL
|
||||
cd ${DOCUMENTATION_SOURCE_DIR}/PythonCpp
|
||||
&& ../etc/doPdf.sh ${pythonCppRst} PythonCpp.rst
|
||||
)
|
||||
add_dependencies ( pdf_PythonCpp ../etc/definitions.rst
|
||||
../etc/SoC-ReST.tex
|
||||
${pythonCppRst} )
|
||||
DEPENDS etc/definitions.rst
|
||||
etc/SoC-ReST.tex
|
||||
${pythonCppRst} )
|
||||
|
||||
add_custom_target ( pdf_RDS ALL
|
||||
cd ${DOCUMENTATION_SOURCE_DIR}/RDS
|
||||
&& ../etc/doPdf.sh ${rdsRst} RDS.rst
|
||||
)
|
||||
add_dependencies ( pdf_RDS ../etc/definitions.rst
|
||||
../etc/SoC-ReST.tex
|
||||
${pythonCppRst} )
|
||||
DEPENDS etc/definitions.rst
|
||||
etc/SoC-ReST.tex
|
||||
${pythonCppRst} )
|
||||
|
||||
install ( DIRECTORY _build/html/ DESTINATION ${htmlInstallDir} )
|
||||
install ( FILES RDS/RDS.pdf
|
||||
|
|
|
@ -103,23 +103,23 @@ First step is to install the prerequisites. Currently, only RapidJSON_.
|
|||
As RapidJSON is evolving fast, if you encounter compatibility problems,
|
||||
the exact version we compiled against is given below. ::
|
||||
|
||||
dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~$ git clone http://github.com/miloyip/rapidjson
|
||||
dummy@lepka:~$ git checkout ec322005072076ef53984462fb4a1075c27c7dfd
|
||||
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~> cd ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~> git clone http://github.com/miloyip/rapidjson
|
||||
dummy@lepka:~> git checkout ec322005072076ef53984462fb4a1075c27c7dfd
|
||||
|
||||
The second step is to create the source directory and pull the |git| repository: ::
|
||||
|
||||
dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ git clone https://www-soc.lip6.fr/git/coriolis.git
|
||||
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src
|
||||
dummy@lepka:~> cd ~/coriolis-2.x/src
|
||||
dummy@lepka:~> git clone https://www-soc.lip6.fr/git/coriolis.git
|
||||
|
||||
Third and final step, build & install: ::
|
||||
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=support \
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=support \
|
||||
--project=coriolis \
|
||||
--make="-j4 install"
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=support \
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=support \
|
||||
--project=coriolis \
|
||||
--doc --make="-j1 install"
|
||||
|
||||
|
@ -129,7 +129,7 @@ stage in ``-j4`` (or whatever) then we generate the documentation in ``-j1``
|
|||
|
||||
Under |RHEL6| or clones, you must build using the |devtoolset2|: ::
|
||||
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=coriolis \
|
||||
--devtoolset-2 --make="-j4 install"
|
||||
|
||||
If you want to uses Qt 5 instead of Qt 4, you may add the ``--qt5`` argument.
|
||||
|
@ -150,8 +150,8 @@ In the |Coriolis| |git| repository, two branches are present:
|
|||
development team. To use it instead of the :cb:`master` one, do the following
|
||||
command just after the first step: ::
|
||||
|
||||
dummy@lepka:~$ git checkout devel
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
dummy@lepka:~> git checkout devel
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=coriolis \
|
||||
--make="-j4 install" --debug
|
||||
|
||||
Be aware that it may requires newer versions of the dependencies and may introduce
|
||||
|
@ -160,7 +160,7 @@ In the |Coriolis| |git| repository, two branches are present:
|
|||
In the (unlikely) event of a crash of |cgt|, as it is a |Python| script, the right
|
||||
command to run |gdb| on it is: ::
|
||||
|
||||
dummy@lepka:work$ gdb python core.XXXX
|
||||
dummy@lepka:work> gdb python core.XXXX
|
||||
|
||||
|newpage|
|
||||
|
||||
|
@ -172,9 +172,9 @@ Additionnal Requirement under |MacOS|
|
|||
seems unable to work with the |Python| bundled with |MacOS|. So you have to install
|
||||
both of them from |macports|: ::
|
||||
|
||||
dummy@macos:~$ port install boost +python27
|
||||
dummy@macos:~$ port select python python27
|
||||
dummy@macos:-$ export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
|
||||
dummy@macos:~> port install boost +python27
|
||||
dummy@macos:~> port select python python27
|
||||
dummy@macos:-> export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
|
||||
|
||||
The last two lines tell |MacOS| to use the |Python| from |macports| and *not* from
|
||||
the system.
|
||||
|
|
|
@ -321,7 +321,7 @@ 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
|
||||
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`.
|
||||
|
@ -329,4 +329,4 @@ You can generate the chip using one of the following method:
|
|||
.. note::
|
||||
Between two consecutive run, be sure to erase the netlist/layout generateds: ::
|
||||
|
||||
dummy@lepka:AM2901$ rm *_clocked*.vst *.ap
|
||||
dummy@lepka:AM2901> rm *clocked*.vst *.ap
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 1563ffe9c48542af75d7298c4e351220
|
||||
tags: fbb0d17656682115ca4d033fb2f83ba1
|
||||
config: 83e863ac4925ece5af3eb6ded540e3dc
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="genindex.html"/>
|
||||
<link rel="search" title="Search" href="search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="index.html"/>
|
||||
|
||||
|
||||
|
@ -202,15 +204,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -389,11 +394,11 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -414,7 +419,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
@ -444,7 +449,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'',
|
||||
URL_ROOT:'./',
|
||||
VERSION:'2',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Katabatic Reference" href="../Katabatic/Katabatic.html"/>
|
||||
<link rel="prev" title="Viewer Reference" href="../Viewer/Viewer.html"/>
|
||||
|
@ -152,7 +154,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../Patterns/Patterns.html">Patterns Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Hurricane/Hurricane.html">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Viewer/Viewer.html">Viewer Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Katabatic/Katabatic.html">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Kite/Kite.html">Kite Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Unicorn/Unicorn.html">Unicorn Reference</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../crlcore/index.htm
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Patterns Reference" href="../Patterns/Patterns.html"/>
|
||||
<link rel="prev" title="Stratus Reference" href="../Stratus/Stratus.html"/>
|
||||
|
@ -148,7 +150,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Stratus/Stratus.html">Stratus Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">DpGen Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">DpGen Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Patterns/Patterns.html">Patterns Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Hurricane/Hurricane.html">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Viewer/Viewer.html">Viewer Reference</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../dpgen/index.html"
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Viewer Reference" href="../Viewer/Viewer.html"/>
|
||||
<link rel="prev" title="Patterns Reference" href="../Patterns/Patterns.html"/>
|
||||
|
@ -150,7 +152,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../Stratus/Stratus.html">Stratus Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../DpGen/DpGen.html">DpGen Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Patterns/Patterns.html">Patterns Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Viewer/Viewer.html">Viewer Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../CrlCore/CrlCore.html">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Katabatic/Katabatic.html">Katabatic Reference</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../hurricane/index.h
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Kite Reference" href="../Kite/Kite.html"/>
|
||||
<link rel="prev" title="CRL Core Reference" href="../CrlCore/CrlCore.html"/>
|
||||
|
@ -153,7 +155,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../Hurricane/Hurricane.html">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Viewer/Viewer.html">Viewer Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../CrlCore/CrlCore.html">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Kite/Kite.html">Kite Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Unicorn/Unicorn.html">Unicorn Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../PythonCpp/index.html">Hurricane Python/C++ API Tutorial</a><ul>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -280,7 +285,7 @@ mixed signal conterpart <strong>Anabatic</strong>.</p>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Unicorn Reference" href="../Unicorn/Unicorn.html"/>
|
||||
<link rel="prev" title="Katabatic Reference" href="../Katabatic/Katabatic.html"/>
|
||||
|
@ -154,7 +156,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../Viewer/Viewer.html">Viewer Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../CrlCore/CrlCore.html">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Katabatic/Katabatic.html">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Kite Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Kite Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Unicorn/Unicorn.html">Unicorn Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../PythonCpp/index.html">Hurricane Python/C++ API Tutorial</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../PythonCpp/Introduction.html">1. Introduction</a><ul>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -280,7 +285,7 @@ mixed-signal conterpart Katana (<span class="sc">Kit[e]-Ana[logic]</span>).</p>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Hurricane Reference" href="../Hurricane/Hurricane.html"/>
|
||||
<link rel="prev" title="DpGen Reference" href="../DpGen/DpGen.html"/>
|
||||
|
@ -149,7 +151,7 @@
|
|||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Stratus/Stratus.html">Stratus Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../DpGen/DpGen.html">DpGen Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Patterns Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Patterns Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Hurricane/Hurricane.html">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Viewer/Viewer.html">Viewer Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../CrlCore/CrlCore.html">CRL Core Reference</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../patterns/index.ht
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="3. Case 1 - DBo Derived, Standalone" href="DBoStandalone.html"/>
|
||||
|
@ -164,7 +166,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="Introduction.html#botched-design">1.3 Botched Design</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">2. Basic File Structure and CMake configuration</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">2. Basic File Structure and CMake configuration</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="DBoStandalone.html">3. Case 1 - DBo Derived, Standalone</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="DBoStandalone.html#class-associated-header-file">3.1 Class Associated Header File</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="DBoStandalone.html#class-associated-file">3.2 Class Associated File</a><ul>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -253,22 +258,22 @@
|
|||
|
||||
<div class="section" id="basic-file-structure-and-cmake-configuration">
|
||||
<h1>2. Basic File Structure and CMake configuration<a class="headerlink" href="#basic-file-structure-and-cmake-configuration" title="Permalink to this headline">¶</a></h1>
|
||||
<p>As a first example we will consider the <tt class="docutils literal"><span class="pre">Hurrican::Library</span></tt>
|
||||
<p>As a first example we will consider the <code class="docutils literal"><span class="pre">Hurrican::Library</span></code>
|
||||
class. To export a class into Python, we must create three files:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><tt class="docutils literal"><span class="pre">PyLibrary.h</span></tt>, defines the <tt class="docutils literal"><span class="pre">PyLibrary</span></tt> C-Struct and the functions
|
||||
needed outside the module istself (mostly for <tt class="docutils literal"><span class="pre">PyHurricane.cpp</span></tt>).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyLibrary.cpp</span></tt>, contains the complete wrapping of the class and
|
||||
the Python type definition (<tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt>).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyHurricane.cpp</span></tt>, the definition of the Python module into which
|
||||
the classes are registered. The module act as a <tt class="docutils literal"><span class="pre">namespace</span></tt> in
|
||||
<li><code class="docutils literal"><span class="pre">PyLibrary.h</span></code>, defines the <code class="docutils literal"><span class="pre">PyLibrary</span></code> C-Struct and the functions
|
||||
needed outside the module istself (mostly for <code class="docutils literal"><span class="pre">PyHurricane.cpp</span></code>).</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyLibrary.cpp</span></code>, contains the complete wrapping of the class and
|
||||
the Python type definition (<code class="docutils literal"><span class="pre">PyTypeLibrary</span></code>).</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyHurricane.cpp</span></code>, the definition of the Python module into which
|
||||
the classes are registered. The module act as a <code class="docutils literal"><span class="pre">namespace</span></code> in
|
||||
Python so it is good practice to give it the same name as it’s
|
||||
associated C++ namespace.</li>
|
||||
</ol>
|
||||
<p></p>
|
||||
<p>To build a Python module in <span class="cb">cmake</span>, use the following macro:</p>
|
||||
<blockquote>
|
||||
<div><div class="highlight-cmake"><div class="highlight"><pre> <span class="nb">set</span><span class="p">(</span> <span class="s">pyCpps</span> <span class="s">PyLibrary.cpp</span>
|
||||
<div><div class="highlight-cmake"><div class="highlight"><pre><span></span> <span class="nb">set</span><span class="p">(</span> <span class="s">pyCpps</span> <span class="s">PyLibrary.cpp</span>
|
||||
<span class="s">PyHurricane.cpp</span> <span class="p">)</span>
|
||||
<span class="nb">set</span><span class="p">(</span> <span class="s">pyIncludes</span> <span class="s">hurricane/isobar/PyLibrary.h</span>
|
||||
|
||||
|
@ -308,7 +313,7 @@ associated C++ namespace.</li>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="5. Case 3 - Non-DBo Standalone Classe" href="NonDBo.html"/>
|
||||
|
@ -177,7 +179,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="DBoStandalone.html#python-module-c-namespace">3.3 Python Module (C++ namespace)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">4. Case 2 - Hierarchy of DBo Derived Classes</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">4. Case 2 - Hierarchy of DBo Derived Classes</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#base-class-header">4.1 Base Class Header</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#base-class-file">4.2 Base Class File</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#intermediate-class-header">4.3 Intermediate Class Header</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -255,37 +260,38 @@
|
|||
<div class="section" id="case-2-hierarchy-of-dbo-derived-classes">
|
||||
<h1>4. Case 2 - Hierarchy of DBo Derived Classes<a class="headerlink" href="#case-2-hierarchy-of-dbo-derived-classes" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Now we want to export the following C++ class hierarchy into Python:</p>
|
||||
<div class="highlight-python"><pre>PyEntity <-- PyComponent <-+- PyContact
|
||||
+- PySegment <-+- PyHorizontal
|
||||
+- PyVertical</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PyEntity</span> <span class="o"><--</span> <span class="n">PyComponent</span> <span class="o"><-+-</span> <span class="n">PyContact</span>
|
||||
<span class="o">+-</span> <span class="n">PySegment</span> <span class="o"><-+-</span> <span class="n">PyHorizontal</span>
|
||||
<span class="o">+-</span> <span class="n">PyVertical</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="section" id="base-class-header">
|
||||
<h2>4.1 Base Class Header<a class="headerlink" href="#base-class-header" title="Permalink to this headline">¶</a></h2>
|
||||
<p><strong>Remark:</strong> this is only a partial description of the tree for the sake of
|
||||
clarity.</p>
|
||||
<p>One important fact to remember is that <tt class="docutils literal"><span class="pre">PyEntity</span></tt> and <tt class="docutils literal"><span class="pre">PyComponent</span></tt>
|
||||
<p>One important fact to remember is that <code class="docutils literal"><span class="pre">PyEntity</span></code> and <code class="docutils literal"><span class="pre">PyComponent</span></code>
|
||||
being related to C++ abstract classes, no objects of those types will be
|
||||
created, only <tt class="docutils literal"><span class="pre">PyContact</span></tt>, <tt class="docutils literal"><span class="pre">PyHorizontal</span></tt> or <tt class="docutils literal"><span class="pre">PyVertical</span></tt> will.</p>
|
||||
<p>The consequence is that there is no <tt class="docutils literal"><span class="pre">PyEntity_Link()</span></tt> like in <a class="reference internal" href="DBoStandalone.html#id1"><em>3.1 Class Associated Header File</em></a>
|
||||
created, only <code class="docutils literal"><span class="pre">PyContact</span></code>, <code class="docutils literal"><span class="pre">PyHorizontal</span></code> or <code class="docutils literal"><span class="pre">PyVertical</span></code> will.</p>
|
||||
<p>The consequence is that there is no <code class="docutils literal"><span class="pre">PyEntity_Link()</span></code> like in <a class="reference internal" href="DBoStandalone.html#id1"><span class="std std-ref">3.1 Class Associated Header File</span></a>
|
||||
but instead two functions:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><tt class="docutils literal"><span class="pre">PyEntity_NEW()</span></tt> which create the relevant <tt class="docutils literal"><span class="pre">PyEntity</span></tt> <em>derived</em>
|
||||
object from the <tt class="docutils literal"><span class="pre">Entity</span></tt> one. For example, if the <tt class="docutils literal"><span class="pre">Entity*</span></tt> given
|
||||
as argument is in fact a <tt class="docutils literal"><span class="pre">Horizontal*</span></tt>, then the function will
|
||||
return a <tt class="docutils literal"><span class="pre">PyHorizontal*</span></tt>.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">EntityCast()</span></tt> do the reverse of <tt class="docutils literal"><span class="pre">PyEntity_NEW()</span></tt> that is, from
|
||||
a <tt class="docutils literal"><span class="pre">PyEntity</span></tt>, return the C++ <em>derived</em> object. Again, if the
|
||||
<tt class="docutils literal"><span class="pre">PyEntity*</span></tt> is a <tt class="docutils literal"><span class="pre">PyHorizontal*</span></tt>, the function will cast it as
|
||||
a <tt class="docutils literal"><span class="pre">Horizontal*</span></tt> <em>then</em> return it as an <tt class="docutils literal"><span class="pre">Entity*</span></tt>.</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyEntity_NEW()</span></code> which create the relevant <code class="docutils literal"><span class="pre">PyEntity</span></code> <em>derived</em>
|
||||
object from the <code class="docutils literal"><span class="pre">Entity</span></code> one. For example, if the <code class="docutils literal"><span class="pre">Entity*</span></code> given
|
||||
as argument is in fact a <code class="docutils literal"><span class="pre">Horizontal*</span></code>, then the function will
|
||||
return a <code class="docutils literal"><span class="pre">PyHorizontal*</span></code>.</li>
|
||||
<li><code class="docutils literal"><span class="pre">EntityCast()</span></code> do the reverse of <code class="docutils literal"><span class="pre">PyEntity_NEW()</span></code> that is, from
|
||||
a <code class="docutils literal"><span class="pre">PyEntity</span></code>, return the C++ <em>derived</em> object. Again, if the
|
||||
<code class="docutils literal"><span class="pre">PyEntity*</span></code> is a <code class="docutils literal"><span class="pre">PyHorizontal*</span></code>, the function will cast it as
|
||||
a <code class="docutils literal"><span class="pre">Horizontal*</span></code> <em>then</em> return it as an <code class="docutils literal"><span class="pre">Entity*</span></code>.</li>
|
||||
</ol>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="c">#ifndef ISOBAR_PY_ENTITY_H</span>
|
||||
<span class="c">#define ISOBAR_PY_ENTITY_H</span>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="c1">#ifndef ISOBAR_PY_ENTITY_H</span>
|
||||
<span class="c1">#define ISOBAR_PY_ENTITY_H</span>
|
||||
|
||||
<span class="c">#include "hurricane/isobar/PyHurricane.h"</span>
|
||||
<span class="c">#include "hurricane/Entity.h"</span>
|
||||
<span class="c1">#include "hurricane/isobar/PyHurricane.h"</span>
|
||||
<span class="c1">#include "hurricane/Entity.h"</span>
|
||||
|
||||
<span class="n">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="n">extern</span> <span class="s">"C"</span> <span class="p">{</span>
|
||||
<span class="n">extern</span> <span class="s2">"C"</span> <span class="p">{</span>
|
||||
|
||||
<span class="n">typedef</span> <span class="n">struct</span> <span class="p">{</span>
|
||||
<span class="n">PyObject_HEAD</span>
|
||||
|
@ -298,34 +304,34 @@ a <tt class="docutils literal"><span class="pre">Horizontal*</span></tt> <em>the
|
|||
<span class="n">extern</span> <span class="n">PyMethodDef</span> <span class="n">PyEntity_Methods</span><span class="p">[];</span>
|
||||
|
||||
|
||||
<span class="c">#define IsPyEntity(v) ( (v)->ob_type == &PyTypeEntity )</span>
|
||||
<span class="c">#define PYENTITY(v) ( (PyEntity*)(v) )</span>
|
||||
<span class="c">#define PYENTITY_O(v) ( PYENTITY(v)->_object )</span>
|
||||
<span class="c1">#define IsPyEntity(v) ( (v)->ob_type == &PyTypeEntity )</span>
|
||||
<span class="c1">#define PYENTITY(v) ( (PyEntity*)(v) )</span>
|
||||
<span class="c1">#define PYENTITY_O(v) ( PYENTITY(v)->_object )</span>
|
||||
|
||||
<span class="p">}</span> <span class="o">//</span> <span class="n">extern</span> <span class="s">"C"</span><span class="o">.</span>
|
||||
<span class="p">}</span> <span class="o">//</span> <span class="n">extern</span> <span class="s2">"C"</span><span class="o">.</span>
|
||||
|
||||
<span class="n">Hurricane</span><span class="p">::</span><span class="n">Entity</span><span class="o">*</span> <span class="n">EntityCast</span> <span class="p">(</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">derivedObject</span> <span class="p">);</span>
|
||||
|
||||
<span class="p">}</span> <span class="o">//</span> <span class="n">Isobar</span> <span class="n">namespace</span><span class="o">.</span>
|
||||
|
||||
<span class="c">#endif // ISOBAR_PY_ENTITY_H</span>
|
||||
<span class="c1">#endif // ISOBAR_PY_ENTITY_H</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="base-class-file">
|
||||
<h2>4.2 Base Class File<a class="headerlink" href="#base-class-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-file"><em>3.2 Class Associated File</em></a> are:</p>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-file"><span class="std std-ref">3.2 Class Associated File</span></a> are:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>No call to <tt class="docutils literal"><span class="pre">DBoLinkCreateMethod()</span></tt> because there must be no <tt class="docutils literal"><span class="pre">PyEntity_Link()</span></tt>,
|
||||
but the definitions of <tt class="docutils literal"><span class="pre">PyEntity_NEW()</span></tt> and <tt class="docutils literal"><span class="pre">EntityCast</span></tt>.</li>
|
||||
<li>For defining the <tt class="docutils literal"><span class="pre">PyTypeEntity</span></tt> Python type, we call a different
|
||||
macro: <tt class="docutils literal"><span class="pre">PyTypeRootObjectDefinitions</span></tt>, dedicated to base classes.</li>
|
||||
<li>No call to <code class="docutils literal"><span class="pre">DBoLinkCreateMethod()</span></code> because there must be no <code class="docutils literal"><span class="pre">PyEntity_Link()</span></code>,
|
||||
but the definitions of <code class="docutils literal"><span class="pre">PyEntity_NEW()</span></code> and <code class="docutils literal"><span class="pre">EntityCast</span></code>.</li>
|
||||
<li>For defining the <code class="docutils literal"><span class="pre">PyTypeEntity</span></code> Python type, we call a different
|
||||
macro: <code class="docutils literal"><span class="pre">PyTypeRootObjectDefinitions</span></code>, dedicated to base classes.</li>
|
||||
</ol>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "hurricane/isobar/PyCell.h"</span>
|
||||
<span class="cp">#include "hurricane/isobar/PyHorizontal.h"</span>
|
||||
<span class="cp">#include "hurricane/isobar/PyVertical.h"</span>
|
||||
<span class="cp">#include "hurricane/isobar/PyContact.h"</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyCell.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyHorizontal.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyVertical.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyContact.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">using</span> <span class="k">namespace</span> <span class="n">Hurricane</span><span class="p">;</span>
|
||||
|
@ -342,10 +348,10 @@ macro: <tt class="docutils literal"><span class="pre">PyTypeRootObjectDefinition
|
|||
<span class="p">{</span>
|
||||
<span class="n">Cell</span><span class="o">*</span> <span class="n">cell</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
|
||||
<span class="n">HTRY</span>
|
||||
<span class="n">METHOD_HEAD</span><span class="p">(</span> <span class="s">"Entity.getCell()"</span> <span class="p">)</span>
|
||||
<span class="nf">METHOD_HEAD</span><span class="p">(</span> <span class="s">"Entity.getCell()" )</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">entity</span><span class="o">-></span><span class="n">getCell</span><span class="p">();</span>
|
||||
<span class="n">HCATCH</span>
|
||||
<span class="k">return</span> <span class="n">PyCell_Link</span><span class="p">(</span> <span class="n">cell</span> <span class="p">);</span>
|
||||
<span class="k">return</span> <span class="nf">PyCell_Link</span><span class="p">(</span> <span class="n">cell</span> <span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">PyMethodDef</span> <span class="n">PyEntity_Methods</span><span class="p">[]</span> <span class="o">=</span>
|
||||
|
@ -406,21 +412,21 @@ macro: <tt class="docutils literal"><span class="pre">PyTypeRootObjectDefinition
|
|||
</div>
|
||||
<div class="section" id="intermediate-class-header">
|
||||
<h2>4.3 Intermediate Class Header<a class="headerlink" href="#intermediate-class-header" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-header-file"><em>3.1 Class Associated Header File</em></a> are:</p>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-header-file"><span class="std std-ref">3.1 Class Associated Header File</span></a> are:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>As for <tt class="docutils literal"><span class="pre">PyEntity</span></tt>, and because this is still an abstract class,
|
||||
there is no <tt class="docutils literal"><span class="pre">PyComponent_Link()</span></tt> function.</li>
|
||||
<li>The definition of the <tt class="docutils literal"><span class="pre">PyComponent</span></tt> <span class="cb">struct</span> is differs. There is
|
||||
no <tt class="docutils literal"><span class="pre">PyObject_HEAD</span></tt> (it is a Python <em>derived</em> class). The only
|
||||
field is of the base class type <tt class="docutils literal"><span class="pre">PyEntity</span></tt> and for use with
|
||||
Coriolis macros, <strong>it must</strong> be named <tt class="docutils literal"><span class="pre">_baseObject</span></tt> (note that
|
||||
<li>As for <code class="docutils literal"><span class="pre">PyEntity</span></code>, and because this is still an abstract class,
|
||||
there is no <code class="docutils literal"><span class="pre">PyComponent_Link()</span></code> function.</li>
|
||||
<li>The definition of the <code class="docutils literal"><span class="pre">PyComponent</span></code> <span class="cb">struct</span> is differs. There is
|
||||
no <code class="docutils literal"><span class="pre">PyObject_HEAD</span></code> (it is a Python <em>derived</em> class). The only
|
||||
field is of the base class type <code class="docutils literal"><span class="pre">PyEntity</span></code> and for use with
|
||||
Coriolis macros, <strong>it must</strong> be named <code class="docutils literal"><span class="pre">_baseObject</span></code> (note that
|
||||
this is <em>not</em> a pointer but a whole object).</li>
|
||||
</ol>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#ifndef ISOBAR_PY_COMPONENT_H</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#ifndef ISOBAR_PY_COMPONENT_H</span>
|
||||
<span class="cp">#define ISOBAR_PY_COMPONENT_H</span>
|
||||
|
||||
<span class="cp">#include "hurricane/isobar/PyEntity.h"</span>
|
||||
<span class="cp">#include "hurricane/Component.h"</span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyEntity.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/Component.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">extern</span> <span class="s">"C"</span> <span class="p">{</span>
|
||||
|
@ -431,7 +437,7 @@ this is <em>not</em> a pointer but a whole object).</li>
|
|||
|
||||
<span class="k">extern</span> <span class="n">PyTypeObject</span> <span class="n">PyTypeComponent</span><span class="p">;</span>
|
||||
<span class="k">extern</span> <span class="n">PyMethodDef</span> <span class="n">PyComponent_Methods</span><span class="p">[];</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="n">PyComponent_LinkPyType</span> <span class="p">();</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="nf">PyComponent_LinkPyType</span> <span class="p">();</span>
|
||||
|
||||
<span class="cp">#define IsPyComponent(v) ((v)->ob_type == &PyTypeComponent)</span>
|
||||
<span class="cp">#define PYCOMPONENT(v) ((PyComponent*)(v))</span>
|
||||
|
@ -446,27 +452,27 @@ this is <em>not</em> a pointer but a whole object).</li>
|
|||
</div>
|
||||
<div class="section" id="intermediate-class-file">
|
||||
<h2>4.4 Intermediate Class File<a class="headerlink" href="#intermediate-class-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-file"><em>3.2 Class Associated File</em></a> are:</p>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-file"><span class="std std-ref">3.2 Class Associated File</span></a> are:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>Redefinition of the default macros <tt class="docutils literal"><span class="pre">ACCESS_OBJECT</span></tt> and <tt class="docutils literal"><span class="pre">ACCESS_CLASS</span></tt>.<ul>
|
||||
<li>The pointer to the C++ encapsulated object (attribute <tt class="docutils literal"><span class="pre">_object</span></tt>) is hold
|
||||
by the base class <tt class="docutils literal"><span class="pre">PyEntity</span></tt>. The <tt class="docutils literal"><span class="pre">ACCESS_OBJECT</span></tt> macro which is tasked
|
||||
to give access to that attribute is then <tt class="docutils literal"><span class="pre">_baseObject._object</span></tt> as
|
||||
<tt class="docutils literal"><span class="pre">PyComponent</span></tt> is a direct derived class of <tt class="docutils literal"><span class="pre">PyEntity</span></tt>.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">ACCESS_CLASS</span></tt> is similar to <tt class="docutils literal"><span class="pre">ACCESS_OBJECT</span></tt> for accessing the base
|
||||
class, that is a pointer to <tt class="docutils literal"><span class="pre">PyEntity</span></tt>.</li>
|
||||
<li>Redefinition of the default macros <code class="docutils literal"><span class="pre">ACCESS_OBJECT</span></code> and <code class="docutils literal"><span class="pre">ACCESS_CLASS</span></code>.<ul>
|
||||
<li>The pointer to the C++ encapsulated object (attribute <code class="docutils literal"><span class="pre">_object</span></code>) is hold
|
||||
by the base class <code class="docutils literal"><span class="pre">PyEntity</span></code>. The <code class="docutils literal"><span class="pre">ACCESS_OBJECT</span></code> macro which is tasked
|
||||
to give access to that attribute is then <code class="docutils literal"><span class="pre">_baseObject._object</span></code> as
|
||||
<code class="docutils literal"><span class="pre">PyComponent</span></code> is a direct derived class of <code class="docutils literal"><span class="pre">PyEntity</span></code>.</li>
|
||||
<li><code class="docutils literal"><span class="pre">ACCESS_CLASS</span></code> is similar to <code class="docutils literal"><span class="pre">ACCESS_OBJECT</span></code> for accessing the base
|
||||
class, that is a pointer to <code class="docutils literal"><span class="pre">PyEntity</span></code>.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
<p></p>
|
||||
<ol class="arabic simple" start="2">
|
||||
<li>For defining the <tt class="docutils literal"><span class="pre">PyTypeComponent</span></tt> Python type, we call a yet different
|
||||
macro: <tt class="docutils literal"><span class="pre">PyTypeInheritedObjectDefinitions()</span></tt>, dedicated to derived classes.
|
||||
<li>For defining the <code class="docutils literal"><span class="pre">PyTypeComponent</span></code> Python type, we call a yet different
|
||||
macro: <code class="docutils literal"><span class="pre">PyTypeInheritedObjectDefinitions()</span></code>, dedicated to derived classes.
|
||||
For this this macro we need to give as argument the derived class and the
|
||||
base class.</li>
|
||||
</ol>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "hurricane/isobar/PyComponent.h"</span>
|
||||
<span class="cp">#include "hurricane/isobar/PyNet.h"</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyComponent.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyNet.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">using</span> <span class="k">namespace</span> <span class="n">Hurricane</span><span class="p">;</span>
|
||||
|
@ -489,10 +495,10 @@ base class.</li>
|
|||
<span class="p">{</span>
|
||||
<span class="n">Net</span><span class="o">*</span> <span class="n">net</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
|
||||
<span class="n">HTRY</span>
|
||||
<span class="n">METHOD_HEAD</span><span class="p">(</span> <span class="s">"Component.getNet()"</span> <span class="p">)</span>
|
||||
<span class="nf">METHOD_HEAD</span><span class="p">(</span> <span class="s">"Component.getNet()" )</span>
|
||||
<span class="n">net</span> <span class="o">=</span> <span class="n">component</span><span class="o">-></span><span class="n">getNet</span><span class="p">(</span> <span class="p">);</span>
|
||||
<span class="n">HCATCH</span>
|
||||
<span class="k">return</span> <span class="n">PyNet_Link</span><span class="p">(</span> <span class="n">net</span> <span class="p">);</span>
|
||||
<span class="k">return</span> <span class="nf">PyNet_Link</span><span class="p">(</span> <span class="n">net</span> <span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">PyMethodDef</span> <span class="n">PyComponent_Methods</span><span class="p">[]</span> <span class="o">=</span>
|
||||
|
@ -524,13 +530,13 @@ base class.</li>
|
|||
<div class="section" id="terminal-class-header">
|
||||
<h2>4.5 Terminal Class Header<a class="headerlink" href="#terminal-class-header" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The contents of this file is almost identical to <a class="reference internal" href="#intermediate-class-header">4.3 Intermediate Class Header</a>,
|
||||
save for the presence of a <tt class="docutils literal"><span class="pre">PyContact_Link()</span></tt> function. She is present
|
||||
save for the presence of a <code class="docutils literal"><span class="pre">PyContact_Link()</span></code> function. She is present
|
||||
at this level because the class is a concrete one and can be instanciated.</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#ifndef ISOBAR_PY_CONTACT_H</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#ifndef ISOBAR_PY_CONTACT_H</span>
|
||||
<span class="cp">#define ISOBAR_PY_CONTACT_H</span>
|
||||
|
||||
<span class="cp">#include "hurricane/isobar/PyComponent.h"</span>
|
||||
<span class="cp">#include "hurricane/Contact.h"</span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyComponent.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/Contact.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">extern</span> <span class="s">"C"</span> <span class="p">{</span>
|
||||
|
@ -541,8 +547,8 @@ at this level because the class is a concrete one and can be instanciated.</p>
|
|||
|
||||
<span class="k">extern</span> <span class="n">PyTypeObject</span> <span class="n">PyTypeContact</span><span class="p">;</span>
|
||||
<span class="k">extern</span> <span class="n">PyMethodDef</span> <span class="n">PyContact_Methods</span><span class="p">[];</span>
|
||||
<span class="k">extern</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyContact_Link</span> <span class="p">(</span> <span class="n">Hurricane</span><span class="o">::</span><span class="n">Contact</span><span class="o">*</span> <span class="n">object</span> <span class="p">);</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="n">PyContact_LinkPyType</span> <span class="p">();</span>
|
||||
<span class="k">extern</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyContact_Link</span> <span class="p">(</span> <span class="n">Hurricane</span><span class="o">::</span><span class="n">Contact</span><span class="o">*</span> <span class="n">object</span> <span class="p">);</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="nf">PyContact_LinkPyType</span> <span class="p">();</span>
|
||||
|
||||
<span class="cp">#define IsPyContact(v) ( (v)->ob_type == &PyTypeContact )</span>
|
||||
<span class="cp">#define PYCONTACT(v) ( (PyContact*)(v) )</span>
|
||||
|
@ -559,20 +565,20 @@ at this level because the class is a concrete one and can be instanciated.</p>
|
|||
<h2>4.6 Terminal Class File<a class="headerlink" href="#terminal-class-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Changes from <a class="reference internal" href="#intermediate-class-file">4.4 Intermediate Class File</a> are:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>As previously, we have to redefine the macros <tt class="docutils literal"><span class="pre">ACCESS_OBJECT</span></tt> and <tt class="docutils literal"><span class="pre">ACCESS_CLASS</span></tt>.
|
||||
<li>As previously, we have to redefine the macros <code class="docutils literal"><span class="pre">ACCESS_OBJECT</span></code> and <code class="docutils literal"><span class="pre">ACCESS_CLASS</span></code>.
|
||||
But, as we are one level deeper into the hierarchy, one more level of
|
||||
indirection using <tt class="docutils literal"><span class="pre">_baseObject</span></tt> must be used.<ul>
|
||||
<li><tt class="docutils literal"><span class="pre">ACCESS_OBJECT</span></tt> becomes <tt class="docutils literal"><span class="pre">_baseObject._baseObject._object</span></tt>.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">ACCESS_CLASS</span></tt> becomes <tt class="docutils literal"><span class="pre">&(_pyObject->_baseObject._baseObject)</span></tt>.</li>
|
||||
indirection using <code class="docutils literal"><span class="pre">_baseObject</span></code> must be used.<ul>
|
||||
<li><code class="docutils literal"><span class="pre">ACCESS_OBJECT</span></code> becomes <code class="docutils literal"><span class="pre">_baseObject._baseObject._object</span></code>.</li>
|
||||
<li><code class="docutils literal"><span class="pre">ACCESS_CLASS</span></code> becomes <code class="docutils literal"><span class="pre">&(_pyObject->_baseObject._baseObject)</span></code>.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>For defining the <tt class="docutils literal"><span class="pre">PyTypeContact</span></tt> Python type, we call again
|
||||
<tt class="docutils literal"><span class="pre">PyTypeInheritedObjectDefinitions()</span></tt>. It is the same whether the class is
|
||||
<li>For defining the <code class="docutils literal"><span class="pre">PyTypeContact</span></code> Python type, we call again
|
||||
<code class="docutils literal"><span class="pre">PyTypeInheritedObjectDefinitions()</span></code>. It is the same whether the class is
|
||||
terminal or not.</li>
|
||||
<li>And, this time, as the Python class is concrete, we call the macro
|
||||
<tt class="docutils literal"><span class="pre">DBoLinkCreateMethod()</span></tt> to create the <tt class="docutils literal"><span class="pre">PyContact_Link()</span></tt> function.</li>
|
||||
<code class="docutils literal"><span class="pre">DBoLinkCreateMethod()</span></code> to create the <code class="docutils literal"><span class="pre">PyContact_Link()</span></code> function.</li>
|
||||
</ol>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "hurricane/isobar/PyContact.h"</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyContact.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">using</span> <span class="k">namespace</span> <span class="n">Hurricane</span><span class="p">;</span>
|
||||
|
@ -629,7 +635,7 @@ terminal or not.</li>
|
|||
</div>
|
||||
<div class="section" id="python-module">
|
||||
<h2>4.8 Python Module<a class="headerlink" href="#python-module" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DL_EXPORT</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="n">initHurricane</span> <span class="p">()</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DL_EXPORT</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="n">initHurricane</span> <span class="p">()</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">PyEntity_LinkPyType</span><span class="p">();</span> <span class="c1">// step 1.</span>
|
||||
<span class="n">PyComponent_LinkPyType</span><span class="p">();</span>
|
||||
|
@ -639,9 +645,9 @@ terminal or not.</li>
|
|||
<span class="n">PYTYPE_READY_SUB</span><span class="p">(</span> <span class="n">Component</span><span class="p">,</span> <span class="n">Entity</span> <span class="p">)</span>
|
||||
<span class="n">PYTYPE_READY_SUB</span><span class="p">(</span> <span class="n">Contact</span> <span class="p">,</span> <span class="n">Component</span> <span class="p">)</span>
|
||||
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"ent"</span> <span class="p">,</span> <span class="o">&</span><span class="n">PyTypeEntity</span> <span class="p">,</span> <span class="s">"<Entity>"</span> <span class="p">,</span> <span class="kc">false</span> <span class="p">);</span> <span class="c1">// step 3.</span>
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"comp"</span> <span class="p">,</span> <span class="o">&</span><span class="n">PyTypeComponent</span><span class="p">,</span> <span class="s">"<Component>"</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">"ent"</span> <span class="p">);</span>
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"contact"</span><span class="p">,</span> <span class="o">&</span><span class="n">PyTypeContact</span> <span class="p">,</span> <span class="s">"<Contact>"</span> <span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="s">"comp"</span> <span class="p">);</span>
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"ent"</span> <span class="p">,</span> <span class="o">&</span><span class="n">PyTypeEntity</span> <span class="p">,</span> <span class="s">"<Entity>"</span> <span class="p">,</span> <span class="nb">false</span> <span class="p">);</span> <span class="c1">// step 3.</span>
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"comp"</span> <span class="p">,</span> <span class="o">&</span><span class="n">PyTypeComponent</span><span class="p">,</span> <span class="s">"<Component>"</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="s">"ent"</span> <span class="p">);</span>
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"contact"</span><span class="p">,</span> <span class="o">&</span><span class="n">PyTypeContact</span> <span class="p">,</span> <span class="s">"<Contact>"</span> <span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="s">"comp"</span> <span class="p">);</span>
|
||||
|
||||
<span class="n">PyObject</span><span class="o">*</span> <span class="n">module</span> <span class="o">=</span> <span class="n">Py_InitModule</span><span class="p">(</span> <span class="s">"Hurricane"</span><span class="p">,</span> <span class="n">PyHurricane_Methods</span> <span class="p">);</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">module</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
|
||||
|
@ -679,7 +685,7 @@ terminal or not.</li>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="4. Case 2 - Hierarchy of DBo Derived Classes" href="DBoHierarchy.html"/>
|
||||
|
@ -165,7 +167,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Configuration.html">2. Basic File Structure and CMake configuration</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">3. Case 1 - DBo Derived, Standalone</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">3. Case 1 - DBo Derived, Standalone</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#class-associated-header-file">3.1 Class Associated Header File</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#class-associated-file">3.2 Class Associated File</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#head-of-the-file">3.2.1 Head of the file</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -253,17 +258,17 @@
|
|||
|
||||
<div class="section" id="case-1-dbo-derived-standalone">
|
||||
<h1>3. Case 1 - DBo Derived, Standalone<a class="headerlink" href="#case-1-dbo-derived-standalone" title="Permalink to this headline">¶</a></h1>
|
||||
<p>As example, we take <tt class="docutils literal"><span class="pre">Library</span></tt>. This a <tt class="docutils literal"><span class="pre">DBo</span></tt> derived class, but we
|
||||
<p>As example, we take <code class="docutils literal"><span class="pre">Library</span></code>. This a <code class="docutils literal"><span class="pre">DBo</span></code> derived class, but we
|
||||
choose not to export the parent classes. From Python, it will appear
|
||||
as a base class.</p>
|
||||
<div class="section" id="class-associated-header-file">
|
||||
<span id="id1"></span><span id="id2"></span><h2>3.1 Class Associated Header File<a class="headerlink" href="#class-associated-header-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Here is the typical content of a header file (for <tt class="docutils literal"><span class="pre">PyLibrary</span></tt>):</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#ifndef PY_LIBRARY_H</span>
|
||||
<p>Here is the typical content of a header file (for <code class="docutils literal"><span class="pre">PyLibrary</span></code>):</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#ifndef PY_LIBRARY_H</span>
|
||||
<span class="cp">#define PY_LIBRARY_H</span>
|
||||
|
||||
<span class="cp">#include "hurricane/isobar/PyHurricane.h"</span>
|
||||
<span class="cp">#include "hurricane/Library.h"</span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyHurricane.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/Library.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">using</span> <span class="k">namespace</span> <span class="n">Hurricane</span><span class="p">;</span>
|
||||
|
@ -277,8 +282,8 @@ as a base class.</p>
|
|||
|
||||
<span class="k">extern</span> <span class="n">PyTypeObject</span> <span class="n">PyTypeLibrary</span><span class="p">;</span>
|
||||
<span class="k">extern</span> <span class="n">PyMethodDef</span> <span class="n">PyLibrary_Methods</span><span class="p">[];</span>
|
||||
<span class="k">extern</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyLibrary_Link</span> <span class="p">(</span> <span class="n">Hurricane</span><span class="o">::</span><span class="n">Library</span><span class="o">*</span> <span class="n">lib</span> <span class="p">);</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="n">PyLibrary_LinkPyType</span> <span class="p">();</span>
|
||||
<span class="k">extern</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyLibrary_Link</span> <span class="p">(</span> <span class="n">Hurricane</span><span class="o">::</span><span class="n">Library</span><span class="o">*</span> <span class="n">lib</span> <span class="p">);</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="nf">PyLibrary_LinkPyType</span> <span class="p">();</span>
|
||||
|
||||
|
||||
<span class="cp">#define IsPyLibrary(v) ( (v)->ob_type == &PyTypeLibrary )</span>
|
||||
|
@ -293,14 +298,14 @@ as a base class.</p>
|
|||
</div>
|
||||
<p>The code is organized as follow:</p>
|
||||
<ol class="arabic">
|
||||
<li><p class="first">It must have, <em>as the first include</em> <tt class="docutils literal"><span class="pre">PyHurricane.h</span></tt>, which provides
|
||||
<li><p class="first">It must have, <em>as the first include</em> <code class="docutils literal"><span class="pre">PyHurricane.h</span></code>, which provides
|
||||
the complete bunch of macros needed to build the module. Then the include
|
||||
of the C++ class we want to wrap (<tt class="docutils literal"><span class="pre">Library.h</span></tt>).</p>
|
||||
of the C++ class we want to wrap (<code class="docutils literal"><span class="pre">Library.h</span></code>).</p>
|
||||
</li>
|
||||
<li><p class="first">As Python is written in C, all the wrapper code has to be but inside
|
||||
an <tt class="docutils literal"><span class="pre">extern</span> <span class="pre">"C"</span></tt> namespace.</p>
|
||||
an <code class="docutils literal"><span class="pre">extern</span> <span class="pre">"C"</span></code> namespace.</p>
|
||||
</li>
|
||||
<li><p class="first">Definition of the wrapped <span class="cb">struct</span>, <tt class="docutils literal"><span class="pre">PyLibrary</span></tt>. It is standard Python here.</p>
|
||||
<li><p class="first">Definition of the wrapped <span class="cb">struct</span>, <code class="docutils literal"><span class="pre">PyLibrary</span></code>. It is standard Python here.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">For our set of macros to work, the name of the pointer to the
|
||||
|
@ -309,21 +314,21 @@ macros defined here must take the name of the class (either in
|
|||
lowercase, camel case or capitals).</p>
|
||||
</div>
|
||||
</li>
|
||||
<li><p class="first">Declaration of the Python type <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt> (standard).</p>
|
||||
<li><p class="first">Declaration of the Python type <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code> (standard).</p>
|
||||
</li>
|
||||
<li><p class="first">Declaration of the Python type table of methods <tt class="docutils literal"><span class="pre">PyLibrary_Methods</span></tt> (standard).</p>
|
||||
<li><p class="first">Declaration of the Python type table of methods <code class="docutils literal"><span class="pre">PyLibrary_Methods</span></code> (standard).</p>
|
||||
</li>
|
||||
</ol>
|
||||
<ol class="arabic simple" id="id3" start="6">
|
||||
<li>Declaration of <tt class="docutils literal"><span class="pre">PyLibrary_Link()</span></tt>, helper to convert a C++ <tt class="docutils literal"><span class="pre">Lybrary</span></tt> into
|
||||
a <tt class="docutils literal"><span class="pre">PyLibrary</span></tt> (put in the support shared library).</li>
|
||||
<li>Declaration of <tt class="docutils literal"><span class="pre">PyLibrary_LinkPyType()</span></tt>, this function setup the class-level
|
||||
function of the new Python type (here, <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt>).</li>
|
||||
<li>Declaration of <code class="docutils literal"><span class="pre">PyLibrary_Link()</span></code>, helper to convert a C++ <code class="docutils literal"><span class="pre">Lybrary</span></code> into
|
||||
a <code class="docutils literal"><span class="pre">PyLibrary</span></code> (put in the support shared library).</li>
|
||||
<li>Declaration of <code class="docutils literal"><span class="pre">PyLibrary_LinkPyType()</span></code>, this function setup the class-level
|
||||
function of the new Python type (here, <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code>).</li>
|
||||
<li>And, lastly, three macros to:<ul>
|
||||
<li><tt class="docutils literal"><span class="pre">IsPylibrary()</span></tt>, know if a Python object is a <tt class="docutils literal"><span class="pre">PyLibrary</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">PYLIBRARY()</span></tt>, force cast (C style) of a <tt class="docutils literal"><span class="pre">PyObject</span></tt> into a <tt class="docutils literal"><span class="pre">PyLibrary</span></tt>.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PYLIBRARY_O()</span></tt>, extract the C++ object (<tt class="docutils literal"><span class="pre">Library*</span></tt>) from the Python
|
||||
object (<tt class="docutils literal"><span class="pre">PyLibrary</span></tt>).</li>
|
||||
<li><code class="docutils literal"><span class="pre">IsPylibrary()</span></code>, know if a Python object is a <code class="docutils literal"><span class="pre">PyLibrary</span></code></li>
|
||||
<li><code class="docutils literal"><span class="pre">PYLIBRARY()</span></code>, force cast (C style) of a <code class="docutils literal"><span class="pre">PyObject</span></code> into a <code class="docutils literal"><span class="pre">PyLibrary</span></code>.</li>
|
||||
<li><code class="docutils literal"><span class="pre">PYLIBRARY_O()</span></code>, extract the C++ object (<code class="docutils literal"><span class="pre">Library*</span></code>) from the Python
|
||||
object (<code class="docutils literal"><span class="pre">PyLibrary</span></code>).</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
|
@ -332,9 +337,9 @@ object (<tt class="docutils literal"><span class="pre">PyLibrary</span></tt>).</
|
|||
<span id="id4"></span><h2>3.2 Class Associated File<a class="headerlink" href="#class-associated-file" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="head-of-the-file">
|
||||
<h3>3.2.1 Head of the file<a class="headerlink" href="#head-of-the-file" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "hurricane/isobar/PyLibrary.h"</span>
|
||||
<span class="cp">#include "hurricane/isobar/PyDataBase.h"</span>
|
||||
<span class="cp">#include "hurricane/isobar/PyCell.h"</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyLibrary.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyDataBase.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyCell.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">using</span> <span class="k">namespace</span> <span class="n">Hurricane</span><span class="p">;</span>
|
||||
|
@ -344,14 +349,14 @@ object (<tt class="docutils literal"><span class="pre">PyLibrary</span></tt>).</
|
|||
<span class="cp">#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Library,lib,function)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>As for the header, all the code must be put inside a <tt class="docutils literal"><span class="pre">extern</span> <span class="pre">"C"</span></tt> namespace.</p>
|
||||
<p>A convenience macro <tt class="docutils literal"><span class="pre">METHOD_HEAD()</span></tt> must be defined, by refining
|
||||
<tt class="docutils literal"><span class="pre">GENERIC_METHOD_HEAD()</span></tt>. This macro will be used in the method wrappers
|
||||
below to cast the <tt class="docutils literal"><span class="pre">_object</span></tt> field of the Python object into the
|
||||
<p>As for the header, all the code must be put inside a <code class="docutils literal"><span class="pre">extern</span> <span class="pre">"C"</span></code> namespace.</p>
|
||||
<p>A convenience macro <code class="docutils literal"><span class="pre">METHOD_HEAD()</span></code> must be defined, by refining
|
||||
<code class="docutils literal"><span class="pre">GENERIC_METHOD_HEAD()</span></code>. This macro will be used in the method wrappers
|
||||
below to cast the <code class="docutils literal"><span class="pre">_object</span></code> field of the Python object into the
|
||||
appropriate C++ class, this is done using a C-style cast.
|
||||
The parameters of that macro are:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The C++ encapsulated class (<tt class="docutils literal"><span class="pre">Library</span></tt>).</li>
|
||||
<li>The C++ encapsulated class (<code class="docutils literal"><span class="pre">Library</span></code>).</li>
|
||||
<li>The name of the <em>variable</em> that will be used to store a pointer
|
||||
to the C++ working object.</li>
|
||||
<li>The name of the C++ method which is to be wrapped.</li>
|
||||
|
@ -362,8 +367,8 @@ to the C++ working object.</li>
|
|||
<p>First, we have to build all the wrappers to the C++ methods of
|
||||
the class. For common predicates, accessors, and mutators macros
|
||||
are supplied.</p>
|
||||
<p>Wrapping of the <tt class="docutils literal"><span class="pre">Library::getCell()</span></tt> method:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyLibrary_getCell</span> <span class="p">(</span> <span class="n">PyLibrary</span><span class="o">*</span> <span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<p>Wrapping of the <code class="docutils literal"><span class="pre">Library::getCell()</span></code> method:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyLibrary_getCell</span> <span class="p">(</span> <span class="n">PyLibrary</span><span class="o">*</span> <span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">Cell</span><span class="o">*</span> <span class="n">cell</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
|
||||
|
||||
|
@ -385,18 +390,18 @@ are supplied.</p>
|
|||
</div>
|
||||
<p>Key points about this method wrapper:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The <tt class="docutils literal"><span class="pre">HTRY</span></tt> / <tt class="docutils literal"><span class="pre">HCATCH</span></tt> macros provides an insulation from the C++
|
||||
<li>The <code class="docutils literal"><span class="pre">HTRY</span></code> / <code class="docutils literal"><span class="pre">HCATCH</span></code> macros provides an insulation from the C++
|
||||
exceptions. If one is emitted, it will be catched and transformed in
|
||||
a Python one. This way, the Python program will be cleanly interrupted
|
||||
and the usual stack trace displayed.</li>
|
||||
<li>The returned value of this method is of type <tt class="docutils literal"><span class="pre">Cell*</span></tt>, we have to
|
||||
transform it into a Python one. This is done with <tt class="docutils literal"><span class="pre">PyCell_Link()</span></tt>.
|
||||
This macro is supplied by the <tt class="docutils literal"><span class="pre">PyCell.h</span></tt> header and this is why
|
||||
<li>The returned value of this method is of type <code class="docutils literal"><span class="pre">Cell*</span></code>, we have to
|
||||
transform it into a Python one. This is done with <code class="docutils literal"><span class="pre">PyCell_Link()</span></code>.
|
||||
This macro is supplied by the <code class="docutils literal"><span class="pre">PyCell.h</span></code> header and this is why
|
||||
it must be included.</li>
|
||||
</ol>
|
||||
<p></p>
|
||||
<p>Wrapping of the <tt class="docutils literal"><span class="pre">Library::create()</span></tt> method:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyLibrary_create</span><span class="p">(</span> <span class="n">PyObject</span><span class="o">*</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<p>Wrapping of the <code class="docutils literal"><span class="pre">Library::create()</span></code> method:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyLibrary_create</span><span class="p">(</span> <span class="n">PyObject</span><span class="o">*</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">PyObject</span><span class="o">*</span> <span class="n">arg0</span><span class="p">;</span>
|
||||
<span class="n">PyObject</span><span class="o">*</span> <span class="n">arg1</span><span class="p">;</span>
|
||||
|
@ -432,42 +437,42 @@ it must be included.</li>
|
|||
<ol class="arabic simple">
|
||||
<li>We want the Python interface to mimic as closely as possible the
|
||||
C++ API. As such, Python object will be created using a static
|
||||
<tt class="docutils literal"><span class="pre">.create()</span></tt> method. So we do not use the usual Python allocation
|
||||
<code class="docutils literal"><span class="pre">.create()</span></code> method. So we do not use the usual Python allocation
|
||||
mechanism.</li>
|
||||
<li>As it is a <em>static</em> method, there is no first argument.</li>
|
||||
<li>Python do not allow function overload like C++. To emulate that
|
||||
behavior we use the <tt class="docutils literal"><span class="pre">__cs</span></tt> object (which is a global variable).<ol class="arabic">
|
||||
<li>Init/reset the <tt class="docutils literal"><span class="pre">__cs</span></tt> object: see <em>step (1)</em>.</li>
|
||||
<li>Call <tt class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></tt>, read every mandatory or optional
|
||||
argument as a Python object (<tt class="docutils literal"><span class="pre">"O&"</span></tt>) and use <tt class="docutils literal"><span class="pre">Converter</span></tt>
|
||||
on each one. <tt class="docutils literal"><span class="pre">Converter</span></tt> will determine the real type of
|
||||
behavior we use the <code class="docutils literal"><span class="pre">__cs</span></code> object (which is a global variable).<ol class="arabic">
|
||||
<li>Init/reset the <code class="docutils literal"><span class="pre">__cs</span></code> object: see <em>step (1)</em>.</li>
|
||||
<li>Call <code class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></code>, read every mandatory or optional
|
||||
argument as a Python object (<code class="docutils literal"><span class="pre">"O&"</span></code>) and use <code class="docutils literal"><span class="pre">Converter</span></code>
|
||||
on each one. <code class="docutils literal"><span class="pre">Converter</span></code> will determine the real type of
|
||||
the Python object given as argument by looking at the
|
||||
encapsulated C++ class. It then update the <tt class="docutils literal"><span class="pre">__cs</span></tt> object.
|
||||
encapsulated C++ class. It then update the <code class="docutils literal"><span class="pre">__cs</span></code> object.
|
||||
Done in <em>step (2)</em></li>
|
||||
<li>After the call to <tt class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></tt>, the function
|
||||
<tt class="docutils literal"><span class="pre">__cs.getObjectIds()</span></tt> will return the <em>signature</em> of
|
||||
<li>After the call to <code class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></code>, the function
|
||||
<code class="docutils literal"><span class="pre">__cs.getObjectIds()</span></code> will return the <em>signature</em> of
|
||||
the various arguments. In our case, the valid signatures
|
||||
will be <tt class="docutils literal"><span class="pre">":db:string"</span></tt> (<em>step (3.a)*a) and ``”:library:string”``
|
||||
will be <code class="docutils literal"><span class="pre">":db:string"</span></code> (<em>step (3.a)*a) and ``”:library:string”``
|
||||
(*step (3.b)</em>).</li>
|
||||
<li>Call the C++ method after extracting the C++ objects from
|
||||
the Python arguments. Note the use of the <tt class="docutils literal"><span class="pre">PYLIBRARY_O()</span></tt>
|
||||
and <tt class="docutils literal"><span class="pre">PYDATABSE_O()</span></tt> macros to perform the conversion.</li>
|
||||
the Python arguments. Note the use of the <code class="docutils literal"><span class="pre">PYLIBRARY_O()</span></code>
|
||||
and <code class="docutils literal"><span class="pre">PYDATABSE_O()</span></code> macros to perform the conversion.</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Return the result, encapsulated through a call to <tt class="docutils literal"><span class="pre">PyLibrary_Link()</span></tt>.</li>
|
||||
<li>Return the result, encapsulated through a call to <code class="docutils literal"><span class="pre">PyLibrary_Link()</span></code>.</li>
|
||||
</ol>
|
||||
<p></p>
|
||||
<p>Wrapping of the <tt class="docutils literal"><span class="pre">Library::destroy()</span></tt> method:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DBoDestroyAttribute</span><span class="p">(</span><span class="n">PyLibrary_destroy</span><span class="p">,</span> <span class="n">PyLibrary</span><span class="p">)</span>
|
||||
<p>Wrapping of the <code class="docutils literal"><span class="pre">Library::destroy()</span></code> method:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DBoDestroyAttribute</span><span class="p">(</span><span class="n">PyLibrary_destroy</span><span class="p">,</span> <span class="n">PyLibrary</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For C++ classes <strong>that are derived</strong> from <tt class="docutils literal"><span class="pre">DBo</span></tt>, the destroy method
|
||||
wrapper must be defined using the macro <tt class="docutils literal"><span class="pre">DBoDestroyAttribute()</span></tt>.
|
||||
<p>For C++ classes <strong>that are derived</strong> from <code class="docutils literal"><span class="pre">DBo</span></code>, the destroy method
|
||||
wrapper must be defined using the macro <code class="docutils literal"><span class="pre">DBoDestroyAttribute()</span></code>.
|
||||
This macro implements the bi-directional communication mechanism
|
||||
using <tt class="docutils literal"><span class="pre">Hurricane::Property</span></tt>. It <strong>must not</strong> be used for
|
||||
non <tt class="docutils literal"><span class="pre">DBo</span></tt> derived classes.</p>
|
||||
using <code class="docutils literal"><span class="pre">Hurricane::Property</span></code>. It <strong>must not</strong> be used for
|
||||
non <code class="docutils literal"><span class="pre">DBo</span></code> derived classes.</p>
|
||||
<p>Defining the method table of the PyLibrary type:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">PyMethodDef</span> <span class="n">PyLibrary_Methods</span><span class="p">[]</span> <span class="o">=</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">PyMethodDef</span> <span class="n">PyLibrary_Methods</span><span class="p">[]</span> <span class="o">=</span>
|
||||
<span class="p">{</span> <span class="p">{</span> <span class="s">"create"</span> <span class="p">,</span> <span class="p">(</span><span class="n">PyCFunction</span><span class="p">)</span><span class="n">PyLibrary_create</span> <span class="p">,</span> <span class="n">METH_VARARGS</span><span class="o">|</span><span class="n">METH_STATIC</span>
|
||||
<span class="p">,</span> <span class="s">"Creates a new library."</span> <span class="p">}</span>
|
||||
<span class="p">,</span> <span class="p">{</span> <span class="s">"getCell"</span> <span class="p">,</span> <span class="p">(</span><span class="n">PyCFunction</span><span class="p">)</span><span class="n">PyLibrary_getCell</span><span class="p">,</span> <span class="n">METH_VARARGS</span>
|
||||
|
@ -478,79 +483,79 @@ non <tt class="docutils literal"><span class="pre">DBo</span></tt> derived class
|
|||
<span class="p">};</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This is standard Python/C API. The name of the <tt class="docutils literal"><span class="pre">PyMethodDef</span></tt> table must be
|
||||
named from the class: <tt class="docutils literal"><span class="pre">PyLibrary_Methods</span></tt>.</p>
|
||||
<p>This is standard Python/C API. The name of the <code class="docutils literal"><span class="pre">PyMethodDef</span></code> table must be
|
||||
named from the class: <code class="docutils literal"><span class="pre">PyLibrary_Methods</span></code>.</p>
|
||||
</div>
|
||||
<div class="section" id="python-type-linking">
|
||||
<h3>3.2.3 Python Type Linking<a class="headerlink" href="#python-type-linking" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Defining the <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt> class methods and the type linking function.</p>
|
||||
<p>Defining the <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code> class methods and the type linking function.</p>
|
||||
<p>Those are the functions for the Python object itself to work, not the
|
||||
wrapped method from the C++ class.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">At this point we <strong>do not</strong> define the <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt> itself.
|
||||
<p class="last">At this point we <strong>do not</strong> define the <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code> itself.
|
||||
Only it’s functions and a function to set them up <em>once</em> the
|
||||
type will be defined.</p>
|
||||
</div>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DBoDeleteMethod</span><span class="p">(</span><span class="n">Library</span><span class="p">)</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DBoDeleteMethod</span><span class="p">(</span><span class="n">Library</span><span class="p">)</span>
|
||||
<span class="n">PyTypeObjectLinkPyType</span><span class="p">(</span><span class="n">Library</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The macro <tt class="docutils literal"><span class="pre">DBoDeleteMethod()</span></tt> define the function to delete a
|
||||
<tt class="docutils literal"><span class="pre">PyLibrary</span></tt> <em>Python</em> object. Again, do not mistake it for the deletion
|
||||
of the C++ class (implemented by <tt class="docutils literal"><span class="pre">DBoDestroyAttribute()</span></tt>).
|
||||
Here again, <tt class="docutils literal"><span class="pre">DBoDeleteMethod()</span></tt> is specially tailored for
|
||||
<tt class="docutils literal"><span class="pre">DBo</span></tt> derived classes.</p>
|
||||
<p id="pylibrary-linkpytype">To define <tt class="docutils literal"><span class="pre">PyLibrary_LinkPyType()</span></tt>, use the <tt class="docutils literal"><span class="pre">PyTypeObjectLinkPyType()</span></tt>
|
||||
macro. This macro is specific for <tt class="docutils literal"><span class="pre">DBo</span></tt> derived classes that are seen as
|
||||
<p>The macro <code class="docutils literal"><span class="pre">DBoDeleteMethod()</span></code> define the function to delete a
|
||||
<code class="docutils literal"><span class="pre">PyLibrary</span></code> <em>Python</em> object. Again, do not mistake it for the deletion
|
||||
of the C++ class (implemented by <code class="docutils literal"><span class="pre">DBoDestroyAttribute()</span></code>).
|
||||
Here again, <code class="docutils literal"><span class="pre">DBoDeleteMethod()</span></code> is specially tailored for
|
||||
<code class="docutils literal"><span class="pre">DBo</span></code> derived classes.</p>
|
||||
<p id="pylibrary-linkpytype">To define <code class="docutils literal"><span class="pre">PyLibrary_LinkPyType()</span></code>, use the <code class="docutils literal"><span class="pre">PyTypeObjectLinkPyType()</span></code>
|
||||
macro. This macro is specific for <code class="docutils literal"><span class="pre">DBo</span></code> derived classes that are seen as
|
||||
base classes under Python (i.e. we don’t bother exposing the base
|
||||
class under Python). <tt class="docutils literal"><span class="pre">PyLibrary_LinkPyType()</span></tt> setup the class functions
|
||||
in the <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt> type object, it <strong>must</strong> be called in the
|
||||
Python module this class is part of (in this case: <tt class="docutils literal"><span class="pre">PyHurricane.cpp</span></tt>).
|
||||
class under Python). <code class="docutils literal"><span class="pre">PyLibrary_LinkPyType()</span></code> setup the class functions
|
||||
in the <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code> type object, it <strong>must</strong> be called in the
|
||||
Python module this class is part of (in this case: <code class="docutils literal"><span class="pre">PyHurricane.cpp</span></code>).
|
||||
This particular flavor of the macro <em>will define</em> and setup the
|
||||
following class functions:</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal"><span class="pre">PyTypeLibrary.tp_compare</span></tt> (defined by the macro).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyTypeLibrary.tp_repr</span></tt> (defined by the macro).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyTypeLibrary.tp_str</span></tt> (defined by the macro).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyTypeLibrary.tp_hash</span></tt> (defined by the macro).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyTypeLibrary.tp_methods</span></tt> sets to the previously defined <tt class="docutils literal"><span class="pre">PyLibrary_Methods</span></tt> table.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">PyTypeLibrary.tp_dealloc</span></tt> is set to a function that <em>must</em> be named <tt class="docutils literal"><span class="pre">PyLibrary_DeAlloc</span></tt>,
|
||||
this is what <tt class="docutils literal"><span class="pre">DBoDeleteMethod</span></tt> does. It is <em>not</em> done by <tt class="docutils literal"><span class="pre">PyTypeObjectLinkPyType</span></tt>.</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyTypeLibrary.tp_compare</span></code> (defined by the macro).</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyTypeLibrary.tp_repr</span></code> (defined by the macro).</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyTypeLibrary.tp_str</span></code> (defined by the macro).</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyTypeLibrary.tp_hash</span></code> (defined by the macro).</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyTypeLibrary.tp_methods</span></code> sets to the previously defined <code class="docutils literal"><span class="pre">PyLibrary_Methods</span></code> table.</li>
|
||||
<li><code class="docutils literal"><span class="pre">PyTypeLibrary.tp_dealloc</span></code> is set to a function that <em>must</em> be named <code class="docutils literal"><span class="pre">PyLibrary_DeAlloc</span></code>,
|
||||
this is what <code class="docutils literal"><span class="pre">DBoDeleteMethod</span></code> does. It is <em>not</em> done by <code class="docutils literal"><span class="pre">PyTypeObjectLinkPyType</span></code>.</li>
|
||||
</ul>
|
||||
<p>Defining the <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt> type:</p>
|
||||
<p>Defining the <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code> type:</p>
|
||||
</div>
|
||||
<div class="section" id="the-shared-library-part">
|
||||
<h3>3.2.4 The Shared Library Part<a class="headerlink" href="#the-shared-library-part" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This part will be put in a separate supporting shared library, allowing
|
||||
other Python module to link against it (and make use of its symbols).</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DBoLinkCreateMethod</span><span class="p">(</span><span class="n">Library</span><span class="p">)</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DBoLinkCreateMethod</span><span class="p">(</span><span class="n">Library</span><span class="p">)</span>
|
||||
<span class="n">PyTypeObjectDefinitions</span><span class="p">(</span><span class="n">Library</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>To define <tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt>, use the <tt class="docutils literal"><span class="pre">PyTypeObjectDefinitions()</span></tt> macro.
|
||||
<p>To define <code class="docutils literal"><span class="pre">PyTypeLibrary</span></code>, use the <code class="docutils literal"><span class="pre">PyTypeObjectDefinitions()</span></code> macro.
|
||||
This macro is specific for classes that, as exposed by Python,
|
||||
are neither <em>derived</em> classes nor <em>base</em> classes for others.
|
||||
That is, they are standalone from the inheritance point of view.</p>
|
||||
<p>The <tt class="docutils literal"><span class="pre">DBoLinkCreateMethod()</span></tt> macro will define the <tt class="docutils literal"><span class="pre">PyLibrary_Link()</span></tt>
|
||||
function which is responsible for encapsulating a C++ <tt class="docutils literal"><span class="pre">Library</span></tt> object
|
||||
into a Python <tt class="docutils literal"><span class="pre">PyLibrary</span></tt> one.</p>
|
||||
<p>The <code class="docutils literal"><span class="pre">DBoLinkCreateMethod()</span></code> macro will define the <code class="docutils literal"><span class="pre">PyLibrary_Link()</span></code>
|
||||
function which is responsible for encapsulating a C++ <code class="docutils literal"><span class="pre">Library</span></code> object
|
||||
into a Python <code class="docutils literal"><span class="pre">PyLibrary</span></code> one.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="python-module-c-namespace">
|
||||
<h2>3.3 Python Module (C++ namespace)<a class="headerlink" href="#python-module-c-namespace" title="Permalink to this headline">¶</a></h2>
|
||||
<p>We use the Python module to replicate the C++ <em>namespace</em>. Thus, for the
|
||||
<tt class="docutils literal"><span class="pre">Hurricane</span></tt> namespace we create a Python <tt class="docutils literal"><span class="pre">Hurricane</span></tt> module which is
|
||||
defined in the <tt class="docutils literal"><span class="pre">PyHurricane.cpp</span></tt> file, then we add into that module
|
||||
<code class="docutils literal"><span class="pre">Hurricane</span></code> namespace we create a Python <code class="docutils literal"><span class="pre">Hurricane</span></code> module which is
|
||||
defined in the <code class="docutils literal"><span class="pre">PyHurricane.cpp</span></code> file, then we add into that module
|
||||
dictionary all the Python types encapsulating the C++ classes of that
|
||||
namespace.</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DL_EXPORT</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="n">initHurricane</span> <span class="p">()</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DL_EXPORT</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="n">initHurricane</span> <span class="p">()</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">PyLibrary_LinkPyType</span><span class="p">();</span> <span class="c1">// step 1.</span>
|
||||
|
||||
<span class="n">PYTYPE_READY</span><span class="p">(</span> <span class="n">Library</span> <span class="p">)</span> <span class="c1">// step 2.</span>
|
||||
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"library"</span><span class="p">,</span> <span class="o">&</span><span class="n">PyTypeLibrary</span><span class="p">,</span> <span class="s">"<Library>"</span><span class="p">,</span> <span class="kc">false</span> <span class="p">);</span> <span class="c1">// step 3.</span>
|
||||
<span class="n">__cs</span><span class="p">.</span><span class="n">addType</span><span class="p">(</span> <span class="s">"library"</span><span class="p">,</span> <span class="o">&</span><span class="n">PyTypeLibrary</span><span class="p">,</span> <span class="s">"<Library>"</span><span class="p">,</span> <span class="nb">false</span> <span class="p">);</span> <span class="c1">// step 3.</span>
|
||||
|
||||
<span class="n">PyObject</span><span class="o">*</span> <span class="n">module</span> <span class="o">=</span> <span class="n">Py_InitModule</span><span class="p">(</span> <span class="s">"Hurricane"</span><span class="p">,</span> <span class="n">PyHurricane_Methods</span> <span class="p">);</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">module</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
|
||||
|
@ -564,24 +569,24 @@ namespace.</p>
|
|||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The <tt class="docutils literal"><span class="pre">initHurricane()</span></tt> initialisation function shown above has
|
||||
been scrubbed of everything not relevant to the <tt class="docutils literal"><span class="pre">PyLibrary</span></tt> class.
|
||||
The integration of the <tt class="docutils literal"><span class="pre">PyLibrary</span></tt> class into the module needs
|
||||
<p>The <code class="docutils literal"><span class="pre">initHurricane()</span></code> initialisation function shown above has
|
||||
been scrubbed of everything not relevant to the <code class="docutils literal"><span class="pre">PyLibrary</span></code> class.
|
||||
The integration of the <code class="docutils literal"><span class="pre">PyLibrary</span></code> class into the module needs
|
||||
four steps:</p>
|
||||
<ol class="arabic">
|
||||
<li><p class="first">A call to <a class="reference internal" href="#pylibrary-linkpytype">PyLibrary_LinkPyType()</a> to hook the Python type functions
|
||||
in the Python type object.</p>
|
||||
</li>
|
||||
<li><p class="first">A call to the <tt class="docutils literal"><span class="pre">PYTYPE_READY()</span></tt> macro (standard Python).</p>
|
||||
<li><p class="first">A call to the <code class="docutils literal"><span class="pre">PYTYPE_READY()</span></code> macro (standard Python).</p>
|
||||
</li>
|
||||
<li><p class="first">Registering the type into the <tt class="docutils literal"><span class="pre">__cs</span></tt> object, with <tt class="docutils literal"><span class="pre">addType()</span></tt>.
|
||||
<li><p class="first">Registering the type into the <code class="docutils literal"><span class="pre">__cs</span></code> object, with <code class="docutils literal"><span class="pre">addType()</span></code>.
|
||||
The arguments are self explanatory, save for the last which is a
|
||||
boolean to tell if this is a <em>derived</em> class or not.</p>
|
||||
</li>
|
||||
<li><p class="first">Adding the type object (<tt class="docutils literal"><span class="pre">PyTypeLibrary</span></tt>) into the dictionnary of
|
||||
<li><p class="first">Adding the type object (<code class="docutils literal"><span class="pre">PyTypeLibrary</span></code>) into the dictionnary of
|
||||
the module itself. This allow to mimic closely the C++ syntax:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">Hurricane</span>
|
||||
<span class="n">lib</span> <span class="o">=</span> <span class="n">Hurricane</span><span class="o">.</span><span class="n">Library</span><span class="o">.</span><span class="n">create</span><span class="p">(</span> <span class="n">db</span><span class="p">,</span> <span class="s">'root'</span> <span class="p">)</span>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">Hurricane</span>
|
||||
<span class="n">lib</span> <span class="o">=</span> <span class="n">Hurricane</span><span class="o">.</span><span class="n">Library</span><span class="o">.</span><span class="n">create</span><span class="p">(</span> <span class="n">db</span><span class="p">,</span> <span class="s1">'root'</span> <span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
|
@ -610,7 +615,7 @@ the module itself. This allow to mimic closely the C++ syntax:</p>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="7. No C++ Hurricane::Name encapsulation" href="Name.html"/>
|
||||
|
@ -193,7 +195,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="NonDBo.html#id1">5.2 Class File</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">6. Encapsulating DbU</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">6. Encapsulating DbU</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Name.html">7. No C++ Hurricane::Name encapsulation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -253,19 +258,19 @@
|
|||
|
||||
<div class="section" id="encapsulating-dbu">
|
||||
<h1>6. Encapsulating DbU<a class="headerlink" href="#encapsulating-dbu" title="Permalink to this headline">¶</a></h1>
|
||||
<p>While <tt class="docutils literal"><span class="pre">Hurricane::DbU</span></tt> is a class, the <tt class="docutils literal"><span class="pre">Hurricane::DbU::Unit</span></tt> is only
|
||||
a <tt class="docutils literal"><span class="pre">typedef</span></tt> over <tt class="docutils literal"><span class="pre">uint64_t</span></tt>. The <tt class="docutils literal"><span class="pre">DbU</span></tt> class only provides a set of
|
||||
<p>While <code class="docutils literal"><span class="pre">Hurricane::DbU</span></code> is a class, the <code class="docutils literal"><span class="pre">Hurricane::DbU::Unit</span></code> is only
|
||||
a <code class="docutils literal"><span class="pre">typedef</span></code> over <code class="docutils literal"><span class="pre">uint64_t</span></code>. The <code class="docutils literal"><span class="pre">DbU</span></code> class only provides a set of
|
||||
static methods to manipulate and convert to and from other units.
|
||||
At Python level, <tt class="docutils literal"><span class="pre">DbU::Unit</span></tt> will be stored in plain <tt class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></tt>.</p>
|
||||
<p>When a <tt class="docutils literal"><span class="pre">DbU::Unit</span></tt> argument is expected in a Python functions, just use
|
||||
the <tt class="docutils literal"><span class="pre">DbU::Unit</span> <span class="pre">PyAny_AsLong(</span> <span class="pre">PyObject*</span> <span class="pre">)</span></tt> function to convert it.</p>
|
||||
At Python level, <code class="docutils literal"><span class="pre">DbU::Unit</span></code> will be stored in plain <code class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></code>.</p>
|
||||
<p>When a <code class="docutils literal"><span class="pre">DbU::Unit</span></code> argument is expected in a Python functions, just use
|
||||
the <code class="docutils literal"><span class="pre">DbU::Unit</span>  <span class="pre">PyAny_AsLong(</span> <span class="pre">PyObject*</span> <span class="pre">)</span></code> function to convert it.</p>
|
||||
<p>For example, if we explicit the expension of:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DirectSetLongAttribute</span><span class="p">(</span><span class="n">PyPoint_SetX</span><span class="p">,</span><span class="n">setX</span><span class="p">,</span><span class="n">PyPoint</span><span class="p">,</span><span class="n">Point</span><span class="p">)</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DirectSetLongAttribute</span><span class="p">(</span><span class="n">PyPoint_SetX</span><span class="p">,</span><span class="n">setX</span><span class="p">,</span><span class="n">PyPoint</span><span class="p">,</span><span class="n">Point</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p>We would get:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyPoint_setX</span> <span class="p">(</span> <span class="n">PyPoint</span> <span class="o">*</span><span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyPoint_setX</span> <span class="p">(</span> <span class="n">PyPoint</span> <span class="o">*</span><span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">Point</span><span class="o">*</span> <span class="n">cobject</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o"><</span><span class="n">Point</span><span class="o">*></span><span class="p">(</span> <span class="n">self</span><span class="o">-></span><span class="n">_object</span> <span class="p">);</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">cobject</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
|
||||
|
@ -284,12 +289,12 @@ the <tt class="docutils literal"><span class="pre">DbU::Unit</span> <span
|
|||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For the other way around, use <tt class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">PyDbU_FromLong(</span> <span class="pre">DbU::Unit</span> <span class="pre">)</span></tt>.</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="n">DirectGetLongAttribute</span><span class="p">(</span><span class="n">PyPoint_GetX</span><span class="p">,</span><span class="n">getX</span><span class="p">,</span><span class="n">PyPoint</span><span class="p">,</span><span class="n">Point</span><span class="p">)</span>
|
||||
<p>For the other way around, use <code class="docutils literal"><span class="pre">PyObject*</span> <span class="pre">PyDbU_FromLong(</span> <span class="pre">DbU::Unit</span> <span class="pre">)</span></code>.</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="n">DirectGetLongAttribute</span><span class="p">(</span><span class="n">PyPoint_GetX</span><span class="p">,</span><span class="n">getX</span><span class="p">,</span><span class="n">PyPoint</span><span class="p">,</span><span class="n">Point</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>We would get:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyPoint_GetX</span> <span class="p">(</span> <span class="n">PyPoint</span> <span class="o">*</span><span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyPoint_GetX</span> <span class="p">(</span> <span class="n">PyPoint</span> <span class="o">*</span><span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span> <span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">Point</span><span class="o">*</span> <span class="n">cobject</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o"><</span><span class="n">Point</span><span class="o">*></span><span class="p">(</span> <span class="n">self</span><span class="o">-></span><span class="n">_object</span> <span class="p">);</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">cobject</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
|
||||
|
@ -324,7 +329,7 @@ the <tt class="docutils literal"><span class="pre">DbU::Unit</span> <span
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="2. Basic File Structure and CMake configuration" href="Configuration.html"/>
|
||||
|
@ -158,7 +160,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../Kite/Kite.html">Kite Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Unicorn/Unicorn.html">Unicorn Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Hurricane Python/C++ API Tutorial</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">1. Introduction</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">1. Introduction</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#first-a-disclaimer">1.1 First, A Disclaimer</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#about-technical-choices">1.2 About Technical Choices</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#botched-design">1.3 Botched Design</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -268,17 +273,17 @@ You only have to respect some naming convention.</li>
|
|||
my mastering of template programming was less than complete. This is why this
|
||||
interface is build with old fashioned C macro instead of C++ template.</p>
|
||||
<p>It is my hope that at some point in the future I will have time to completly
|
||||
rewrite it, borrowing the interface from <tt class="docutils literal"><span class="pre">boost::python</span></tt>.</p>
|
||||
rewrite it, borrowing the interface from <code class="docutils literal"><span class="pre">boost::python</span></code>.</p>
|
||||
</div>
|
||||
<div class="section" id="about-technical-choices">
|
||||
<h2>1.2 About Technical Choices<a class="headerlink" href="#about-technical-choices" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Some would say, why not use <em>off the shelf</em> wrappers like <tt class="docutils literal"><span class="pre">swig</span></tt>
|
||||
or <tt class="docutils literal"><span class="pre">boost::python</span></tt>, here are some clues.</p>
|
||||
<p>Some would say, why not use <em>off the shelf</em> wrappers like <code class="docutils literal"><span class="pre">swig</span></code>
|
||||
or <code class="docutils literal"><span class="pre">boost::python</span></code>, here are some clues.</p>
|
||||
<ol class="arabic">
|
||||
<li><p class="first"><strong>Partial exposure of the C++ class tree.</strong> We expose at Python level
|
||||
C++ base classes, only if they provides common methods that we want
|
||||
to see. Otherwise, we just show them as base classes under Python.
|
||||
For instance <tt class="docutils literal"><span class="pre">Library</span></tt> is derived from <tt class="docutils literal"><span class="pre">DBo</span></tt>, but we won’t see
|
||||
For instance <code class="docutils literal"><span class="pre">Library</span></code> is derived from <code class="docutils literal"><span class="pre">DBo</span></code>, but we won’t see
|
||||
it under Python.</p>
|
||||
</li>
|
||||
<li><p class="first"><strong>Bi-directional communication.</strong> When a Python object is deleted, the
|
||||
|
@ -293,14 +298,14 @@ C++ pointer. So our Python objects can be warned by the C++ objects
|
|||
that they are no longer valid and any other operation than the
|
||||
deletion should result in a severe non-blocking error.</p>
|
||||
<p>To be precise, this apply to persistent object in the C++ database,
|
||||
like <tt class="docutils literal"><span class="pre">Cell</span></tt>, <tt class="docutils literal"><span class="pre">Net</span></tt>, <tt class="docutils literal"><span class="pre">Instance</span></tt> or <tt class="docutils literal"><span class="pre">Component</span></tt>. Short lived
|
||||
objects like <tt class="docutils literal"><span class="pre">Box</span></tt> or <tt class="docutils literal"><span class="pre">Point</span></tt> retains the classic Python behavior.</p>
|
||||
<p>Another aspect is that, for all derived <tt class="docutils literal"><span class="pre">DBo</span></tt> objects, one and only
|
||||
one Python object is associated. For one given <tt class="docutils literal"><span class="pre">Instance</span></tt> object we
|
||||
will always return the <em>same</em> <tt class="docutils literal"><span class="pre">PyInstance</span></tt> object, thanks to the
|
||||
like <code class="docutils literal"><span class="pre">Cell</span></code>, <code class="docutils literal"><span class="pre">Net</span></code>, <code class="docutils literal"><span class="pre">Instance</span></code> or <code class="docutils literal"><span class="pre">Component</span></code>. Short lived
|
||||
objects like <code class="docutils literal"><span class="pre">Box</span></code> or <code class="docutils literal"><span class="pre">Point</span></code> retains the classic Python behavior.</p>
|
||||
<p>Another aspect is that, for all derived <code class="docutils literal"><span class="pre">DBo</span></code> objects, one and only
|
||||
one Python object is associated. For one given <code class="docutils literal"><span class="pre">Instance</span></code> object we
|
||||
will always return the <em>same</em> <code class="docutils literal"><span class="pre">PyInstance</span></code> object, thanks to the
|
||||
bi-directional link. Obviously, the <em>reference count</em> of the
|
||||
<tt class="docutils literal"><span class="pre">PyInstance</span></tt> is managed accordingly. This mechanism is implemented
|
||||
by the <tt class="docutils literal"><span class="pre">PyInstance_Link()</span></tt> function.</p>
|
||||
<code class="docutils literal"><span class="pre">PyInstance</span></code> is managed accordingly. This mechanism is implemented
|
||||
by the <code class="docutils literal"><span class="pre">PyInstance_Link()</span></code> function.</p>
|
||||
</li>
|
||||
<li><p class="first"><strong>Linking accross modules.</strong> As far as I understand, the wrappers
|
||||
are for monolithic libraries. That is, you wrap the entire library
|
||||
|
@ -322,17 +327,17 @@ requiring the functions will link against the associated shared
|
|||
library.</li>
|
||||
</ul>
|
||||
<p>Each module file will be compiled <em>twice</em>, once to build the Python
|
||||
module (<tt class="docutils literal"><span class="pre">__PYTHON_MODULE</span></tt> is defined) and once to build the supporting
|
||||
shared library (<tt class="docutils literal"><span class="pre">__PYTHON_MODULE__</span></tt> <strong>not</strong> defined). This tricky
|
||||
double compilation is taken care of though the <tt class="docutils literal"><span class="pre">add_python_module</span></tt>
|
||||
<tt class="docutils literal"><span class="pre">cmake</span></tt> macro.</p>
|
||||
module (<code class="docutils literal"><span class="pre">__PYTHON_MODULE</span></code> is defined) and once to build the supporting
|
||||
shared library (<code class="docutils literal"><span class="pre">__PYTHON_MODULE__</span></code> <strong>not</strong> defined). This tricky
|
||||
double compilation is taken care of though the <code class="docutils literal"><span class="pre">add_python_module</span></code>
|
||||
<code class="docutils literal"><span class="pre">cmake</span></code> macro.</p>
|
||||
<p>For the core Hurricane library we will have:</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal"><span class="pre">Hurricane.so</span></tt> the Python module (use with: <tt class="docutils literal"><span class="pre">import</span> <span class="pre">Hurricane</span></tt>).</li>
|
||||
<li><tt class="docutils literal"><span class="pre">libisobar.so.1.0</span></tt> the supporting shared library.</li>
|
||||
<li><code class="docutils literal"><span class="pre">Hurricane.so</span></code> the Python module (use with: <code class="docutils literal"><span class="pre">import</span> <span class="pre">Hurricane</span></code>).</li>
|
||||
<li><code class="docutils literal"><span class="pre">libisobar.so.1.0</span></code> the supporting shared library.</li>
|
||||
</ul>
|
||||
<p>The <tt class="docutils literal"><span class="pre">PyLibrary.cpp</span></tt> file will have the following structure:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "hurricane/isobar/PyLibrary.h"</span>
|
||||
<p>The <code class="docutils literal"><span class="pre">PyLibrary.cpp</span></code> file will have the following structure:</p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyLibrary.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
|
||||
|
@ -340,21 +345,21 @@ double compilation is taken care of though the <tt class="docutils literal"><spa
|
|||
|
||||
<span class="cp">#if defined(__PYTHON_MODULE__)</span>
|
||||
|
||||
<span class="cp"> // +=================================================================+</span>
|
||||
<span class="cp"> // | "PyLibrary" Python Module Code Part |</span>
|
||||
<span class="cp"> // +=================================================================+</span>
|
||||
<span class="cp"> //</span>
|
||||
<span class="cp"> // The classic part of a Python module. Goes into Hurricane.so.</span>
|
||||
<span class="c1">// +=================================================================+</span>
|
||||
<span class="c1">// | "PyLibrary" Python Module Code Part |</span>
|
||||
<span class="c1">// +=================================================================+</span>
|
||||
<span class="c1">//</span>
|
||||
<span class="c1">// The classic part of a Python module. Goes into Hurricane.so.</span>
|
||||
|
||||
|
||||
<span class="cp">#else </span><span class="c1">// End of Python Module Code Part.</span>
|
||||
|
||||
<span class="cp"> // x=================================================================x</span>
|
||||
<span class="cp"> // | "PyLibrary" Shared Library Code Part |</span>
|
||||
<span class="cp"> // x=================================================================x</span>
|
||||
<span class="cp"> //</span>
|
||||
<span class="cp"> // Functions here will be part of the associated shared library and</span>
|
||||
<span class="cp"> // made available to all other Python modules. Goes into libisobar.so.1.0</span>
|
||||
<span class="c1">// x=================================================================x</span>
|
||||
<span class="c1">// | "PyLibrary" Shared Library Code Part |</span>
|
||||
<span class="c1">// x=================================================================x</span>
|
||||
<span class="c1">//</span>
|
||||
<span class="c1">// Functions here will be part of the associated shared library and</span>
|
||||
<span class="c1">// made available to all other Python modules. Goes into libisobar.so.1.0</span>
|
||||
|
||||
|
||||
<span class="cp"># endif </span><span class="c1">// Shared Library Code Part.</span>
|
||||
|
@ -372,12 +377,12 @@ modules, but directly uses linker capabilities.</p>
|
|||
<div class="section" id="botched-design">
|
||||
<h2>1.3 Botched Design<a class="headerlink" href="#botched-design" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The mechanism to compute the signature of a call to a Python function,
|
||||
the <tt class="docutils literal"><span class="pre">__cs</span></tt> object, is much too complex and, in fact, not needed.
|
||||
the <code class="docutils literal"><span class="pre">__cs</span></code> object, is much too complex and, in fact, not needed.
|
||||
At some point I may root it out, but it is used in so many places...</p>
|
||||
<p>What I should have used the <tt class="docutils literal"><span class="pre">"O!"</span></tt> capablity of <tt class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></tt>,
|
||||
<p>What I should have used the <code class="docutils literal"><span class="pre">"O!"</span></code> capablity of <code class="docutils literal"><span class="pre">PyArg_ParseTuple()</span></code>,
|
||||
like in the code below:</p>
|
||||
<p></p>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">PyContact_create</span> <span class="p">(</span> <span class="n">PyObject</span><span class="o">*</span><span class="p">,</span> <span class="n">PyObject</span> <span class="o">*</span><span class="n">args</span> <span class="p">)</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">PyObject</span><span class="o">*</span> <span class="nf">PyContact_create</span> <span class="p">(</span> <span class="n">PyObject</span><span class="o">*</span><span class="p">,</span> <span class="n">PyObject</span> <span class="o">*</span><span class="n">args</span> <span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">Contact</span><span class="o">*</span> <span class="n">contact</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
|
||||
<span class="n">HTRY</span>
|
||||
|
@ -438,7 +443,7 @@ like in the code below:</p>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="Symbolic to Real Conversion in Alliance" href="../RDS/index.html"/>
|
||||
|
@ -194,7 +196,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="DbU.html">6. Encapsulating DbU</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">7. No C++ Hurricane::Name encapsulation</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">7. No C++ Hurricane::Name encapsulation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../RDS/index.html">Symbolic to Real Conversion in Alliance</a><ul>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -277,7 +282,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Hurricane Python/C++ API Tutorial" href="index.html"/>
|
||||
<link rel="next" title="6. Encapsulating DbU" href="DbU.html"/>
|
||||
|
@ -187,7 +189,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="DBoHierarchy.html#python-module">4.8 Python Module</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">5. Case 3 - Non-DBo Standalone Classe</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">5. Case 3 - Non-DBo Standalone Classe</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#class-header">5.1 Class Header</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#class-file">5.2 Class File</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#id1">5.2 Class File</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -253,30 +258,30 @@
|
|||
|
||||
<div class="section" id="case-3-non-dbo-standalone-classe">
|
||||
<h1>5. Case 3 - Non-DBo Standalone Classe<a class="headerlink" href="#case-3-non-dbo-standalone-classe" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Let’s have a look at the encapsulation of <tt class="docutils literal"><span class="pre">Hurricane::Point</span></tt>.</p>
|
||||
<p>Let’s have a look at the encapsulation of <code class="docutils literal"><span class="pre">Hurricane::Point</span></code>.</p>
|
||||
<p>Non-BDo derived classes do not support the bi-directionnal communication.
|
||||
So each Python object is associated with one C++ object. The C++ object
|
||||
is created and deleted along with the Python one. This behavior implies
|
||||
that the C++ object is <em>copy constructible</em> (which should be the case).</p>
|
||||
<div class="section" id="class-header">
|
||||
<h2>5.1 Class Header<a class="headerlink" href="#class-header" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-header-file"><em>3.1 Class Associated Header File</em></a>:</p>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-header-file"><span class="std std-ref">3.1 Class Associated Header File</span></a>:</p>
|
||||
<ul class="simple">
|
||||
<li>There is no <tt class="docutils literal"><span class="pre">PyPoint_Link()</span></tt> function, as it’s related to the
|
||||
<li>There is no <code class="docutils literal"><span class="pre">PyPoint_Link()</span></code> function, as it’s related to the
|
||||
bi-directional communication mechanism.</li>
|
||||
</ul>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><strong>About the _object attribute</strong> of the PyPoint. As the C++ object life span
|
||||
(<tt class="docutils literal"><span class="pre">Point</span></tt>) is linked to the Python (<tt class="docutils literal"><span class="pre">PyPoint</span></tt>) one, we may have used a
|
||||
(<code class="docutils literal"><span class="pre">Point</span></code>) is linked to the Python (<code class="docutils literal"><span class="pre">PyPoint</span></code>) one, we may have used a
|
||||
value instead of a pointer. It is best to keep a pointer as the macros
|
||||
written for <tt class="docutils literal"><span class="pre">DBo</span></tt> derived classes will remain usables.</p>
|
||||
written for <code class="docutils literal"><span class="pre">DBo</span></code> derived classes will remain usables.</p>
|
||||
</div>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#ifndef ISOBAR_PY_POINT_H</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#ifndef ISOBAR_PY_POINT_H</span>
|
||||
<span class="cp">#define ISOBAR_PY_POINT_H</span>
|
||||
|
||||
<span class="cp">#include "hurricane/isobar/PyHurricane.h"</span>
|
||||
<span class="cp">#include "hurricane/Point.h"</span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyHurricane.h"</span><span class="cp"></span>
|
||||
<span class="cp">#include</span> <span class="cpf">"hurricane/Point.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">extern</span> <span class="s">"C"</span> <span class="p">{</span>
|
||||
|
@ -288,7 +293,7 @@ written for <tt class="docutils literal"><span class="pre">DBo</span></tt> deriv
|
|||
|
||||
<span class="k">extern</span> <span class="n">PyTypeObject</span> <span class="n">PyTypePoint</span><span class="p">;</span>
|
||||
<span class="k">extern</span> <span class="n">PyMethodDef</span> <span class="n">PyPoint_Methods</span><span class="p">[];</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="n">PyPoint_LinkPyType</span><span class="p">();</span>
|
||||
<span class="k">extern</span> <span class="kt">void</span> <span class="nf">PyPoint_LinkPyType</span><span class="p">();</span>
|
||||
|
||||
<span class="cp">#define IsPyPoint(v) ( (v)->ob_type == &PyTypePoint )</span>
|
||||
<span class="cp">#define PYPOINT(v) ( (PyPoint*)(v) )</span>
|
||||
|
@ -304,21 +309,21 @@ written for <tt class="docutils literal"><span class="pre">DBo</span></tt> deriv
|
|||
</div>
|
||||
<div class="section" id="class-file">
|
||||
<h2>5.2 Class File<a class="headerlink" href="#class-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-file"><em>3.2 Class Associated File</em></a>:</p>
|
||||
<p>Changes from <a class="reference internal" href="DBoStandalone.html#class-associated-file"><span class="std std-ref">3.2 Class Associated File</span></a>:</p>
|
||||
<ul class="simple">
|
||||
<li>As there is no <tt class="docutils literal"><span class="pre">PyPoint_Link()</span></tt> function, there is no call to any
|
||||
flavor of the <tt class="docutils literal"><span class="pre">DBoLinkcreatemethod()</span></tt> macro (obvious as it’s <em>not</em>
|
||||
a <tt class="docutils literal"><span class="pre">DBo</span></tt>).</li>
|
||||
<li>To use the standard Python constructor, we have to define <tt class="docutils literal"><span class="pre">PyPoint_NEW()</span></tt>
|
||||
and <tt class="docutils literal"><span class="pre">PyPoint_Init()</span></tt> functions, I’m not absolutely certain that the later
|
||||
<li>As there is no <code class="docutils literal"><span class="pre">PyPoint_Link()</span></code> function, there is no call to any
|
||||
flavor of the <code class="docutils literal"><span class="pre">DBoLinkcreatemethod()</span></code> macro (obvious as it’s <em>not</em>
|
||||
a <code class="docutils literal"><span class="pre">DBo</span></code>).</li>
|
||||
<li>To use the standard Python constructor, we have to define <code class="docutils literal"><span class="pre">PyPoint_NEW()</span></code>
|
||||
and <code class="docutils literal"><span class="pre">PyPoint_Init()</span></code> functions, I’m not absolutely certain that the later
|
||||
needs to be defined (that part is still not clear to me from the Python doc).</li>
|
||||
<li>As it’s not a <tt class="docutils literal"><span class="pre">DBo</span></tt> there is no <tt class="docutils literal"><span class="pre">destroy()</span></tt> method, so no call to
|
||||
<tt class="docutils literal"><span class="pre">DirectDestroyMethod()</span></tt></li>
|
||||
<li>Lastly, as this object has a <tt class="docutils literal"><span class="pre">PyPoint_NEW()</span></tt> (field <tt class="docutils literal"><span class="pre">tp_new</span></tt>) and
|
||||
a <tt class="docutils literal"><span class="pre">PyPoint_Init()</span></tt> (field <tt class="docutils literal"><span class="pre">tp_init</span></tt>) we have to use the macro
|
||||
<tt class="docutils literal"><span class="pre">PyTypeObjectLinkPyTypeNewInit()</span></tt> to define <tt class="docutils literal"><span class="pre">PyPoint_LinkPyType()</span></tt>.</li>
|
||||
<li>As it’s not a <code class="docutils literal"><span class="pre">DBo</span></code> there is no <code class="docutils literal"><span class="pre">destroy()</span></code> method, so no call to
|
||||
<code class="docutils literal"><span class="pre">DirectDestroyMethod()</span></code></li>
|
||||
<li>Lastly, as this object has a <code class="docutils literal"><span class="pre">PyPoint_NEW()</span></code> (field <code class="docutils literal"><span class="pre">tp_new</span></code>) and
|
||||
a <code class="docutils literal"><span class="pre">PyPoint_Init()</span></code> (field <code class="docutils literal"><span class="pre">tp_init</span></code>) we have to use the macro
|
||||
<code class="docutils literal"><span class="pre">PyTypeObjectLinkPyTypeNewInit()</span></code> to define <code class="docutils literal"><span class="pre">PyPoint_LinkPyType()</span></code>.</li>
|
||||
</ul>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include "hurricane/isobar/PyPoint.h"</span>
|
||||
<div class="highlight-c++"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">"hurricane/isobar/PyPoint.h"</span><span class="cp"></span>
|
||||
|
||||
<span class="k">namespace</span> <span class="n">Isobar</span> <span class="p">{</span>
|
||||
<span class="k">using</span> <span class="k">namespace</span> <span class="n">Hurricane</span><span class="p">;</span>
|
||||
|
@ -362,7 +367,7 @@ a <tt class="docutils literal"><span class="pre">PyPoint_Init()</span></tt> (fie
|
|||
<span class="n">pyPoint</span><span class="o">-></span><span class="n">_object</span> <span class="o">=</span> <span class="n">point</span><span class="p">;</span>
|
||||
<span class="n">HCATCH</span>
|
||||
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">PyObject</span><span class="o">*</span><span class="p">)</span><span class="n">pyPoint</span><span class="p">;</span>
|
||||
<span class="nf">return</span> <span class="p">(</span><span class="n">PyObject</span><span class="o">*</span><span class="p">)</span><span class="n">pyPoint</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">static</span> <span class="kt">int</span> <span class="n">PyPoint_Init</span> <span class="p">(</span> <span class="n">PyPoint</span><span class="o">*</span> <span class="n">self</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">args</span><span class="p">,</span> <span class="n">PyObject</span><span class="o">*</span> <span class="n">kwargs</span> <span class="p">)</span>
|
||||
|
@ -402,7 +407,7 @@ a <tt class="docutils literal"><span class="pre">PyPoint_Init()</span></tt> (fie
|
|||
<div class="section" id="id1">
|
||||
<h2>5.2 Class File<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
|
||||
<p>To put it bluntly, there is no difference in the Python module for
|
||||
a standalone <tt class="docutils literal"><span class="pre">DBo</span></tt> class and a non-<tt class="docutils literal"><span class="pre">DBo</span></tt> class.</p>
|
||||
a standalone <code class="docutils literal"><span class="pre">DBo</span></code> class and a non-<code class="docutils literal"><span class="pre">DBo</span></code> class.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -427,7 +432,7 @@ a standalone <tt class="docutils literal"><span class="pre">DBo</span></tt> clas
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="1. Introduction" href="Introduction.html"/>
|
||||
<link rel="prev" title="Unicorn Reference" href="../Unicorn/Unicorn.html"/>
|
||||
|
@ -156,7 +158,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../Katabatic/Katabatic.html">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Kite/Kite.html">Kite Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Unicorn/Unicorn.html">Unicorn Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Hurricane Python/C++ API Tutorial</a><ul>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Hurricane Python/C++ API Tutorial</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Introduction.html">1. Introduction</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="Introduction.html#first-a-disclaimer">1.1 First, A Disclaimer</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="Introduction.html#about-technical-choices">1.2 About Technical Choices</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -309,7 +314,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,8 +30,12 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Symbolic to Real Conversion in Alliance" href="index.html"/>
|
||||
<link rel="next" title="LEF API Reference" href="../lefapi/lefapi.html"/>
|
||||
<link rel="prev" title="Symbolic to Real Conversion in Alliance" href="index.html"/>
|
||||
|
||||
|
||||
|
@ -197,22 +200,25 @@
|
|||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Symbolic to Real Conversion in Alliance</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">Symbolic Layout</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Symbolic Layout</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#symbolic-components">Symbolic Components</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#symbolic-segments">Symbolic Segments</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -270,15 +276,15 @@
|
|||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr class="row-even"><td>Segments</td>
|
||||
<td><tt class="docutils literal"><span class="pre">phseg</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">phseg</span></code></td>
|
||||
<td>Oriented segments with a width and an orientation.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>VIAs & contacts</td>
|
||||
<td><tt class="docutils literal"><span class="pre">phvia</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">phvia</span></code></td>
|
||||
<td>Boils down to just a point.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>Big VIAs & Big Contacts</td>
|
||||
<td><tt class="docutils literal"><span class="pre">phvia</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">phvia</span></code></td>
|
||||
<td>Point with a width and a height
|
||||
That is a rectangle of width by height centered
|
||||
on the VIA coordinates.</td>
|
||||
|
@ -302,98 +308,98 @@ control how the object is translated in many <em>real rectangles</em>.</p>
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr class="row-even"><td rowspan="12"><tt class="docutils literal"><span class="pre">phseg</span></tt></td>
|
||||
<tr class="row-even"><td rowspan="12"><code class="docutils literal"><span class="pre">phseg</span></code></td>
|
||||
<td><span class="sc">nwell</span></td>
|
||||
<td>Segment</td>
|
||||
<td>N Well</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PWELL</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PWELL</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>P Well</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">NDIF</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">NDIF</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>N Diffusion</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PDIF</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PDIF</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>P Diffusion</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">NTIE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">NTIE</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>N Tie</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PTIE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PTIE</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>P Tie</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">NTRANS</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">NTRANS</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>N transistor, in <span class="sc">Alliance</span>, a transistor
|
||||
is represented as a segment (it’s grid).</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PTRANS</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PTRANS</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>P transistor</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">POLY</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">POLY</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>Polysilicium</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">ALUx</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">ALUx</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>Metal level <em>x</em></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">CALUx</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">CALUx</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>Metal level <em>x</em>, that can be used by the
|
||||
upper hierarchical level as a connector.
|
||||
From the layout point of view it is the
|
||||
same as <tt class="docutils literal"><span class="pre">ALUx</span></tt>.</td>
|
||||
same as <code class="docutils literal"><span class="pre">ALUx</span></code>.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">TALUx</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">TALUx</span></code></td>
|
||||
<td>Segment</td>
|
||||
<td>Blockage for metal level <em>x</em>. Will
|
||||
diseappear in the real layout as it is an
|
||||
information for the P&R tools only.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td rowspan="9"><tt class="docutils literal"><span class="pre">phvia</span></tt></td>
|
||||
<td><tt class="docutils literal"><span class="pre">CONT_BODY_N</span></tt></td>
|
||||
<tr class="row-even"><td rowspan="9"><code class="docutils literal"><span class="pre">phvia</span></code></td>
|
||||
<td><code class="docutils literal"><span class="pre">CONT_BODY_N</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact to N Well</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">CONT_BODY_P</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CONT_BODY_P</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact to P Well</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">CONT_DIF_N</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">CONT_DIF_N</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact to N Diffusion</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">CONT_DIF_P</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CONT_DIF_P</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact to P Diffusion</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">CONT_POLY</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">CONT_POLY</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact to polysilicium</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">CONT_VIA</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">CONT_VIA</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact between metal1 and metal2</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">CONT_VIAx</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">CONT_VIAx</span></code></td>
|
||||
<td>VIA, BIGVIA</td>
|
||||
<td>Contact between metal <em>x</em> and metal <em>x+1</em>.
|
||||
The index is the the one of the bottom
|
||||
metal of the VIA.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">C_X_N</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">C_X_N</span></code></td>
|
||||
<td>VIA</td>
|
||||
<td>N transistor corner, to build transistor
|
||||
bend. Not used anymore in recent technos</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">C_X_P</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">C_X_P</span></code></td>
|
||||
<td>VIA</td>
|
||||
<td>P transistor corner, to build transistor
|
||||
bend. Not used anymore in recent technos</td>
|
||||
|
@ -403,11 +409,11 @@ bend. Not used anymore in recent technos</td>
|
|||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">Not all association of object and symbolic layers are meaningful.
|
||||
For instance you cannot associate a contact to a <tt class="docutils literal"><span class="pre">NTRANS</span></tt> layer.</p>
|
||||
For instance you cannot associate a contact to a <code class="docutils literal"><span class="pre">NTRANS</span></code> layer.</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">The symbolic layer associated with blockages is prefixed by a <tt class="docutils literal"><span class="pre">T</span></tt>,
|
||||
<p class="last">The symbolic layer associated with blockages is prefixed by a <code class="docutils literal"><span class="pre">T</span></code>,
|
||||
for <em>transparency</em>, which may seems silly. It is for historical reasons,
|
||||
it started as a true transparency, but at some point we had to invert
|
||||
the meaning (blockage) with the rise of over-the-cell routing, but the
|
||||
|
@ -417,9 +423,9 @@ name stuck...</p>
|
|||
<div class="section" id="symbolic-segments">
|
||||
<h2>Symbolic Segments<a class="headerlink" href="#symbolic-segments" title="Permalink to this headline">¶</a></h2>
|
||||
<p>In <span class="sc">Alliance</span>, segments are oriented (up, down, left, right). This disambiguate
|
||||
the left or right side when using the <tt class="docutils literal"><span class="pre">LCW</span></tt> and <tt class="docutils literal"><span class="pre">RCW</span></tt> rules in the <span class="sc">rds</span> file.
|
||||
the left or right side when using the <code class="docutils literal"><span class="pre">LCW</span></code> and <code class="docutils literal"><span class="pre">RCW</span></code> rules in the <span class="sc">rds</span> file.
|
||||
It allows to generate, if needed, asymetric object in the real layout file.</p>
|
||||
<p> <img alt="Symbolic Segment Orientations" class="align-middle" src="../_images/SegmentOrientation.png" style="width: 50%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/SegmentOrientation.png"><img alt="Symbolic Segment Orientations" class="align-middle" src="../_images/SegmentOrientation.png" style="width: 50%;" /></a> </p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -446,42 +452,43 @@ conterpart.</p>
|
|||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr class="row-even"><td>Layout editor</td>
|
||||
<td><tt class="docutils literal"><span class="pre">graal</span></tt></td>
|
||||
<td><tt class="docutils literal"><span class="pre">ALL</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">graal</span></code></td>
|
||||
<td><code class="docutils literal"><span class="pre">ALL</span></code></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>Design Rule Checker</td>
|
||||
<td><tt class="docutils literal"><span class="pre">druc</span></tt></td>
|
||||
<td><tt class="docutils literal"><span class="pre">ALL</span></tt>, <tt class="docutils literal"><span class="pre">DRC</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">druc</span></code></td>
|
||||
<td><code class="docutils literal"><span class="pre">ALL</span></code>, <code class="docutils literal"><span class="pre">DRC</span></code></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>Electrical extractor</td>
|
||||
<td><tt class="docutils literal"><span class="pre">cougar</span></tt></td>
|
||||
<td><tt class="docutils literal"><span class="pre">ALL</span></tt>, <tt class="docutils literal"><span class="pre">EXT</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">cougar</span></code></td>
|
||||
<td><code class="docutils literal"><span class="pre">ALL</span></code>, <code class="docutils literal"><span class="pre">EXT</span></code></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>The symbolic to real layout translator</td>
|
||||
<td><tt class="docutils literal"><span class="pre">s2r</span></tt></td>
|
||||
<td><tt class="docutils literal"><span class="pre">ALL</span></tt></td>
|
||||
<td><code class="docutils literal"><span class="pre">s2r</span></code></td>
|
||||
<td><code class="docutils literal"><span class="pre">ALL</span></code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="section" id="physical-grid-lambda-value">
|
||||
<h2>Physical Grid & Lambda Value<a class="headerlink" href="#physical-grid-lambda-value" title="Permalink to this headline">¶</a></h2>
|
||||
<p>RDS file:</p>
|
||||
<div class="highlight-python"><pre>DEFINE PHYSICAL_GRID 0.005
|
||||
DEFINE LAMBDA 0.09</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">DEFINE</span> <span class="n">PHYSICAL_GRID</span> <span class="mf">0.005</span>
|
||||
<span class="n">DEFINE</span> <span class="n">LAMBDA</span> <span class="mf">0.09</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Tells that the physical grid (founder grid) step is 0.005µm and the lambda has
|
||||
a value of 0.09µm. That is, one lambda is 18 grid steps.</p>
|
||||
<p>We can distinguish two kind of <span class="sc">rds</span> files:</p>
|
||||
<ul class="simple">
|
||||
<li>The <em>1µm</em> kind, odd segment widths and coordinates are allowed, but the <tt class="docutils literal"><span class="pre">LAMBDA</span></tt>
|
||||
<li>The <em>1µm</em> kind, odd segment widths and coordinates are allowed, but the <code class="docutils literal"><span class="pre">LAMBDA</span></code>
|
||||
value <strong>must</strong> represent an <em>even</em> number of foundry grid step.</li>
|
||||
<li>The <em>2µm</em> kind, segments widths and coordinates must all be even. And in that case
|
||||
the <tt class="docutils literal"><span class="pre">LAMBDA</span></tt> value can be any multiple of the foundry grid.</li>
|
||||
the <code class="docutils literal"><span class="pre">LAMBDA</span></code> value can be any multiple of the foundry grid.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-segment-table">
|
||||
<h2>The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table<a class="headerlink" href="#the-mbk-to-rds-segment-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table control the way segments are translated into
|
||||
<h2>The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table<a class="headerlink" href="#the-mbk-to-rds-segment-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table control the way segments are translated into
|
||||
real rectangles. Be aware that we are translating <em>segments</em> and not <em>rectangles</em>.
|
||||
Segments are defined by their axis (source & target points) and their width.
|
||||
The geometrical transformations are described according to that model.
|
||||
|
@ -491,80 +498,81 @@ Obviously, they are either horizontal or vertical.</p>
|
|||
<li><p class="first">The segment is translated into one or more physical rectangles.
|
||||
The generated rectangles depends on the tool which is actually
|
||||
using <span class="sc">rds</span> and the flag for the considered real layer.
|
||||
For instance, real layers flagged with <tt class="docutils literal"><span class="pre">DRC</span></tt> will be generated
|
||||
for <tt class="docutils literal"><span class="pre">s2r</span></tt> (for the <tt class="docutils literal"><span class="pre">cif</span></tt> or <tt class="docutils literal"><span class="pre">gds</span></tt>) and <tt class="docutils literal"><span class="pre">druc</span></tt>, but will not
|
||||
be shown under <tt class="docutils literal"><span class="pre">graal</span></tt>.</p>
|
||||
For instance, real layers flagged with <code class="docutils literal"><span class="pre">DRC</span></code> will be generated
|
||||
for <code class="docutils literal"><span class="pre">s2r</span></code> (for the <code class="docutils literal"><span class="pre">cif</span></code> or <code class="docutils literal"><span class="pre">gds</span></code>) and <code class="docutils literal"><span class="pre">druc</span></code>, but will not
|
||||
be shown under <code class="docutils literal"><span class="pre">graal</span></code>.</p>
|
||||
</li>
|
||||
<li><p class="first">Translation into one real layer. <em>First</em> the source & target coordinates and width
|
||||
of the symbolic segment are multiplied by the <tt class="docutils literal"><span class="pre">LAMBDA</span></tt> value to obtain a real
|
||||
segment. <em>Then</em> one of the <tt class="docutils literal"><span class="pre">VW</span></tt>, <tt class="docutils literal"><span class="pre">LCW</span></tt> or <tt class="docutils literal"><span class="pre">RCW</span></tt> transformation is applied to
|
||||
of the symbolic segment are multiplied by the <code class="docutils literal"><span class="pre">LAMBDA</span></code> value to obtain a real
|
||||
segment. <em>Then</em> one of the <code class="docutils literal"><span class="pre">VW</span></code>, <code class="docutils literal"><span class="pre">LCW</span></code> or <code class="docutils literal"><span class="pre">RCW</span></code> transformation is applied to
|
||||
that segment to get the final real rectangle.</p>
|
||||
<ul>
|
||||
<li><p class="first"><tt class="docutils literal"><span class="pre">VW</span></tt> for Variable Width, expand the real layer staying centered from the
|
||||
<li><p class="first"><code class="docutils literal"><span class="pre">VW</span></code> for Variable Width, expand the real layer staying centered from the
|
||||
original one. In those rules, the third number is not used, it is only here
|
||||
to make the life easier for the parser...</p>
|
||||
<p> <img alt="RDS Variable Width Rule" class="align-middle" src="../_images/RDS_VW.png" style="width: 60%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/RDS_VW.png"><img alt="RDS Variable Width Rule" class="align-middle" src="../_images/RDS_VW.png" style="width: 60%;" /></a> </p>
|
||||
</li>
|
||||
<li><p class="first"><tt class="docutils literal"><span class="pre">LCW</span></tt> or <tt class="docutils literal"><span class="pre">RCW</span></tt> for Left/Right Constant Width, create an off-center rectangle
|
||||
of fixed width relatively to the real segment. Note that the <tt class="docutils literal"><span class="pre">SP</span></tt> number
|
||||
<li><p class="first"><code class="docutils literal"><span class="pre">LCW</span></code> or <code class="docutils literal"><span class="pre">RCW</span></code> for Left/Right Constant Width, create an off-center rectangle
|
||||
of fixed width relatively to the real segment. Note that the <code class="docutils literal"><span class="pre">SP</span></code> number
|
||||
is the distance <em>between the edge</em> of the real segment and the edge of the
|
||||
generated real rectangle (<em>not</em> from the axis). It is often zero.</p>
|
||||
<p> <img alt="RDS Left Constant Width Rule" class="align-middle" src="../_images/RDS_LCW.png" style="width: 40%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/RDS_LCW.png"><img alt="RDS Left Constant Width Rule" class="align-middle" src="../_images/RDS_LCW.png" style="width: 40%;" /></a> </p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
<p></p>
|
||||
<p>Examples:</p>
|
||||
<div class="highlight-python"><pre>TABLE MBK_TO_RDS_SEGMENT
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">TABLE</span> <span class="n">MBK_TO_RDS_SEGMENT</span>
|
||||
|
||||
# (Case 1)
|
||||
ALU1 RDS_ALU1 VW 0.18 0.09 0.0 ALL
|
||||
<span class="c1"># (Case 1)</span>
|
||||
<span class="n">ALU1</span> <span class="n">RDS_ALU1</span> <span class="n">VW</span> <span class="mf">0.18</span> <span class="mf">0.09</span> <span class="mf">0.0</span> <span class="n">ALL</span>
|
||||
|
||||
# (Case 2)
|
||||
NDIF RDS_NDIF VW 0.18 0.0 0.0 ALL \
|
||||
RDS_ACTIV VW 0.18 0.0 0.0 DRC \
|
||||
RDS_NIMP VW 0.36 0.36 0.0 DRC
|
||||
<span class="c1"># (Case 2)</span>
|
||||
<span class="n">NDIF</span> <span class="n">RDS_NDIF</span> <span class="n">VW</span> <span class="mf">0.18</span> <span class="mf">0.0</span> <span class="mf">0.0</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ACTIV</span> <span class="n">VW</span> <span class="mf">0.18</span> <span class="mf">0.0</span> <span class="mf">0.0</span> <span class="n">DRC</span> \
|
||||
<span class="n">RDS_NIMP</span> <span class="n">VW</span> <span class="mf">0.36</span> <span class="mf">0.36</span> <span class="mf">0.0</span> <span class="n">DRC</span>
|
||||
|
||||
# (Case 3)
|
||||
NTRANS RDS_POLY VW 0.27 0.00 0.0 ALL \
|
||||
RDS_GATE VW 0.27 0.00 0.0 DRC \
|
||||
RDS_NDIF LCW 0.0 0.27 0.0 EXT \
|
||||
RDS_NDIF RCW 0.0 0.27 0.0 EXT \
|
||||
RDS_NDIF VW 0.0 0.72 0.0 DRC \
|
||||
RDS_ACTIV VW 0.0 0.72 0.0 ALL \
|
||||
RDS_NIMP VW 0.18 1.26 0.0 DRC
|
||||
<span class="c1"># (Case 3)</span>
|
||||
<span class="n">NTRANS</span> <span class="n">RDS_POLY</span> <span class="n">VW</span> <span class="mf">0.27</span> <span class="mf">0.00</span> <span class="mf">0.0</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_GATE</span> <span class="n">VW</span> <span class="mf">0.27</span> <span class="mf">0.00</span> <span class="mf">0.0</span> <span class="n">DRC</span> \
|
||||
<span class="n">RDS_NDIF</span> <span class="n">LCW</span> <span class="mf">0.0</span> <span class="mf">0.27</span> <span class="mf">0.0</span> <span class="n">EXT</span> \
|
||||
<span class="n">RDS_NDIF</span> <span class="n">RCW</span> <span class="mf">0.0</span> <span class="mf">0.27</span> <span class="mf">0.0</span> <span class="n">EXT</span> \
|
||||
<span class="n">RDS_NDIF</span> <span class="n">VW</span> <span class="mf">0.0</span> <span class="mf">0.72</span> <span class="mf">0.0</span> <span class="n">DRC</span> \
|
||||
<span class="n">RDS_ACTIV</span> <span class="n">VW</span> <span class="mf">0.0</span> <span class="mf">0.72</span> <span class="mf">0.0</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_NIMP</span> <span class="n">VW</span> <span class="mf">0.18</span> <span class="mf">1.26</span> <span class="mf">0.0</span> <span class="n">DRC</span>
|
||||
|
||||
END</pre>
|
||||
<span class="n">END</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><span class="fboxtt">Case 1</span> the <tt class="docutils literal"><span class="pre">ALU1</span></tt> is translated in exacltly one real rectangle of
|
||||
<tt class="docutils literal"><span class="pre">RDS_ALU1</span></tt>, both ends are extended by 0.18µm and it’s width is increased
|
||||
<p><span class="fboxtt">Case 1</span> the <code class="docutils literal"><span class="pre">ALU1</span></code> is translated in exacltly one real rectangle of
|
||||
<code class="docutils literal"><span class="pre">RDS_ALU1</span></code>, both ends are extended by 0.18µm and it’s width is increased
|
||||
by 0.09µm.</p>
|
||||
<p><span class="fboxtt">Case 2</span> the <tt class="docutils literal"><span class="pre">NDIF</span></tt> will be translated into only one segment
|
||||
under <tt class="docutils literal"><span class="pre">graal</span></tt>, for symbolic visualization. And into three real rectangles
|
||||
for <tt class="docutils literal"><span class="pre">s2r</span></tt> and <tt class="docutils literal"><span class="pre">druc</span></tt>.</p>
|
||||
<p><span class="fboxtt">Case 3</span> the <tt class="docutils literal"><span class="pre">NTRANS</span></tt>, associated to a transistor is a little bit
|
||||
more complex, the generated shapes are different for the extractor <tt class="docutils literal"><span class="pre">cougar</span></tt>
|
||||
in one hand, and for both <tt class="docutils literal"><span class="pre">druc</span></tt> & <tt class="docutils literal"><span class="pre">s2r</span></tt> in the other hand.</p>
|
||||
<p><span class="fboxtt">Case 2</span> the <code class="docutils literal"><span class="pre">NDIF</span></code> will be translated into only one segment
|
||||
under <code class="docutils literal"><span class="pre">graal</span></code>, for symbolic visualization. And into three real rectangles
|
||||
for <code class="docutils literal"><span class="pre">s2r</span></code> and <code class="docutils literal"><span class="pre">druc</span></code>.</p>
|
||||
<p><span class="fboxtt">Case 3</span> the <code class="docutils literal"><span class="pre">NTRANS</span></code>, associated to a transistor is a little bit
|
||||
more complex, the generated shapes are different for the extractor <code class="docutils literal"><span class="pre">cougar</span></code>
|
||||
in one hand, and for both <code class="docutils literal"><span class="pre">druc</span></code> & <code class="docutils literal"><span class="pre">s2r</span></code> in the other hand.</p>
|
||||
<ul>
|
||||
<li><p class="first">For the extractor (<tt class="docutils literal"><span class="pre">EXT</span></tt> & <tt class="docutils literal"><span class="pre">ALL</span></tt> flags) there will be four rectangles
|
||||
<li><p class="first">For the extractor (<code class="docutils literal"><span class="pre">EXT</span></code> & <code class="docutils literal"><span class="pre">ALL</span></code> flags) there will be four rectangles
|
||||
generateds:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The gate (<tt class="docutils literal"><span class="pre">RDS_GATE</span></tt>)</li>
|
||||
<li>The left diffusion of the transistor (source or drain) (<tt class="docutils literal"><span class="pre">RDS_NDIF</span></tt>).</li>
|
||||
<li>The right diffusion of the transistor (drain or source) (<tt class="docutils literal"><span class="pre">RDS_NDIF</span></tt>).</li>
|
||||
<li>The active area (<tt class="docutils literal"><span class="pre">RDS_ACTIV</span></tt>).</li>
|
||||
<li>The gate (<code class="docutils literal"><span class="pre">RDS_GATE</span></code>)</li>
|
||||
<li>The left diffusion of the transistor (source or drain) (<code class="docutils literal"><span class="pre">RDS_NDIF</span></code>).</li>
|
||||
<li>The right diffusion of the transistor (drain or source) (<code class="docutils literal"><span class="pre">RDS_NDIF</span></code>).</li>
|
||||
<li>The active area (<code class="docutils literal"><span class="pre">RDS_ACTIV</span></code>).</li>
|
||||
</ol>
|
||||
<p>As the extractor must kept separate the source and the drain of the transistor,
|
||||
they are generated as two offset rectangles, using the <tt class="docutils literal"><span class="pre">LCW</span></tt> and <tt class="docutils literal"><span class="pre">RCW</span></tt> directives.</p>
|
||||
they are generated as two offset rectangles, using the <code class="docutils literal"><span class="pre">LCW</span></code> and <code class="docutils literal"><span class="pre">RCW</span></code> directives.</p>
|
||||
</li>
|
||||
<li><p class="first">For <tt class="docutils literal"><span class="pre">s2r</span></tt> and <tt class="docutils literal"><span class="pre">druc</span></tt> (<tt class="docutils literal"><span class="pre">DRC</span></tt> and <tt class="docutils literal"><span class="pre">ALL</span></tt>), five rectangles are generateds:</p>
|
||||
<li><p class="first">For <code class="docutils literal"><span class="pre">s2r</span></code> and <code class="docutils literal"><span class="pre">druc</span></code> (<code class="docutils literal"><span class="pre">DRC</span></code> and <code class="docutils literal"><span class="pre">ALL</span></code>), five rectangles are generateds:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The poly (<tt class="docutils literal"><span class="pre">RDS_POLY</span></tt>).</li>
|
||||
<li>The gate (<tt class="docutils literal"><span class="pre">RDS_GATE</span></tt>).</li>
|
||||
<li>The diffusion, as one rectangle that covers both the <tt class="docutils literal"><span class="pre">LCW</span></tt> and the <tt class="docutils literal"><span class="pre">RCW</span></tt> (<tt class="docutils literal"><span class="pre">RDS_NDIF</span></tt>).</li>
|
||||
<li>The active area (<tt class="docutils literal"><span class="pre">RDS_ACTIV</span></tt>).</li>
|
||||
<li>The N implantation (<tt class="docutils literal"><span class="pre">RDS_NIMP</span></tt>).</li>
|
||||
<li>The poly (<code class="docutils literal"><span class="pre">RDS_POLY</span></code>).</li>
|
||||
<li>The gate (<code class="docutils literal"><span class="pre">RDS_GATE</span></code>).</li>
|
||||
<li>The diffusion, as one rectangle that covers both the <code class="docutils literal"><span class="pre">LCW</span></code> and the <code class="docutils literal"><span class="pre">RCW</span></code> (<code class="docutils literal"><span class="pre">RDS_NDIF</span></code>).</li>
|
||||
<li>The active area (<code class="docutils literal"><span class="pre">RDS_ACTIV</span></code>).</li>
|
||||
<li>The N implantation (<code class="docutils literal"><span class="pre">RDS_NIMP</span></code>).</li>
|
||||
</ol>
|
||||
<p>In the layout send to the foundry, the source & drain are draw as one rectangle
|
||||
across the gate area (the transistor being defined by the intersection of both
|
||||
|
@ -574,7 +582,7 @@ rectangles).</p>
|
|||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-via-table">
|
||||
<h2>The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table<a class="headerlink" href="#the-mbk-to-rds-via-table" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table<a class="headerlink" href="#the-mbk-to-rds-via-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This table is to translate <em>default</em> VIAs into real via. In the symbolic layout
|
||||
the default VIA is simply a point and a set of layers. All layers are converted
|
||||
in squares shapes centered on the VIA coordinate. The one dimension given is the
|
||||
|
@ -582,67 +590,69 @@ size of the side of that square.</p>
|
|||
<p>Note that although we are refering to VIAs, which for the purists are between two
|
||||
metal layers, this table also describe <em>contacts</em>.</p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python"><pre>TABLE MBK_TO_RDS_VIA
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">TABLE</span> <span class="n">MBK_TO_RDS_VIA</span>
|
||||
|
||||
CONT_DIF_P RDS_PDIF 0.54 ALL \
|
||||
RDS_CONT 0.18 ALL \
|
||||
RDS_ALU1 0.36 ALL \
|
||||
RDS_ACTIV 0.54 DRC \
|
||||
RDS_PIMP 0.90 DRC
|
||||
<span class="n">CONT_DIF_P</span> <span class="n">RDS_PDIF</span> <span class="mf">0.54</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_CONT</span> <span class="mf">0.18</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU1</span> <span class="mf">0.36</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ACTIV</span> <span class="mf">0.54</span> <span class="n">DRC</span> \
|
||||
<span class="n">RDS_PIMP</span> <span class="mf">0.90</span> <span class="n">DRC</span>
|
||||
|
||||
CONT_POLY RDS_POLY 0.54 ALL \
|
||||
RDS_CONT 0.18 ALL \
|
||||
RDS_ALU1 0.36 ALL
|
||||
<span class="n">CONT_POLY</span> <span class="n">RDS_POLY</span> <span class="mf">0.54</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_CONT</span> <span class="mf">0.18</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU1</span> <span class="mf">0.36</span> <span class="n">ALL</span>
|
||||
|
||||
CONT_VIA RDS_ALU1 0.45 ALL \
|
||||
RDS_VIA1 0.27 ALL \
|
||||
RDS_ALU2 0.45 ALL
|
||||
<span class="n">CONT_VIA</span> <span class="n">RDS_ALU1</span> <span class="mf">0.45</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_VIA1</span> <span class="mf">0.27</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU2</span> <span class="mf">0.45</span> <span class="n">ALL</span>
|
||||
|
||||
END</pre>
|
||||
<span class="n">END</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><strong>In CONT_DIF_P</strong> you may see that only three layers will be shown under
|
||||
<tt class="docutils literal"><span class="pre">graal</span></tt>, but five will be generated in the <tt class="docutils literal"><span class="pre">gds</span></tt> layout.</p>
|
||||
<code class="docutils literal"><span class="pre">graal</span></code>, but five will be generated in the <code class="docutils literal"><span class="pre">gds</span></code> layout.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-bigvia-hole-table">
|
||||
<h2>The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table<a class="headerlink" href="#the-mbk-to-rds-bigvia-hole-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>In <tt class="docutils literal"><span class="pre">s2r</span></tt>, when generating BIGVIAs, the matrix of holes they contains is
|
||||
<h2>The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table<a class="headerlink" href="#the-mbk-to-rds-bigvia-hole-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>In <code class="docutils literal"><span class="pre">s2r</span></code>, when generating BIGVIAs, the matrix of holes they contains is
|
||||
not draw relative to the position of the BIGVIA itself, but on a grid which
|
||||
is common througout all the design real layout. This is to allow overlap
|
||||
between two BIGVIA without risking the holes matrix to be not exactly overlapping.
|
||||
As a consequence, when visualizing the <tt class="docutils literal"><span class="pre">gds</span></tt> file, the holes may not be centerend
|
||||
As a consequence, when visualizing the <code class="docutils literal"><span class="pre">gds</span></code> file, the holes may not be centerend
|
||||
inside one individual BIGVIA.</p>
|
||||
<p>The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table define the global hole matrix for the whole
|
||||
<p>The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table define the global hole matrix for the whole
|
||||
design. The first number is the individual hole side and the second the grid step
|
||||
(edge to edge). The figure below show the hole generation.</p>
|
||||
<p> <img alt="BIGVIA holes" class="align-middle" src="../_images/bigvia-1.png" style="width: 40%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/bigvia-1.png"><img alt="BIGVIA holes" class="align-middle" src="../_images/bigvia-1.png" style="width: 40%;" /></a> </p>
|
||||
<p>Example of BIGVIA overlap:</p>
|
||||
<p> <img alt="BIGVIA holes overlap" class="align-middle" src="../_images/bigvia-2.png" style="width: 40%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/bigvia-2.png"><img alt="BIGVIA holes overlap" class="align-middle" src="../_images/bigvia-2.png" style="width: 40%;" /></a> </p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python"><pre>TABLE MBK_TO_RDS_BIGVIA_HOLE
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">TABLE</span> <span class="n">MBK_TO_RDS_BIGVIA_HOLE</span>
|
||||
|
||||
CONT_VIA RDS_VIA1 0.27 0.27 ALL
|
||||
CONT_VIA2 RDS_VIA2 0.27 0.27 ALL
|
||||
CONT_VIA3 RDS_VIA3 0.27 0.27 ALL
|
||||
CONT_VIA4 RDS_VIA4 0.27 0.27 ALL
|
||||
CONT_VIA5 RDS_VIA5 0.36 0.36 ALL
|
||||
<span class="n">CONT_VIA</span> <span class="n">RDS_VIA1</span> <span class="mf">0.27</span> <span class="mf">0.27</span> <span class="n">ALL</span>
|
||||
<span class="n">CONT_VIA2</span> <span class="n">RDS_VIA2</span> <span class="mf">0.27</span> <span class="mf">0.27</span> <span class="n">ALL</span>
|
||||
<span class="n">CONT_VIA3</span> <span class="n">RDS_VIA3</span> <span class="mf">0.27</span> <span class="mf">0.27</span> <span class="n">ALL</span>
|
||||
<span class="n">CONT_VIA4</span> <span class="n">RDS_VIA4</span> <span class="mf">0.27</span> <span class="mf">0.27</span> <span class="n">ALL</span>
|
||||
<span class="n">CONT_VIA5</span> <span class="n">RDS_VIA5</span> <span class="mf">0.36</span> <span class="mf">0.36</span> <span class="n">ALL</span>
|
||||
|
||||
END</pre>
|
||||
<span class="n">END</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><strong>BIGVIA demotion.</strong> If the size of the bigvia is too small, there is
|
||||
a possibility that no hole from the global matrix will be under it.
|
||||
To avoid that case, if the either side of the BIGVIA is less than
|
||||
<tt class="docutils literal"><span class="pre">1.5</span> <span class="pre">*</span> <span class="pre">step</span></tt>, the BIGVIA is demoted to a simple VIA.</p>
|
||||
<code class="docutils literal"><span class="pre">1.5</span> <span class="pre">*</span> <span class="pre">step</span></code>, the BIGVIA is demoted to a simple VIA.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-bigvia-metal-table">
|
||||
<h2>The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table<a class="headerlink" href="#the-mbk-to-rds-bigvia-metal-table" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table<a class="headerlink" href="#the-mbk-to-rds-bigvia-metal-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This table describe how the metal part of a BIGVIA is expanded (for the hole
|
||||
part, see the previous table <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt>). The rule give for each
|
||||
part, see the previous table <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code>). The rule give for each
|
||||
metal:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The <em>delta-with</em> (have to ask Franck).</li>
|
||||
|
@ -650,58 +660,60 @@ metal:</p>
|
|||
the symbolic rectange.</li>
|
||||
</ol>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python"><pre>TABLE MBK_TO_RDS_BIGVIA_METAL
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">TABLE</span> <span class="n">MBK_TO_RDS_BIGVIA_METAL</span>
|
||||
|
||||
CONT_VIA RDS_ALU1 0.0 0.09 ALL \
|
||||
RDS_ALU2 0.0 0.09 ALL
|
||||
<span class="n">CONT_VIA</span> <span class="n">RDS_ALU1</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU2</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span>
|
||||
|
||||
CONT_VIA2 RDS_ALU2 0.0 0.09 ALL \
|
||||
RDS_ALU3 0.0 0.09 ALL
|
||||
<span class="n">CONT_VIA2</span> <span class="n">RDS_ALU2</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU3</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span>
|
||||
|
||||
CONT_VIA3 RDS_ALU3 0.0 0.09 ALL \
|
||||
RDS_ALU4 0.0 0.09 ALL
|
||||
<span class="n">CONT_VIA3</span> <span class="n">RDS_ALU3</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU4</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span>
|
||||
|
||||
CONT_VIA4 RDS_ALU4 0.0 0.09 ALL \
|
||||
RDS_ALU5 0.0 0.09 ALL
|
||||
<span class="n">CONT_VIA4</span> <span class="n">RDS_ALU4</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU5</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span>
|
||||
|
||||
CONT_VIA5 RDS_ALU5 0.0 0.09 ALL \
|
||||
RDS_ALU6 0.0 0.18 ALL
|
||||
END</pre>
|
||||
<span class="n">CONT_VIA5</span> <span class="n">RDS_ALU5</span> <span class="mf">0.0</span> <span class="mf">0.09</span> <span class="n">ALL</span> \
|
||||
<span class="n">RDS_ALU6</span> <span class="mf">0.0</span> <span class="mf">0.18</span> <span class="n">ALL</span>
|
||||
<span class="n">END</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-wiresetting-table">
|
||||
<h2>The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table<a class="headerlink" href="#the-mbk-wiresetting-table" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table<a class="headerlink" href="#the-mbk-wiresetting-table" title="Permalink to this headline">¶</a></h2>
|
||||
<p>From a strict standpoint this table shouldn’t be here but put in a separate
|
||||
configuration file, because it contains informations only used by the symbolic
|
||||
layout tools (<tt class="docutils literal"><span class="pre">ocp</span></tt>, <tt class="docutils literal"><span class="pre">nero</span></tt>, <tt class="docutils literal"><span class="pre">ring</span></tt>).</p>
|
||||
layout tools (<code class="docutils literal"><span class="pre">ocp</span></code>, <code class="docutils literal"><span class="pre">nero</span></code>, <code class="docutils literal"><span class="pre">ring</span></code>).</p>
|
||||
<p>This table defines the cell gauge the routing pitch and minimal (symbolic)
|
||||
wire width and minimal spacing for the routers. They are patly redundant.</p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python"><pre>TABLE MBK_WIRESETTING
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">TABLE</span> <span class="n">MBK_WIRESETTING</span>
|
||||
|
||||
X_GRID 10
|
||||
Y_GRID 10
|
||||
Y_SLICE 100
|
||||
WIDTH_VDD 12
|
||||
WIDTH_VSS 12
|
||||
TRACK_WIDTH_ALU8 0
|
||||
TRACK_WIDTH_ALU7 4
|
||||
TRACK_WIDTH_ALU6 4
|
||||
TRACK_WIDTH_ALU5 4
|
||||
TRACK_WIDTH_ALU4 3
|
||||
TRACK_WIDTH_ALU3 3
|
||||
TRACK_WIDTH_ALU2 3
|
||||
TRACK_WIDTH_ALU1 3
|
||||
TRACK_SPACING_ALU8 0
|
||||
TRACK_SPACING_ALU7 4
|
||||
TRACK_SPACING_ALU6 4
|
||||
TRACK_SPACING_ALU5 4
|
||||
TRACK_SPACING_ALU4 4
|
||||
TRACK_SPACING_ALU3 4
|
||||
TRACK_SPACING_ALU2 4
|
||||
TRACK_SPACING_ALU1 3
|
||||
<span class="n">X_GRID</span> <span class="mi">10</span>
|
||||
<span class="n">Y_GRID</span> <span class="mi">10</span>
|
||||
<span class="n">Y_SLICE</span> <span class="mi">100</span>
|
||||
<span class="n">WIDTH_VDD</span> <span class="mi">12</span>
|
||||
<span class="n">WIDTH_VSS</span> <span class="mi">12</span>
|
||||
<span class="n">TRACK_WIDTH_ALU8</span> <span class="mi">0</span>
|
||||
<span class="n">TRACK_WIDTH_ALU7</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_WIDTH_ALU6</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_WIDTH_ALU5</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_WIDTH_ALU4</span> <span class="mi">3</span>
|
||||
<span class="n">TRACK_WIDTH_ALU3</span> <span class="mi">3</span>
|
||||
<span class="n">TRACK_WIDTH_ALU2</span> <span class="mi">3</span>
|
||||
<span class="n">TRACK_WIDTH_ALU1</span> <span class="mi">3</span>
|
||||
<span class="n">TRACK_SPACING_ALU8</span> <span class="mi">0</span>
|
||||
<span class="n">TRACK_SPACING_ALU7</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_SPACING_ALU6</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_SPACING_ALU5</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_SPACING_ALU4</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_SPACING_ALU3</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_SPACING_ALU2</span> <span class="mi">4</span>
|
||||
<span class="n">TRACK_SPACING_ALU1</span> <span class="mi">3</span>
|
||||
|
||||
END</pre>
|
||||
<span class="n">END</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -712,6 +724,8 @@ END</pre>
|
|||
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
|
||||
<a href="../lefapi/lefapi.html" class="btn btn-neutral float-right" title="LEF API Reference" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||||
|
||||
|
||||
<a href="index.html" class="btn btn-neutral" title="Symbolic to Real Conversion in Alliance" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
|
@ -725,7 +739,7 @@ END</pre>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Symbolic Layout" href="RDSpage.html"/>
|
||||
<link rel="prev" title="7. No C++ Hurricane::Name encapsulation" href="../PythonCpp/Name.html"/>
|
||||
|
@ -196,7 +198,7 @@
|
|||
<li class="toctree-l2"><a class="reference internal" href="../PythonCpp/Name.html">7. No C++ Hurricane::Name encapsulation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Symbolic to Real Conversion in Alliance</a><ul>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Symbolic to Real Conversion in Alliance</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html">Symbolic Layout</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#symbolic-components">Symbolic Components</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#symbolic-segments">Symbolic Segments</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -261,11 +266,11 @@
|
|||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -293,7 +298,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="DpGen Reference" href="../DpGen/DpGen.html"/>
|
||||
<link rel="prev" title="Python Interface for Hurricane / Coriolis" href="../UsersGuide/ScriptsPlugins.html"/>
|
||||
|
@ -147,7 +149,7 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Stratus Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Stratus Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../DpGen/DpGen.html">DpGen Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Patterns/Patterns.html">Patterns Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Hurricane/Hurricane.html">Hurricane Reference</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../stratus/index.htm
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Hurricane Python/C++ API Tutorial" href="../PythonCpp/index.html"/>
|
||||
<link rel="prev" title="Kite Reference" href="../Kite/Kite.html"/>
|
||||
|
@ -155,7 +157,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../CrlCore/CrlCore.html">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Katabatic/Katabatic.html">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Kite/Kite.html">Kite Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Unicorn Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Unicorn Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../PythonCpp/index.html">Hurricane Python/C++ API Tutorial</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../PythonCpp/Introduction.html">1. Introduction</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../PythonCpp/Introduction.html#first-a-disclaimer">1.1 First, A Disclaimer</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../unicorn/index.htm
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Coriolis User’s Guide" href="index.html"/>
|
||||
<link rel="next" title="CGT - The Graphical Interface" href="ViewerTools.html"/>
|
||||
|
@ -97,7 +99,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="Installation.html#setting-up-the-environment-coriolisenv-py">Setting up the Environment (coriolisEnv.py)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">Coriolis Configuration & Initialisation</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Coriolis Configuration & Initialisation</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#general-software-architecture">General Software Architecture</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#first-stage-symbolic-technology-selection">First Stage: Symbolic Technology Selection</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#second-stage-technology-configuration-loading">Second Stage: Technology Configuration Loading</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -274,7 +279,7 @@ the tools. However, the <span class="sc">Python</span> bindings have been create
|
|||
mimic <em>as closely as possible</em> the C++ interface, so the documentation
|
||||
applies to both languages with only minor syntactic changes.</p>
|
||||
</div>
|
||||
<p> <img alt="Coriolis Software Schematic" class="align-middle" src="../_images/Coriolis-Soft-Schema.png" style="width: 60%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Coriolis-Soft-Schema.png"><img alt="Coriolis Software Schematic" class="align-middle" src="../_images/Coriolis-Soft-Schema.png" style="width: 60%;" /></a> </p>
|
||||
<p>All configuration & initialization files are Python scripts, despite their
|
||||
<span class="cb">.conf</span> extention. From a syntactic point of view, there is no difference
|
||||
between the system-wide configuration files and the user’s configuration,
|
||||
|
@ -321,10 +326,10 @@ file(s):</p>
|
|||
</table>
|
||||
<p>Thoses files must provides only two variables, the name of the symbolic technology
|
||||
and the one of the real technology. For example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="c"># -*- Mode:Python -*-</span>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># -*- Mode:Python -*-</span>
|
||||
|
||||
<span class="n">symbolicTechno</span> <span class="o">=</span> <span class="s">'cmos'</span>
|
||||
<span class="n">realTechno</span> <span class="o">=</span> <span class="s">'hcmos9'</span>
|
||||
<span class="n">symbolicTechno</span> <span class="o">=</span> <span class="s1">'cmos'</span>
|
||||
<span class="n">realTechno</span> <span class="o">=</span> <span class="s1">'hcmos9'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -378,7 +383,8 @@ which <em>must</em> contain a <span class="cb">coriolisConfigure()</span> functi
|
|||
<p>To ease the writing of configuration files, a set of small helpers
|
||||
is available. They allow to setup the configuration parameters through
|
||||
simple assembly of tuples. The helpers are installed under the directory:</p>
|
||||
<div class="highlight-python"><pre><install>/etc/coriolis2/</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o"><</span><span class="n">install</span><span class="o">>/</span><span class="n">etc</span><span class="o">/</span><span class="n">coriolis2</span><span class="o">/</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Where <span class="cb"><install>/</span> is the root of the installation.</p>
|
||||
<p></p>
|
||||
|
@ -386,30 +392,30 @@ simple assembly of tuples. The helpers are installed under the directory:</p>
|
|||
<span id="id1"></span><h3><span class="sc">Alliance</span> Helper<a class="headerlink" href="#alliance-helper" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The configuration file must provide a <span class="cb">allianceConfig</span> tuple of
|
||||
the form:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">cellsTop</span> <span class="o">=</span> <span class="s">'/usr/share/alliance/cells/'</span>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cellsTop</span> <span class="o">=</span> <span class="s1">'/usr/share/alliance/cells/'</span>
|
||||
|
||||
<span class="n">allianceConfig</span> <span class="o">=</span> \
|
||||
<span class="p">(</span> <span class="p">(</span> <span class="s">'SYMBOLIC_TECHNOLOGY'</span><span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s">'/technology.symbolic.xml'</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'REAL_TECHNOLOGY'</span> <span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s">'/technology.cmos130.s2r.xml'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'DISPLAY'</span> <span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s">'/display.xml'</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'CATALOG'</span> <span class="p">,</span> <span class="s">'CATAL'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'WORKING_LIBRARY'</span> <span class="p">,</span> <span class="s">'.'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'SYSTEM_LIBRARY'</span> <span class="p">,</span> <span class="p">(</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'sxlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'dp_sxlib'</span><span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'ramlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'romlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'rflib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'rf2lib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s">'pxlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'SCALE_X'</span> <span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'IN_LO'</span> <span class="p">,</span> <span class="s">'vst'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'IN_PH'</span> <span class="p">,</span> <span class="s">'ap'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'OUT_LO'</span> <span class="p">,</span> <span class="s">'vst'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'OUT_PH'</span> <span class="p">,</span> <span class="s">'ap'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'POWER'</span> <span class="p">,</span> <span class="s">'vdd'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'GROUND'</span> <span class="p">,</span> <span class="s">'vss'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'CLOCK'</span> <span class="p">,</span> <span class="s">'^ck.*'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s">'BLOCKAGE'</span> <span class="p">,</span> <span class="s">'^blockageNet*'</span><span class="p">)</span>
|
||||
<span class="p">(</span> <span class="p">(</span> <span class="s1">'SYMBOLIC_TECHNOLOGY'</span><span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s1">'/technology.symbolic.xml'</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'REAL_TECHNOLOGY'</span> <span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s1">'/technology.cmos130.s2r.xml'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'DISPLAY'</span> <span class="p">,</span> <span class="n">helpers</span><span class="o">.</span><span class="n">sysConfDir</span><span class="o">+</span><span class="s1">'/display.xml'</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'CATALOG'</span> <span class="p">,</span> <span class="s1">'CATAL'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'WORKING_LIBRARY'</span> <span class="p">,</span> <span class="s1">'.'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'SYSTEM_LIBRARY'</span> <span class="p">,</span> <span class="p">(</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'sxlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'dp_sxlib'</span><span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'ramlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'romlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'rflib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'rf2lib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">cellsTop</span><span class="o">+</span><span class="s1">'pxlib'</span> <span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'SCALE_X'</span> <span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'IN_LO'</span> <span class="p">,</span> <span class="s1">'vst'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'IN_PH'</span> <span class="p">,</span> <span class="s1">'ap'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'OUT_LO'</span> <span class="p">,</span> <span class="s1">'vst'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'OUT_PH'</span> <span class="p">,</span> <span class="s1">'ap'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'POWER'</span> <span class="p">,</span> <span class="s1">'vdd'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'GROUND'</span> <span class="p">,</span> <span class="s1">'vss'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'CLOCK'</span> <span class="p">,</span> <span class="s1">'^ck.*'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span> <span class="s1">'BLOCKAGE'</span> <span class="p">,</span> <span class="s1">'^blockageNet*'</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
|
@ -417,11 +423,11 @@ the form:</p>
|
|||
available settings. Some important remarks about thoses settings:</p>
|
||||
<ul>
|
||||
<li><p class="first">In it’s configuration file, the user do not need to redefine all the settings,
|
||||
just the one he wants to change. In most of the cases, the <tt class="docutils literal"><span class="pre">SYSTEM_LIBRARY</span></tt>,
|
||||
the <tt class="docutils literal"><span class="pre">WORKING_LIBRARY</span></tt> and the special net names (at this point there is not
|
||||
just the one he wants to change. In most of the cases, the <code class="docutils literal"><span class="pre">SYSTEM_LIBRARY</span></code>,
|
||||
the <code class="docutils literal"><span class="pre">WORKING_LIBRARY</span></code> and the special net names (at this point there is not
|
||||
much alternatives for the others settings).</p>
|
||||
</li>
|
||||
<li><p class="first"><tt class="docutils literal"><span class="pre">SYSTEM_LIBRARY</span></tt> setting: Setting up the library search path.
|
||||
<li><p class="first"><code class="docutils literal"><span class="pre">SYSTEM_LIBRARY</span></code> setting: Setting up the library search path.
|
||||
Each library entry in the tuple will be added to the search path according
|
||||
to the second parameter:</p>
|
||||
<ul class="simple">
|
||||
|
@ -432,29 +438,29 @@ it, whithout changing the search path order. If no library of that name
|
|||
already exists, it is appended.</li>
|
||||
</ul>
|
||||
<p>A library is identified by it’s name, this name is the last component of the
|
||||
path name. For instance: <tt class="docutils literal"><span class="pre">/soc/alliance/sxlib</span></tt> will be named <tt class="docutils literal"><span class="pre">sxlib</span></tt>.
|
||||
Implementing the <span class="sc">Alliance</span> specification, when looking for a <em>Cell</em> <tt class="docutils literal"><span class="pre">name</span></tt>,
|
||||
path name. For instance: <code class="docutils literal"><span class="pre">/soc/alliance/sxlib</span></code> will be named <code class="docutils literal"><span class="pre">sxlib</span></code>.
|
||||
Implementing the <span class="sc">Alliance</span> specification, when looking for a <em>Cell</em> <code class="docutils literal"><span class="pre">name</span></code>,
|
||||
the system will browse sequentially trought the library list and returns
|
||||
the first <em>Cell</em> whose name match.</p>
|
||||
</li>
|
||||
<li><p class="first">For <tt class="docutils literal"><span class="pre">POWER</span></tt>, <tt class="docutils literal"><span class="pre">GROUND</span></tt>, <tt class="docutils literal"><span class="pre">CLOCK</span></tt> and <tt class="docutils literal"><span class="pre">BLOCKAGE</span></tt> net names, a regular
|
||||
<li><p class="first">For <code class="docutils literal"><span class="pre">POWER</span></code>, <code class="docutils literal"><span class="pre">GROUND</span></code>, <code class="docutils literal"><span class="pre">CLOCK</span></code> and <code class="docutils literal"><span class="pre">BLOCKAGE</span></code> net names, a regular
|
||||
expression (<span class="sc">gnu</span> regexp) is expected.</p>
|
||||
</li>
|
||||
<li><p class="first">The <tt class="docutils literal"><span class="pre">helpers.sysConfDir</span></tt> variable is supplied by the helpers, it is the
|
||||
<li><p class="first">The <code class="docutils literal"><span class="pre">helpers.sysConfDir</span></code> variable is supplied by the helpers, it is the
|
||||
directory in which the system-wide configuration files are locateds.
|
||||
For a standard installation it would be: <tt class="docutils literal"><span class="pre">/soc/coriolis2</span></tt>.</p>
|
||||
For a standard installation it would be: <code class="docutils literal"><span class="pre">/soc/coriolis2</span></code>.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>A typical user’s configuration file would be:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">os</span>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
|
||||
|
||||
<span class="n">homeDir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">'HOME'</span><span class="p">)</span>
|
||||
<span class="n">homeDir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s1">'HOME'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">allianceConfig</span> <span class="o">=</span> \
|
||||
<span class="p">(</span> <span class="p">(</span><span class="s">'WORKING_LIBRARY'</span> <span class="p">,</span> <span class="n">homeDir</span><span class="o">+</span><span class="s">'/worklib'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'SYSTEM_LIBRARY'</span> <span class="p">,</span> <span class="p">(</span> <span class="p">(</span><span class="n">homeDir</span><span class="o">+</span><span class="s">'/mylib'</span><span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'POWER'</span> <span class="p">,</span> <span class="s">'vdd.*'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'GROUND'</span> <span class="p">,</span> <span class="s">'vss.*'</span><span class="p">)</span>
|
||||
<span class="p">(</span> <span class="p">(</span><span class="s1">'WORKING_LIBRARY'</span> <span class="p">,</span> <span class="n">homeDir</span><span class="o">+</span><span class="s1">'/worklib'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'SYSTEM_LIBRARY'</span> <span class="p">,</span> <span class="p">(</span> <span class="p">(</span><span class="n">homeDir</span><span class="o">+</span><span class="s1">'/mylib'</span><span class="p">,</span> <span class="n">Environment</span><span class="o">.</span><span class="n">Append</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'POWER'</span> <span class="p">,</span> <span class="s1">'vdd.*'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'GROUND'</span> <span class="p">,</span> <span class="s1">'vss.*'</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
|
@ -471,37 +477,37 @@ configuration files are defined:</p>
|
|||
<li><span class="cb">stratus1.conf</span>: for the <span class="sc">Stratus1</span> tool.</li>
|
||||
</ul>
|
||||
<p>Here is the contents of <span class="cb">etesian.conf</span>:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Etesian parameters.</span>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Etesian parameters.</span>
|
||||
<span class="n">parametersTable</span> <span class="o">=</span> \
|
||||
<span class="p">(</span> <span class="p">(</span><span class="s">'etesian.aspectRatio'</span> <span class="p">,</span> <span class="n">TypePercentage</span><span class="p">,</span> <span class="mi">100</span> <span class="p">,</span> <span class="p">{</span> <span class="s">'min'</span><span class="p">:</span><span class="mi">10</span><span class="p">,</span> <span class="s">'max'</span><span class="p">:</span><span class="mi">1000</span> <span class="p">}</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'etesian.spaceMargin'</span> <span class="p">,</span> <span class="n">TypePercentage</span><span class="p">,</span> <span class="mi">5</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'etesian.uniformDensity'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'etesian.routingDriven'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"etesian.effort"</span> <span class="p">,</span> <span class="n">TypeEnumerate</span> <span class="p">,</span> <span class="mi">2</span>
|
||||
<span class="p">,</span> <span class="p">{</span> <span class="s">'values'</span><span class="p">:(</span> <span class="p">(</span><span class="s">"Fast"</span> <span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"Standard"</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"High"</span> <span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"Extreme"</span> <span class="p">,</span> <span class="mi">4</span><span class="p">)</span> <span class="p">)</span> <span class="p">}</span>
|
||||
<span class="p">(</span> <span class="p">(</span><span class="s1">'etesian.aspectRatio'</span> <span class="p">,</span> <span class="n">TypePercentage</span><span class="p">,</span> <span class="mi">100</span> <span class="p">,</span> <span class="p">{</span> <span class="s1">'min'</span><span class="p">:</span><span class="mi">10</span><span class="p">,</span> <span class="s1">'max'</span><span class="p">:</span><span class="mi">1000</span> <span class="p">}</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'etesian.spaceMargin'</span> <span class="p">,</span> <span class="n">TypePercentage</span><span class="p">,</span> <span class="mi">5</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'etesian.uniformDensity'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'etesian.routingDriven'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"etesian.effort"</span> <span class="p">,</span> <span class="n">TypeEnumerate</span> <span class="p">,</span> <span class="mi">2</span>
|
||||
<span class="p">,</span> <span class="p">{</span> <span class="s1">'values'</span><span class="p">:(</span> <span class="p">(</span><span class="s2">"Fast"</span> <span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"Standard"</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"High"</span> <span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"Extreme"</span> <span class="p">,</span> <span class="mi">4</span><span class="p">)</span> <span class="p">)</span> <span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"etesian.graphics"</span> <span class="p">,</span> <span class="n">TypeEnumerate</span> <span class="p">,</span> <span class="mi">2</span>
|
||||
<span class="p">,</span> <span class="p">{</span> <span class="s">'values'</span><span class="p">:(</span> <span class="p">(</span><span class="s">"Show every step"</span> <span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"Show lower bound"</span> <span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">"Show result only"</span> <span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="p">)</span> <span class="p">}</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"etesian.graphics"</span> <span class="p">,</span> <span class="n">TypeEnumerate</span> <span class="p">,</span> <span class="mi">2</span>
|
||||
<span class="p">,</span> <span class="p">{</span> <span class="s1">'values'</span><span class="p">:(</span> <span class="p">(</span><span class="s2">"Show every step"</span> <span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"Show lower bound"</span> <span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s2">"Show result only"</span> <span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="p">)</span> <span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">layoutTable</span> <span class="o">=</span> \
|
||||
<span class="p">(</span> <span class="p">(</span><span class="n">TypeTab</span> <span class="p">,</span> <span class="s">'Etesian'</span><span class="p">,</span> <span class="s">'etesian'</span><span class="p">)</span>
|
||||
<span class="p">(</span> <span class="p">(</span><span class="n">TypeTab</span> <span class="p">,</span> <span class="s1">'Etesian'</span><span class="p">,</span> <span class="s1">'etesian'</span><span class="p">)</span>
|
||||
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeTitle</span> <span class="p">,</span> <span class="s">'Placement area'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s">"etesian.aspectRatio"</span> <span class="p">,</span> <span class="s">"Aspect Ratio, X/Y (%)"</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s">"etesian.spaceMargin"</span> <span class="p">,</span> <span class="s">"Space Margin"</span> <span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeTitle</span> <span class="p">,</span> <span class="s1">'Placement area'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s2">"etesian.aspectRatio"</span> <span class="p">,</span> <span class="s2">"Aspect Ratio, X/Y (%)"</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s2">"etesian.spaceMargin"</span> <span class="p">,</span> <span class="s2">"Space Margin"</span> <span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeRule</span> <span class="p">,)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeTitle</span> <span class="p">,</span> <span class="s">'Etesian - Placer'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s">"etesian.uniformDensity"</span><span class="p">,</span> <span class="s">"Uniform density"</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s">"etesian.routingDriven"</span> <span class="p">,</span> <span class="s">"Routing driven"</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s">"etesian.effort"</span> <span class="p">,</span> <span class="s">"Placement effort"</span> <span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s">"etesian.graphics"</span> <span class="p">,</span> <span class="s">"Placement view"</span> <span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeTitle</span> <span class="p">,</span> <span class="s1">'Etesian - Placer'</span><span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s2">"etesian.uniformDensity"</span><span class="p">,</span> <span class="s2">"Uniform density"</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s2">"etesian.routingDriven"</span> <span class="p">,</span> <span class="s2">"Routing driven"</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s2">"etesian.effort"</span> <span class="p">,</span> <span class="s2">"Placement effort"</span> <span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeOption</span><span class="p">,</span> <span class="s2">"etesian.graphics"</span> <span class="p">,</span> <span class="s2">"Placement view"</span> <span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="n">TypeRule</span> <span class="p">,)</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
|
@ -510,27 +516,27 @@ configuration files are defined:</p>
|
|||
<p>Taxonomy of the file:</p>
|
||||
<ul class="simple">
|
||||
<li>It must contains, at least, the two tables:<ul>
|
||||
<li><tt class="docutils literal"><span class="pre">parametersTable</span></tt>, defines & initialise the configuration variables.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">layoutTables</span></tt>, defines how the various parameters will be displayed
|
||||
in the configuration window (<a class="reference internal" href="ViewerTools.html#the-settings-tab"><em>The Settings Tab</em></a>).</li>
|
||||
<li><code class="docutils literal"><span class="pre">parametersTable</span></code>, defines & initialise the configuration variables.</li>
|
||||
<li><code class="docutils literal"><span class="pre">layoutTables</span></code>, defines how the various parameters will be displayed
|
||||
in the configuration window (<a class="reference internal" href="ViewerTools.html#the-settings-tab"><span class="std std-ref">The Settings Tab</span></a>).</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>The <tt class="docutils literal"><span class="pre">parametersTable</span></tt>, is a tuple (list) of tuples. Each entry in the list
|
||||
<li>The <code class="docutils literal"><span class="pre">parametersTable</span></code>, is a tuple (list) of tuples. Each entry in the list
|
||||
describe a configuration parameter. In it’s simplest form, it’s a quadruplet
|
||||
<span class="cb">(TypeOption, ‘paramId’, ParameterType, DefaultValue)</span> with:<ol class="arabic">
|
||||
<li><tt class="docutils literal"><span class="pre">TypeOption</span></tt>, tells that this tuple describe a parameter.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">paramId</span></tt>, the identifier of the parameter. Identifiers are defined
|
||||
<li><code class="docutils literal"><span class="pre">TypeOption</span></code>, tells that this tuple describe a parameter.</li>
|
||||
<li><code class="docutils literal"><span class="pre">paramId</span></code>, the identifier of the parameter. Identifiers are defined
|
||||
by the tools. The list of parameters is detailed in each tool section.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">ParameterType</span></tt>, the kind of parameter. Could be:<ul>
|
||||
<li><tt class="docutils literal"><span class="pre">TypeBool</span></tt>, boolean.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">TypeInt</span></tt>, signed integer.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">TypeEnumerate</span></tt>, enumerated type, needs extra entry.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">TypePercentage</span></tt>, percentage, expressed between 0 and 100.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">TypeDouble</span></tt>, float.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">TypeString</span></tt>, character string.</li>
|
||||
<li><code class="docutils literal"><span class="pre">ParameterType</span></code>, the kind of parameter. Could be:<ul>
|
||||
<li><code class="docutils literal"><span class="pre">TypeBool</span></code>, boolean.</li>
|
||||
<li><code class="docutils literal"><span class="pre">TypeInt</span></code>, signed integer.</li>
|
||||
<li><code class="docutils literal"><span class="pre">TypeEnumerate</span></code>, enumerated type, needs extra entry.</li>
|
||||
<li><code class="docutils literal"><span class="pre">TypePercentage</span></code>, percentage, expressed between 0 and 100.</li>
|
||||
<li><code class="docutils literal"><span class="pre">TypeDouble</span></code>, float.</li>
|
||||
<li><code class="docutils literal"><span class="pre">TypeString</span></code>, character string.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><tt class="docutils literal"><span class="pre">DefaultValue</span></tt>, the default value for that parameter.</li>
|
||||
<li><code class="docutils literal"><span class="pre">DefaultValue</span></code>, the default value for that parameter.</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -542,34 +548,34 @@ by the tools. The list of parameters is detailed in each tool section.</li>
|
|||
<span class="cb">allianceConfig</span> or <span class="cb">parametersTable</span>, you can put pretty much anything
|
||||
in <span class="cb"><CWD>/.coriolis2/settings.py</span> (that is, written in <span class="sc">Python</span>).</p>
|
||||
<p>For example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="c"># -*- Mode:Python -*-</span>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># -*- Mode:Python -*-</span>
|
||||
|
||||
<span class="n">defaultStyle</span> <span class="o">=</span> <span class="s">'Alliance.Classic [black]'</span>
|
||||
<span class="n">defaultStyle</span> <span class="o">=</span> <span class="s1">'Alliance.Classic [black]'</span>
|
||||
|
||||
<span class="c"># Regular Coriolis configuration.</span>
|
||||
<span class="c1"># Regular Coriolis configuration.</span>
|
||||
<span class="n">parametersTable</span> <span class="o">=</span> \
|
||||
<span class="p">(</span> <span class="p">(</span><span class="s">'misc.catchCore'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.info'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.paranoid'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.bug'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.logMode'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">True</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.verboseLevel1'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.verboseLevel2'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="bp">True</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.minTraceLevel'</span> <span class="p">,</span> <span class="n">TypeInt</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s">'misc.maxTraceLevel'</span> <span class="p">,</span> <span class="n">TypeInt</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">(</span> <span class="p">(</span><span class="s1">'misc.catchCore'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.info'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.paranoid'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.bug'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.logMode'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">True</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.verboseLevel1'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">False</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.verboseLevel2'</span> <span class="p">,</span> <span class="n">TypeBool</span> <span class="p">,</span> <span class="kc">True</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.minTraceLevel'</span> <span class="p">,</span> <span class="n">TypeInt</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="p">(</span><span class="s1">'misc.maxTraceLevel'</span> <span class="p">,</span> <span class="n">TypeInt</span> <span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c"># Some ordinary Python script...</span>
|
||||
<span class="c1"># Some ordinary Python script...</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
|
||||
<span class="k">print</span> <span class="s">' o Cleaning up ClockTree previous run.'</span>
|
||||
<span class="k">for</span> <span class="n">fileName</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="s">'.'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">fileName</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'.ap'</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">fileName</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">'_clocked.'</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">):</span>
|
||||
<span class="k">print</span> <span class="s">' - <</span><span class="si">%s</span><span class="s">>'</span> <span class="o">%</span> <span class="n">fileName</span>
|
||||
<span class="nb">print</span> <span class="s1">' o Cleaning up ClockTree previous run.'</span>
|
||||
<span class="k">for</span> <span class="n">fileName</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="s1">'.'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">fileName</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.ap'</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">fileName</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'_clocked.'</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">):</span>
|
||||
<span class="nb">print</span> <span class="s1">' - <</span><span class="si">%s</span><span class="s1">>'</span> <span class="o">%</span> <span class="n">fileName</span>
|
||||
<span class="n">os</span><span class="o">.</span><span class="n">unlink</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>See <a class="reference internal" href="ScriptsPlugins.html#python-interface-to-coriolis"><em>Python Interface for Hurricane / Coriolis</em></a> for more details those capabilities.</p>
|
||||
<p>See <a class="reference internal" href="ScriptsPlugins.html#python-interface-to-coriolis"><span class="std std-ref">Python Interface for Hurricane / Coriolis</span></a> for more details those capabilities.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -594,7 +600,7 @@ in <span class="cb"><CWD>/.coriolis2/settings.py</span> (that is, written
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Coriolis User’s Guide" href="index.html"/>
|
||||
<link rel="next" title="Coriolis Configuration & Initialisation" href="Configuration.html"/>
|
||||
|
@ -85,7 +87,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="Releases.html#release-v2-2"><strong>Release v2.2</strong></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">Installation</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Installation</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#fixed-directory-tree">Fixed Directory Tree</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#building-coriolis">Building Coriolis</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#building-the-devel-branch">Building the Devel Branch</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -372,10 +377,10 @@ automatically created either by <span class="cb">ccb</span> or the build system.
|
|||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p><em>Alternate build types:</em> the <tt class="docutils literal"><span class="pre">Release.Shared</span></tt> means an optimized build
|
||||
with shared libraries. But there are also available <tt class="docutils literal"><span class="pre">Static</span></tt> instead of <tt class="docutils literal"><span class="pre">Shared</span></tt>
|
||||
and <tt class="docutils literal"><span class="pre">Debug</span></tt> instead of <tt class="docutils literal"><span class="pre">Release</span></tt> and any combination of them.</p>
|
||||
<p class="last"><tt class="docutils literal"><span class="pre">Static</span></tt> do not work because I don’t know yet to mix statically linked binaries
|
||||
<p><em>Alternate build types:</em> the <code class="docutils literal"><span class="pre">Release.Shared</span></code> means an optimized build
|
||||
with shared libraries. But there are also available <code class="docutils literal"><span class="pre">Static</span></code> instead of <code class="docutils literal"><span class="pre">Shared</span></code>
|
||||
and <code class="docutils literal"><span class="pre">Debug</span></code> instead of <code class="docutils literal"><span class="pre">Release</span></code> and any combination of them.</p>
|
||||
<p class="last"><code class="docutils literal"><span class="pre">Static</span></code> do not work because I don’t know yet to mix statically linked binaries
|
||||
and Python modules (which must be dynamic).</p>
|
||||
</div>
|
||||
<p></p>
|
||||
|
@ -385,34 +390,38 @@ and Python modules (which must be dynamic).</p>
|
|||
<p>First step is to install the prerequisites. Currently, only <a class="reference external" href="http://miloyip.github.io/rapidjson/">RapidJSON</a>.
|
||||
As RapidJSON is evolving fast, if you encounter compatibility problems,
|
||||
the exact version we compiled against is given below.</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~$ git clone http://github.com/miloyip/rapidjson
|
||||
dummy@lepka:~$ git checkout ec322005072076ef53984462fb4a1075c27c7dfd</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="o">~/</span><span class="n">coriolis</span><span class="o">-</span><span class="mf">2.</span><span class="n">x</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">support</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">cd</span> <span class="o">~/</span><span class="n">coriolis</span><span class="o">-</span><span class="mf">2.</span><span class="n">x</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">support</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">git</span> <span class="n">clone</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">miloyip</span><span class="o">/</span><span class="n">rapidjson</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">git</span> <span class="n">checkout</span> <span class="n">ec322005072076ef53984462fb4a1075c27c7dfd</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The second step is to create the source directory and pull the <span class="cb">git</span> repository:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ git clone https://www-soc.lip6.fr/git/coriolis.git</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="o">~/</span><span class="n">coriolis</span><span class="o">-</span><span class="mf">2.</span><span class="n">x</span><span class="o">/</span><span class="n">src</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">cd</span> <span class="o">~/</span><span class="n">coriolis</span><span class="o">-</span><span class="mf">2.</span><span class="n">x</span><span class="o">/</span><span class="n">src</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">-</span><span class="n">soc</span><span class="o">.</span><span class="n">lip6</span><span class="o">.</span><span class="n">fr</span><span class="o">/</span><span class="n">git</span><span class="o">/</span><span class="n">coriolis</span><span class="o">.</span><span class="n">git</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Third and final step, build & install:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:src$ ./bootstrap/ccb.py --project=support \
|
||||
--project=coriolis \
|
||||
--make="-j4 install"
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=support \
|
||||
--project=coriolis \
|
||||
--doc --make="-j1 install"</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">src</span><span class="o">></span> <span class="o">./</span><span class="n">bootstrap</span><span class="o">/</span><span class="n">ccb</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">project</span><span class="o">=</span><span class="n">support</span> \
|
||||
<span class="o">--</span><span class="n">project</span><span class="o">=</span><span class="n">coriolis</span> \
|
||||
<span class="o">--</span><span class="n">make</span><span class="o">=</span><span class="s2">"-j4 install"</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">src</span><span class="o">></span> <span class="o">./</span><span class="n">bootstrap</span><span class="o">/</span><span class="n">ccb</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">project</span><span class="o">=</span><span class="n">support</span> \
|
||||
<span class="o">--</span><span class="n">project</span><span class="o">=</span><span class="n">coriolis</span> \
|
||||
<span class="o">--</span><span class="n">doc</span> <span class="o">--</span><span class="n">make</span><span class="o">=</span><span class="s2">"-j1 install"</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>We need to separate to perform a separate installation of the documentation because it
|
||||
do not support to be generated with a parallel build. So we compile & install in a first
|
||||
stage in <tt class="docutils literal"><span class="pre">-j4</span></tt> (or whatever) then we generate the documentation in <tt class="docutils literal"><span class="pre">-j1</span></tt></p>
|
||||
stage in <code class="docutils literal"><span class="pre">-j4</span></code> (or whatever) then we generate the documentation in <code class="docutils literal"><span class="pre">-j1</span></code></p>
|
||||
<p>Under <span class="sc">rhel6</span> or clones, you must build using the <span class="cb">devtoolset2</span>:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
--devtoolset-2 --make="-j4 install"</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">src</span><span class="o">></span> <span class="o">./</span><span class="n">bootstrap</span><span class="o">/</span><span class="n">ccb</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">project</span><span class="o">=</span><span class="n">coriolis</span> \
|
||||
<span class="o">--</span><span class="n">devtoolset</span><span class="o">-</span><span class="mi">2</span> <span class="o">--</span><span class="n">make</span><span class="o">=</span><span class="s2">"-j4 install"</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>If you want to uses Qt 5 instead of Qt 4, you may add the <tt class="docutils literal"><span class="pre">--qt5</span></tt> argument.</p>
|
||||
<p>The complete list of <span class="cb">ccb</span> functionalities can be accessed with the <tt class="docutils literal"><span class="pre">--help</span></tt> argument.
|
||||
It also may be run in graphical mode (<tt class="docutils literal"><span class="pre">--gui</span></tt>).</p>
|
||||
<p>If you want to uses Qt 5 instead of Qt 4, you may add the <code class="docutils literal"><span class="pre">--qt5</span></code> argument.</p>
|
||||
<p>The complete list of <span class="cb">ccb</span> functionalities can be accessed with the <code class="docutils literal"><span class="pre">--help</span></code> argument.
|
||||
It also may be run in graphical mode (<code class="docutils literal"><span class="pre">--gui</span></code>).</p>
|
||||
<div class="section" id="building-the-devel-branch">
|
||||
<h3>Building the Devel Branch<a class="headerlink" href="#building-the-devel-branch" title="Permalink to this headline">¶</a></h3>
|
||||
<p>In the <span class="sc">Coriolis</span> <span class="cb">git</span> repository, two branches are present:</p>
|
||||
|
@ -423,15 +432,17 @@ one used by default if you follow the above instructions.</p>
|
|||
<li><p class="first">The <span class="cb">devel</span> branch, which obviously contains the latest commits from the
|
||||
development team. To use it instead of the <span class="cb">master</span> one, do the following
|
||||
command just after the first step:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:~$ git checkout devel
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
--make="-j4 install" --debug</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="o">~></span> <span class="n">git</span> <span class="n">checkout</span> <span class="n">devel</span>
|
||||
<span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">src</span><span class="o">></span> <span class="o">./</span><span class="n">bootstrap</span><span class="o">/</span><span class="n">ccb</span><span class="o">.</span><span class="n">py</span> <span class="o">--</span><span class="n">project</span><span class="o">=</span><span class="n">coriolis</span> \
|
||||
<span class="o">--</span><span class="n">make</span><span class="o">=</span><span class="s2">"-j4 install"</span> <span class="o">--</span><span class="n">debug</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Be aware that it may requires newer versions of the dependencies and may introduce
|
||||
incompatibilites with the stable version.</p>
|
||||
<p>In the (unlikely) event of a crash of <span class="cb">cgt</span>, as it is a <span class="sc">Python</span> script, the right
|
||||
command to run <span class="cb">gdb</span> on it is:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:work$ gdb python core.XXXX</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">work</span><span class="o">></span> <span class="n">gdb</span> <span class="n">python</span> <span class="n">core</span><span class="o">.</span><span class="n">XXXX</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -442,9 +453,10 @@ command to run <span class="cb">gdb</span> on it is:</p>
|
|||
<p><span class="sc">Coriolis</span> make uses of the <span class="cb">boost::python</span> module, but the <span class="sc">MacPorts</span> <span class="cb">boost</span>
|
||||
seems unable to work with the <span class="sc">Python</span> bundled with <span class="sc">MacOS</span>. So you have to install
|
||||
both of them from <span class="sc">MacPorts</span>:</p>
|
||||
<div class="highlight-python"><pre>dummy@macos:~$ port install boost +python27
|
||||
dummy@macos:~$ port select python python27
|
||||
dummy@macos:-$ export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@macos</span><span class="p">:</span><span class="o">~></span> <span class="n">port</span> <span class="n">install</span> <span class="n">boost</span> <span class="o">+</span><span class="n">python27</span>
|
||||
<span class="n">dummy</span><span class="nd">@macos</span><span class="p">:</span><span class="o">~></span> <span class="n">port</span> <span class="n">select</span> <span class="n">python</span> <span class="n">python27</span>
|
||||
<span class="n">dummy</span><span class="nd">@macos</span><span class="p">:</span><span class="o">-></span> <span class="n">export</span> <span class="n">DYLD_FRAMEWORK_PATH</span><span class="o">=/</span><span class="n">opt</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">Library</span><span class="o">/</span><span class="n">Frameworks</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The last two lines tell <span class="sc">MacOS</span> to use the <span class="sc">Python</span> from <span class="sc">MacPorts</span> and <em>not</em> from
|
||||
the system.</p>
|
||||
|
@ -453,13 +465,13 @@ the system.</p>
|
|||
</div>
|
||||
<div class="section" id="packaging-coriolis">
|
||||
<h2>Packaging Coriolis<a class="headerlink" href="#packaging-coriolis" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Packager should not uses <span class="cb">ccb</span>, instead <tt class="docutils literal"><span class="pre">bootstrap/Makefile.package</span></tt> is provided
|
||||
to emulate a top-level <tt class="docutils literal"><span class="pre">autotool</span></tt> makefile. Just copy it in the root of the
|
||||
<span class="sc">Coriolis</span> git repository (<tt class="docutils literal"><span class="pre">~/corriolis-2.x/src/coriolis/</span></tt>) and build.</p>
|
||||
<p>Sligthly outaded packaging configuration files can also be found under <tt class="docutils literal"><span class="pre">bootstrap/</span></tt>:</p>
|
||||
<p>Packager should not uses <span class="cb">ccb</span>, instead <code class="docutils literal"><span class="pre">bootstrap/Makefile.package</span></code> is provided
|
||||
to emulate a top-level <code class="docutils literal"><span class="pre">autotool</span></code> makefile. Just copy it in the root of the
|
||||
<span class="sc">Coriolis</span> git repository (<code class="docutils literal"><span class="pre">~/corriolis-2.x/src/coriolis/</span></code>) and build.</p>
|
||||
<p>Sligthly outaded packaging configuration files can also be found under <code class="docutils literal"><span class="pre">bootstrap/</span></code>:</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal"><span class="pre">bootstrap/coriolis2.spec.in</span></tt> for <span class="cb">rpm</span> based distributions.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">bootstrap/debian</span></tt> for <span class="sc">Debian</span> based distributions.</li>
|
||||
<li><code class="docutils literal"><span class="pre">bootstrap/coriolis2.spec.in</span></code> for <span class="cb">rpm</span> based distributions.</li>
|
||||
<li><code class="docutils literal"><span class="pre">bootstrap/debian</span></code> for <span class="sc">Debian</span> based distributions.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="hooking-up-into-alliance">
|
||||
|
@ -467,19 +479,21 @@ to emulate a top-level <tt class="docutils literal"><span class="pre">autotool</
|
|||
<p><span class="sc">Coriolis</span> relies on <span class="sc">Alliance</span> for the cell libraries. So after installing or
|
||||
packaging, you must configure it so that it can found those libraries.</p>
|
||||
<p>This is done by editing the one variable <span class="cb">cellsTop</span> in the <span class="sc">Alliance</span> helper
|
||||
(see <a class="reference internal" href="Configuration.html#alliance-helper"><em>Alliance Helper</em></a>). This variable must point to the directory of the
|
||||
(see <a class="reference internal" href="Configuration.html#alliance-helper"><span class="std std-ref">Alliance Helper</span></a>). This variable must point to the directory of the
|
||||
cells libraries. In a typical installation, this is generally
|
||||
<span class="cb">/usr/share/alliance/cells</span>.</p>
|
||||
</div>
|
||||
<div class="section" id="setting-up-the-environment-coriolisenv-py">
|
||||
<h2>Setting up the Environment (coriolisEnv.py)<a class="headerlink" href="#setting-up-the-environment-coriolisenv-py" title="Permalink to this headline">¶</a></h2>
|
||||
<p>To simplify the tedious task of configuring your environment, a helper is provided
|
||||
in the <tt class="docutils literal"><span class="pre">bootstrap</span></tt> source directory (also installed in the directory
|
||||
<tt class="docutils literal"><span class="pre">.../install/etc/coriolis2/</span></tt>) :</p>
|
||||
<div class="highlight-python"><pre>~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py</pre>
|
||||
in the <code class="docutils literal"><span class="pre">bootstrap</span></code> source directory (also installed in the directory
|
||||
<code class="docutils literal"><span class="pre">.../install/etc/coriolis2/</span></code>) :</p>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">~/</span><span class="n">coriolis</span><span class="o">-</span><span class="mf">2.</span><span class="n">x</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">coriolis</span><span class="o">/</span><span class="n">bootstrap</span><span class="o">/</span><span class="n">coriolisEnv</span><span class="o">.</span><span class="n">py</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Use it like this:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:~> eval `~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span>dummy@lepka:~> eval `~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
|
@ -488,7 +502,8 @@ When used under <span class="sc">rhel6</span> or clones, it needs to be run in t
|
|||
environement. The script then launch a new shell, which may cause an
|
||||
infinite loop if it’s called again in, say <span class="cb">~/.bashrc</span>.</p>
|
||||
<p>Instead you may want to create an alias:</p>
|
||||
<div class="last highlight-python"><pre>alias c2r='eval "`~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`"'</pre>
|
||||
<div class="last highlight-default"><div class="highlight"><pre><span></span><span class="n">alias</span> <span class="n">c2r</span><span class="o">=</span><span class="s1">'eval "`~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`"'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -515,7 +530,7 @@ infinite loop if it’s called again in, say <span class="cb">~/.bashrc</spa
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Coriolis User’s Guide" href="index.html"/>
|
||||
<link rel="next" title="Release Notes" href="Releases.html"/>
|
||||
|
@ -75,7 +77,7 @@
|
|||
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Coriolis User’s Guide</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">Credits & License</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Credits & License</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Releases.html">Release Notes</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="Releases.html#release-1-0-1475">Release 1.0.1475</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="Releases.html#release-1-0-1963">Release 1.0.1963</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -302,7 +307,7 @@ copyright© Chris C. N. <span class="sc">Chu</span> from the Iowa State Universi
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Coriolis User’s Guide" href="index.html"/>
|
||||
<link rel="next" title="Installation" href="Installation.html"/>
|
||||
|
@ -76,7 +78,7 @@
|
|||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Coriolis User’s Guide</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="LicenseCredits.html">Credits & License</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">Release Notes</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Release Notes</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#release-1-0-1475">Release 1.0.1475</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#release-1-0-1963">Release 1.0.1963</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#release-1-0-2049">Release 1.0.2049</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -324,8 +329,8 @@ achieve a speedup factor greater than 20...</li>
|
|||
<li>Added a Blif format parser to process circuits generated by the Yosys and ABC
|
||||
logic synthetizers.</li>
|
||||
<li>The multiples user defined configuration files are now grouped under
|
||||
a common hidden (dot) directory <tt class="docutils literal"><span class="pre">.coriolis2</span></tt> and the file extension
|
||||
is back from <tt class="docutils literal"><span class="pre">.conf</span></tt> to <tt class="docutils literal"><span class="pre">.py</span></tt>.</li>
|
||||
a common hidden (dot) directory <code class="docutils literal"><span class="pre">.coriolis2</span></code> and the file extension
|
||||
is back from <code class="docutils literal"><span class="pre">.conf</span></code> to <code class="docutils literal"><span class="pre">.py</span></code>.</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section" id="release-v2-2">
|
||||
|
@ -359,7 +364,7 @@ whole design down and including the standard cells.</li>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Coriolis User’s Guide" href="index.html"/>
|
||||
<link rel="next" title="Stratus Reference" href="../Stratus/Stratus.html"/>
|
||||
|
@ -136,7 +138,7 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">Python Interface for <span class="sc">Hurricane</span> / <span class="sc">Coriolis</span></a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Python Interface for <span class="sc">Hurricane</span> / <span class="sc">Coriolis</span></a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#plugins">Plugins</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#chip-placement">Chip Placement</a></li>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#clock-tree">Clock Tree</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -260,46 +265,48 @@ C++ one, so the C++ doxygen documentation could be used to write code with
|
|||
either languages.</p>
|
||||
<p><a class="reference external" href="file:../../../index.html">Summary of the C++ Documentation</a></p>
|
||||
<p>A script could be run directly in text mode from the command line or through
|
||||
the graphical interface (see <a class="reference internal" href="ViewerTools.html#python-scripts-in-cgt"><em>Executing Python Scripts in Cgt</em></a>).</p>
|
||||
the graphical interface (see <a class="reference internal" href="ViewerTools.html#python-scripts-in-cgt"><span class="std std-ref">Executing Python Scripts in Cgt</span></a>).</p>
|
||||
<p>Asides for this requirement, the python script can contain anything valid
|
||||
in <span class="sc">Python</span>, so don’t hesitate to use any package or extention.</p>
|
||||
<p>Small example of Python/Stratus script:</p>
|
||||
<div class="highlight-python"><pre>from Hurricane import *
|
||||
from Stratus import *
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">Hurricane</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">Stratus</span> <span class="k">import</span> <span class="o">*</span>
|
||||
|
||||
def doSomething ():
|
||||
# ...
|
||||
return
|
||||
<span class="k">def</span> <span class="nf">doSomething</span> <span class="p">():</span>
|
||||
<span class="c1"># ...</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
def ScriptMain ( **kw ):
|
||||
editor = None
|
||||
if kw.has_key('editor') and kw['editor']:
|
||||
editor = kw['editor']
|
||||
stratus.setEditor( editor )
|
||||
<span class="k">def</span> <span class="nf">ScriptMain</span> <span class="p">(</span> <span class="o">**</span><span class="n">kw</span> <span class="p">):</span>
|
||||
<span class="n">editor</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">kw</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s1">'editor'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">kw</span><span class="p">[</span><span class="s1">'editor'</span><span class="p">]:</span>
|
||||
<span class="n">editor</span> <span class="o">=</span> <span class="n">kw</span><span class="p">[</span><span class="s1">'editor'</span><span class="p">]</span>
|
||||
<span class="n">stratus</span><span class="o">.</span><span class="n">setEditor</span><span class="p">(</span> <span class="n">editor</span> <span class="p">)</span>
|
||||
|
||||
doSomething()
|
||||
return
|
||||
<span class="n">doSomething</span><span class="p">()</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
if __name__ == "__main__" :
|
||||
kw = {}
|
||||
success = ScriptMain( **kw )
|
||||
shellSuccess = 0
|
||||
if not success: shellSuccess = 1
|
||||
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span> <span class="p">:</span>
|
||||
<span class="n">kw</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">success</span> <span class="o">=</span> <span class="n">ScriptMain</span><span class="p">(</span> <span class="o">**</span><span class="n">kw</span> <span class="p">)</span>
|
||||
<span class="n">shellSuccess</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span> <span class="n">shellSuccess</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
sys.exit( shellSuccess )
|
||||
ScriptMain ()</pre>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span> <span class="n">shellSuccess</span> <span class="p">)</span>
|
||||
<span class="n">ScriptMain</span> <span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This typical script can be executed in two ways:</p>
|
||||
<ol class="arabic">
|
||||
<li><p class="first">Run directly as a <span class="sc">Python</span> script, thanks to the</p>
|
||||
<div class="highlight-python"><pre>if __name__ == "__main__" :</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span> <span class="p">:</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>part (this is standart <span class="sc">Python</span>). It is a simple adapter that will
|
||||
calls <span class="cb">ScriptMain()</span>.</p>
|
||||
</li>
|
||||
<li><p class="first">Through <span class="cb">cgt</span>, either in text or graphical mode. In that case, the
|
||||
<span class="cb">ScriptMain()</span> is directly called trough a sub-interpreter.
|
||||
The arguments of the script are passed through the <tt class="docutils literal"><span class="pre">**kw</span></tt> dictionnary.</p>
|
||||
The arguments of the script are passed through the <code class="docutils literal"><span class="pre">**kw</span></code> dictionnary.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="32%" />
|
||||
|
@ -313,13 +320,13 @@ The arguments of the script are passed through the <tt class="docutils literal">
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">'cell'</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">'cell'</span></code></td>
|
||||
<td>A Hurricane cell on which to work. Depending
|
||||
on the context, it may be <tt class="docutils literal"><span class="pre">None</span></tt>.
|
||||
on the context, it may be <code class="docutils literal"><span class="pre">None</span></code>.
|
||||
For example, when run from <span class="cb">cgt</span>, it the cell
|
||||
currently loaded in the viewer, if any.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">'editor'</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">'editor'</span></code></td>
|
||||
<td>The viewer from which the script is run, when
|
||||
lauched through <span class="cb">cgt</span>.</td>
|
||||
</tr>
|
||||
|
@ -339,34 +346,34 @@ through this method.</p>
|
|||
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
|
||||
<strong>exactly one</strong> instance of the chip’s core model.</p>
|
||||
<p> <img alt="Chip Top Structure" class="align-middle" src="../_images/chip-structure-1.png" style="width: 90%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/chip-structure-1.png"><img alt="Chip Top Structure" class="align-middle" src="../_images/chip-structure-1.png" style="width: 90%;" /></a> </p>
|
||||
<p>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 <tt class="docutils literal"><span class="pre">_chip.py</span></tt>
|
||||
This file must be named after the chip’s name, by appending <code class="docutils literal"><span class="pre">_chip.py</span></code>
|
||||
(obviously, it is a <span class="sc">Python</span> file). For instance if the chip netlist file
|
||||
is called <tt class="docutils literal"><span class="pre">amd2901_crl.vst</span></tt>, then the configuration file must be named
|
||||
<tt class="docutils literal"><span class="pre">amd2901_crl_chip.vst</span></tt>.</p>
|
||||
<p>Example of chip placement configuration file (for <tt class="docutils literal"><span class="pre">AM2901</span></tt>):</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">chip</span> <span class="o">=</span> \
|
||||
<span class="p">{</span> <span class="s">'pads.south'</span> <span class="p">:</span> <span class="p">[</span> <span class="s">'p_a3'</span> <span class="p">,</span> <span class="s">'p_a2'</span> <span class="p">,</span> <span class="s">'p_a1'</span> <span class="p">,</span> <span class="s">'p_r0'</span>
|
||||
<span class="p">,</span> <span class="s">'p_vddick0'</span><span class="p">,</span> <span class="s">'p_vssick0'</span><span class="p">,</span> <span class="s">'p_a0'</span> <span class="p">,</span> <span class="s">'p_i6'</span>
|
||||
<span class="p">,</span> <span class="s">'p_i8'</span> <span class="p">,</span> <span class="s">'p_i7'</span> <span class="p">,</span> <span class="s">'p_r3'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s">'pads.east'</span> <span class="p">:</span> <span class="p">[</span> <span class="s">'p_zero'</span> <span class="p">,</span> <span class="s">'p_i0'</span> <span class="p">,</span> <span class="s">'p_i1'</span> <span class="p">,</span> <span class="s">'p_i2'</span>
|
||||
<span class="p">,</span> <span class="s">'p_vddeck0'</span><span class="p">,</span> <span class="s">'p_vsseck0'</span><span class="p">,</span> <span class="s">'p_q3'</span> <span class="p">,</span> <span class="s">'p_b0'</span>
|
||||
<span class="p">,</span> <span class="s">'p_b1'</span> <span class="p">,</span> <span class="s">'p_b2'</span> <span class="p">,</span> <span class="s">'p_b3'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s">'pads.north'</span> <span class="p">:</span> <span class="p">[</span> <span class="s">'p_noe'</span> <span class="p">,</span> <span class="s">'p_y3'</span> <span class="p">,</span> <span class="s">'p_y2'</span> <span class="p">,</span> <span class="s">'p_y1'</span>
|
||||
<span class="p">,</span> <span class="s">'p_y0'</span> <span class="p">,</span> <span class="s">'p_vddeck1'</span><span class="p">,</span> <span class="s">'p_vsseck1'</span><span class="p">,</span> <span class="s">'p_np'</span>
|
||||
<span class="p">,</span> <span class="s">'p_ovr'</span> <span class="p">,</span> <span class="s">'p_cout'</span> <span class="p">,</span> <span class="s">'p_ng'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s">'pads.west'</span> <span class="p">:</span> <span class="p">[</span> <span class="s">'p_cin'</span> <span class="p">,</span> <span class="s">'p_i4'</span> <span class="p">,</span> <span class="s">'p_i5'</span> <span class="p">,</span> <span class="s">'p_i3'</span>
|
||||
<span class="p">,</span> <span class="s">'p_ck'</span> <span class="p">,</span> <span class="s">'p_d0'</span> <span class="p">,</span> <span class="s">'p_d1'</span> <span class="p">,</span> <span class="s">'p_d2'</span>
|
||||
<span class="p">,</span> <span class="s">'p_d3'</span> <span class="p">,</span> <span class="s">'p_q0'</span> <span class="p">,</span> <span class="s">'p_f3'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s">'core.size'</span> <span class="p">:</span> <span class="p">(</span> <span class="mi">1500</span><span class="p">,</span> <span class="mi">1500</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="s">'chip.size'</span> <span class="p">:</span> <span class="p">(</span> <span class="mi">3000</span><span class="p">,</span> <span class="mi">3000</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="s">'chip.clockTree'</span> <span class="p">:</span> <span class="bp">True</span>
|
||||
is called <code class="docutils literal"><span class="pre">amd2901_crl.vst</span></code>, then the configuration file must be named
|
||||
<code class="docutils literal"><span class="pre">amd2901_crl_chip.vst</span></code>.</p>
|
||||
<p>Example of chip placement configuration file (for <code class="docutils literal"><span class="pre">AM2901</span></code>):</p>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">chip</span> <span class="o">=</span> \
|
||||
<span class="p">{</span> <span class="s1">'pads.south'</span> <span class="p">:</span> <span class="p">[</span> <span class="s1">'p_a3'</span> <span class="p">,</span> <span class="s1">'p_a2'</span> <span class="p">,</span> <span class="s1">'p_a1'</span> <span class="p">,</span> <span class="s1">'p_r0'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_vddick0'</span><span class="p">,</span> <span class="s1">'p_vssick0'</span><span class="p">,</span> <span class="s1">'p_a0'</span> <span class="p">,</span> <span class="s1">'p_i6'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_i8'</span> <span class="p">,</span> <span class="s1">'p_i7'</span> <span class="p">,</span> <span class="s1">'p_r3'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s1">'pads.east'</span> <span class="p">:</span> <span class="p">[</span> <span class="s1">'p_zero'</span> <span class="p">,</span> <span class="s1">'p_i0'</span> <span class="p">,</span> <span class="s1">'p_i1'</span> <span class="p">,</span> <span class="s1">'p_i2'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_vddeck0'</span><span class="p">,</span> <span class="s1">'p_vsseck0'</span><span class="p">,</span> <span class="s1">'p_q3'</span> <span class="p">,</span> <span class="s1">'p_b0'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_b1'</span> <span class="p">,</span> <span class="s1">'p_b2'</span> <span class="p">,</span> <span class="s1">'p_b3'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s1">'pads.north'</span> <span class="p">:</span> <span class="p">[</span> <span class="s1">'p_noe'</span> <span class="p">,</span> <span class="s1">'p_y3'</span> <span class="p">,</span> <span class="s1">'p_y2'</span> <span class="p">,</span> <span class="s1">'p_y1'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_y0'</span> <span class="p">,</span> <span class="s1">'p_vddeck1'</span><span class="p">,</span> <span class="s1">'p_vsseck1'</span><span class="p">,</span> <span class="s1">'p_np'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_ovr'</span> <span class="p">,</span> <span class="s1">'p_cout'</span> <span class="p">,</span> <span class="s1">'p_ng'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s1">'pads.west'</span> <span class="p">:</span> <span class="p">[</span> <span class="s1">'p_cin'</span> <span class="p">,</span> <span class="s1">'p_i4'</span> <span class="p">,</span> <span class="s1">'p_i5'</span> <span class="p">,</span> <span class="s1">'p_i3'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_ck'</span> <span class="p">,</span> <span class="s1">'p_d0'</span> <span class="p">,</span> <span class="s1">'p_d1'</span> <span class="p">,</span> <span class="s1">'p_d2'</span>
|
||||
<span class="p">,</span> <span class="s1">'p_d3'</span> <span class="p">,</span> <span class="s1">'p_q0'</span> <span class="p">,</span> <span class="s1">'p_f3'</span> <span class="p">]</span>
|
||||
<span class="p">,</span> <span class="s1">'core.size'</span> <span class="p">:</span> <span class="p">(</span> <span class="mi">1500</span><span class="p">,</span> <span class="mi">1500</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="s1">'chip.size'</span> <span class="p">:</span> <span class="p">(</span> <span class="mi">3000</span><span class="p">,</span> <span class="mi">3000</span> <span class="p">)</span>
|
||||
<span class="p">,</span> <span class="s1">'chip.clockTree'</span> <span class="p">:</span> <span class="kc">True</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The file must contain <em>one dictionnary</em> named <tt class="docutils literal"><span class="pre">chip</span></tt>.</p>
|
||||
<p>The file must contain <em>one dictionnary</em> named <code class="docutils literal"><span class="pre">chip</span></code>.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="29%" />
|
||||
|
@ -380,36 +387,36 @@ is called <tt class="docutils literal"><span class="pre">amd2901_crl.vst</span><
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">'pad.south'</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">'pad.south'</span></code></td>
|
||||
<td>Ordered list (left to right) of pad instances names
|
||||
to put on the south side of the chip</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">'pad.east'</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">'pad.east'</span></code></td>
|
||||
<td>Ordered list (down to up) of pad instances names
|
||||
to put on the east side of the chip</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">'pad.north'</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">'pad.north'</span></code></td>
|
||||
<td>Ordered list (left to right) of pad instances names
|
||||
to put on the north side of the chip</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">'pad.west'</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">'pad.west'</span></code></td>
|
||||
<td>Ordered list (down to up) of pad instances names
|
||||
to put on the west side of the chip</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">'core.size'</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">'core.size'</span></code></td>
|
||||
<td>The size of the core (to be used by the placer)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">'chip.size'</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">'chip.size'</span></code></td>
|
||||
<td>The size of the whole chip. The sides must be great
|
||||
enough to accomodate all the pads</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">'chip.clockTree'</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">'chip.clockTree'</span></code></td>
|
||||
<td>Whether to generate a clock tree or not. This calls
|
||||
the ClockTree plugin</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Configuration parameters, defaults are defined in <tt class="docutils literal"><span class="pre">etc/coriolis2/<STECHNO>/plugins.conf</span></tt>.</p>
|
||||
<p>Configuration parameters, defaults are defined in <code class="docutils literal"><span class="pre">etc/coriolis2/<STECHNO>/plugins.conf</span></code>.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="43%" />
|
||||
|
@ -425,7 +432,7 @@ the ClockTree plugin</td>
|
|||
<tbody valign="top">
|
||||
<tr class="row-even"><td colspan="3"><strong>Chip Plugin Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.block.rails.count</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.block.rails.count</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">5</span></td>
|
||||
</tr>
|
||||
|
@ -434,69 +441,69 @@ block. Must be odd and suppérior to 5.
|
|||
One rail for the clock and at least two pairs
|
||||
of power/grounds</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.block.rails.hWidth</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.block.rails.hWidth</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">12</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The horizontal with of the rails</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.block.rails.vWidth</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.block.rails.vWidth</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">12</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The vertical with of the rails</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.block.rails.hSpacing</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.block.rails.hSpacing</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">6</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The spacing, <em>edge to edge</em> of two adjacent
|
||||
horizontal rails</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.block.rails.vSpacing</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.block.rails.vSpacing</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">6</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The spacing, <em>edge to edge</em> of two adjacent
|
||||
vertical rails</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.pad.pck</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.pad.pck</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">pck_px</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The model name of the pad connected to the
|
||||
chip external clock</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.pad.pvddeck</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.pad.pvddeck</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">pvddeck_px</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The model name of the pad connected to the
|
||||
<tt class="docutils literal"><span class="pre">vdde</span></tt> (external power) and suppling it to
|
||||
<code class="docutils literal"><span class="pre">vdde</span></code> (external power) and suppling it to
|
||||
the core</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.pad.pvsseck</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.pad.pvsseck</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">pvsseck_px</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The model name of the pad connected to the
|
||||
<tt class="docutils literal"><span class="pre">vsse</span></tt> (external ground) and suppling it to
|
||||
<code class="docutils literal"><span class="pre">vsse</span></code> (external ground) and suppling it to
|
||||
the core</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.pad.pvddick</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.pad.pvddick</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">pvddick_px</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The model name of the pad connected to the
|
||||
<tt class="docutils literal"><span class="pre">vddi</span></tt> (internal power) and suppling it to
|
||||
<code class="docutils literal"><span class="pre">vddi</span></code> (internal power) and suppling it to
|
||||
the core</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">chip.pad.pvssick</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">chip.pad.pvssick</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">pvssick_px</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The model name of the pad connected to the
|
||||
<tt class="docutils literal"><span class="pre">vssi</span></tt> (internal ground) and suppling it to
|
||||
<code class="docutils literal"><span class="pre">vssi</span></code> (internal ground) and suppling it to
|
||||
the core</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -504,8 +511,8 @@ the core</td>
|
|||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">If no clock tree is generated, then the clock rail is <em>not</em> created.
|
||||
So even if the requested number of rails <tt class="docutils literal"><span class="pre">chip.block.rails.count</span></tt> is, say 5,
|
||||
only four rails (2* <tt class="docutils literal"><span class="pre">power</span></tt>, 2* <tt class="docutils literal"><span class="pre">ground</span></tt>) will be generateds.</p>
|
||||
So even if the requested number of rails <code class="docutils literal"><span class="pre">chip.block.rails.count</span></code> is, say 5,
|
||||
only four rails (2* <code class="docutils literal"><span class="pre">power</span></code>, 2* <code class="docutils literal"><span class="pre">ground</span></code>) will be generateds.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="clock-tree">
|
||||
|
@ -521,15 +528,15 @@ chip level).</p>
|
|||
<li><p class="first">On <strong>blocks</strong>, the sub nets are created directly in the top block.</p>
|
||||
</li>
|
||||
<li><p class="first">The sub-nets are named according to a simple geometrical scheme.
|
||||
A common prefix <tt class="docutils literal"><span class="pre">ck_htree</span></tt>, then one postfix by level telling
|
||||
A common prefix <code class="docutils literal"><span class="pre">ck_htree</span></code>, then one postfix by level telling
|
||||
on which quarter of plane the sub-clock is located:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><tt class="docutils literal"><span class="pre">_bl</span></tt>: bottom left plane quarter.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">_br</span></tt>: bottom right plane quarter.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">_tl</span></tt>: top left plane quarter.</li>
|
||||
<li><tt class="docutils literal"><span class="pre">_tr</span></tt>: top right plane quarter.</li>
|
||||
<li><code class="docutils literal"><span class="pre">_bl</span></code>: bottom left plane quarter.</li>
|
||||
<li><code class="docutils literal"><span class="pre">_br</span></code>: bottom right plane quarter.</li>
|
||||
<li><code class="docutils literal"><span class="pre">_tl</span></code>: top left plane quarter.</li>
|
||||
<li><code class="docutils literal"><span class="pre">_tr</span></code>: top right plane quarter.</li>
|
||||
</ol>
|
||||
<p>We can have <tt class="docutils literal"><span class="pre">ck_htree_bl</span></tt>, <tt class="docutils literal"><span class="pre">ck_htree_bl_bl</span></tt>, <tt class="docutils literal"><span class="pre">ch_htree_bl_tl</span></tt> and so on.</p>
|
||||
<p>We can have <code class="docutils literal"><span class="pre">ck_htree_bl</span></code>, <code class="docutils literal"><span class="pre">ck_htree_bl_bl</span></code>, <code class="docutils literal"><span class="pre">ch_htree_bl_tl</span></code> and so on.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>The clock tree plugin works in four steps:</p>
|
||||
|
@ -550,17 +557,17 @@ contains all the clock sub-nets. The interface is <em>not</em> changed.</li>
|
|||
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 <tt class="docutils literal"><span class="pre">_clocked</span></tt> suffix.
|
||||
For example, the sub-block model <tt class="docutils literal"><span class="pre">ram.vst</span></tt> will become <tt class="docutils literal"><span class="pre">ram_clocked.vst</span></tt>.</li>
|
||||
with the added clock signal is renamed with a <code class="docutils literal"><span class="pre">_clocked</span></code> suffix.
|
||||
For example, the sub-block model <code class="docutils literal"><span class="pre">ram.vst</span></code> will become <code class="docutils literal"><span class="pre">ram_clocked.vst</span></code>.</li>
|
||||
</ul>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">If you are to re-run the clock tree plugin on a netlist, be careful
|
||||
to erase any previously generated <tt class="docutils literal"><span class="pre">_clocked</span></tt> file (both netlist and
|
||||
layout: <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">*.clocked.{ap,vst}</span></tt>). And restart <span class="cb">cgt</span> to clear it’s
|
||||
to erase any previously generated <code class="docutils literal"><span class="pre">_clocked</span></code> file (both netlist and
|
||||
layout: <code class="docutils literal"><span class="pre">rm</span> <span class="pre">*.clocked.{ap,vst}</span></code>). And restart <span class="cb">cgt</span> to clear it’s
|
||||
memory cache.</p>
|
||||
</div>
|
||||
<p>Configuration parameters, defaults are defined in <tt class="docutils literal"><span class="pre">etc/coriolis2/<STECHNO>/plugins.conf</span></tt>.</p>
|
||||
<p>Configuration parameters, defaults are defined in <code class="docutils literal"><span class="pre">etc/coriolis2/<STECHNO>/plugins.conf</span></code>.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="43%" />
|
||||
|
@ -576,24 +583,24 @@ memory cache.</p>
|
|||
<tbody valign="top">
|
||||
<tr class="row-even"><td colspan="3"><strong>ClockTree Plugin Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">clockTree.minimumSide</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">clockTree.minimumSide</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">300</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The minimum size below which the clock tree
|
||||
will stop to perform quadri-partitions</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">clockTree.buffer</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">clockTree.buffer</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">buf_x2</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The buffer model to use to drive sub-nets</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">clockTree.placerEngine</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">clockTree.placerEngine</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">Etesian</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The placer to use. Other value is <tt class="docutils literal"><span class="pre">Mauka</span></tt>
|
||||
<tr class="row-even"><td colspan="2">The placer to use. Other value is <code class="docutils literal"><span class="pre">Mauka</span></code>
|
||||
the simulated annealing placer which will go
|
||||
into retirement very soon</td>
|
||||
</tr>
|
||||
|
@ -616,17 +623,19 @@ which perform the whole P&R of the design.</p>
|
|||
<p>You can generate the chip using one of the following method:</p>
|
||||
<ol class="arabic">
|
||||
<li><p class="first"><strong>Command line mode:</strong> directly run the script:</p>
|
||||
<div class="highlight-python"><pre>dummy@lepka:AM2901$ ./doChip -V --cell=amd2901</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">AM2901</span><span class="o">></span> <span class="o">./</span><span class="n">doChip</span> <span class="o">-</span><span class="n">V</span> <span class="o">--</span><span class="n">cell</span><span class="o">=</span><span class="n">amd2901</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p class="first"><strong>Graphic mode:</strong> launch <span class="cb">cgt</span>, load chip netlist <tt class="docutils literal"><span class="pre">amd2901</span></tt> (the top cell)
|
||||
<li><p class="first"><strong>Graphic mode:</strong> launch <span class="cb">cgt</span>, load chip netlist <code class="docutils literal"><span class="pre">amd2901</span></code> (the top cell)
|
||||
then run the <span class="sc">Python</span> script <span class="cb">doChip.py</span>.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>Between two consecutive run, be sure to erase the netlist/layout generateds:</p>
|
||||
<div class="last highlight-python"><pre>dummy@lepka:AM2901$ rm *_clocked*.vst *.ap</pre>
|
||||
<div class="last highlight-default"><div class="highlight"><pre><span></span><span class="n">dummy</span><span class="nd">@lepka</span><span class="p">:</span><span class="n">AM2901</span><span class="o">></span> <span class="n">rm</span> <span class="o">*</span><span class="n">clocked</span><span class="o">*.</span><span class="n">vst</span> <span class="o">*.</span><span class="n">ap</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -653,7 +662,7 @@ then run the <span class="sc">Python</span> script <span class="cb">doChip.py</s
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="up" title="Coriolis User’s Guide" href="index.html"/>
|
||||
<link rel="next" title="Python Interface for Hurricane / Coriolis" href="ScriptsPlugins.html"/>
|
||||
|
@ -109,7 +111,7 @@
|
|||
<li class="toctree-l3"><a class="reference internal" href="Configuration.html#hacking-the-configuration-files">Hacking the Configuration Files</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="">CGT - The Graphical Interface</a><ul>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">CGT - The Graphical Interface</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#viewer-tools">Viewer & Tools</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#stratus-netlist-capture"><span class="sc">Stratus</span> Netlist Capture</a></li>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#the-hurricane-data-base">The <span class="sc">Hurricane</span> Data-Base</a></li>
|
||||
|
@ -205,15 +207,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -265,7 +270,7 @@ is not yet placed.</li>
|
|||
</li>
|
||||
</ul>
|
||||
<p>Features are detailed in <a class="reference internal" href="#viewer-tools">Viewer & Tools</a>.</p>
|
||||
<p><img alt="Viewer Basic Snapshot" class="align-middle" src="../_images/Viewer-1.png" style="width: 80%;" /></p>
|
||||
<p><a class="reference internal" href="../_images/Viewer-1.png"><img alt="Viewer Basic Snapshot" class="align-middle" src="../_images/Viewer-1.png" style="width: 80%;" /></a></p>
|
||||
<ul class="simple">
|
||||
<li>The <strong>Controller</strong>, which allows:<ul>
|
||||
<li>Tweak what is displayer by the <em>Viewer</em>. Through the <em>Look</em>,
|
||||
|
@ -279,7 +284,7 @@ They are closely related to Configuration & Initialisation.</li>
|
|||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-1.png" style="width: 80%;" /></a> </p>
|
||||
<div class="section" id="viewer-tools">
|
||||
<span id="id1"></span><h2>Viewer & Tools<a class="headerlink" href="#viewer-tools" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="stratus-netlist-capture">
|
||||
|
@ -342,7 +347,7 @@ and write Alliance designs and libraries directly.</p>
|
|||
<div class="section" id="etesian-placer">
|
||||
<h3>Etesian – Placer<a class="headerlink" href="#etesian-placer" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The <span class="sc">Etesian</span> placer is a state of the art (as of 2015) analytical placer. It is
|
||||
within <tt class="docutils literal"><span class="pre">5%</span></tt> of other placers’ solutions, but is normally a bit worse than ePlace.
|
||||
within <code class="docutils literal"><span class="pre">5%</span></code> of other placers’ solutions, but is normally a bit worse than ePlace.
|
||||
This <span class="sc">Coriolis</span> tool is actually an encapsulation of <span class="sc">Coloquinte</span> which <em>is</em> the placer.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
|
@ -356,14 +361,14 @@ supply a placement for it. We need to implement uniquification in the
|
|||
<p>The placement area is defined by the top cell abutment box.</p>
|
||||
<p>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 <tt class="docutils literal"><span class="pre">(0,0,ID)</span></tt>. That is, all the abutments boxes, whatever the
|
||||
all placed at position <code class="docutils literal"><span class="pre">(0,0,ID)</span></code>. That is, all the abutments boxes, whatever the
|
||||
hierarchical level, defines the same area (they are exactly superposed).</p>
|
||||
<p>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.</p>
|
||||
<p> <img alt="Etesian Abutment Box" class="align-middle" src="../_images/etesian-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/etesian-1.png"><img alt="Etesian Abutment Box" class="align-middle" src="../_images/etesian-1.png" style="width: 80%;" /></a> </p>
|
||||
<p> <span class="raw-html"><p class="noindent"></p></span>
|
||||
<strong>Computing the Placement Area</strong></p>
|
||||
<p>The placement area is computed using the <tt class="docutils literal"><span class="pre">etesian.aspectRatio</span></tt> and <tt class="docutils literal"><span class="pre">etesian.spaceMargin</span></tt>
|
||||
<p>The placement area is computed using the <code class="docutils literal"><span class="pre">etesian.aspectRatio</span></code> and <code class="docutils literal"><span class="pre">etesian.spaceMargin</span></code>
|
||||
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.</p>
|
||||
<p> <span class="raw-html"><p class="noindent"></p></span>
|
||||
|
@ -395,21 +400,21 @@ may be unroutable.</p>
|
|||
<tbody valign="top">
|
||||
<tr class="row-even"><td colspan="3"><strong>Etesian Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">etesian.aspectRatio</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">etesian.aspectRatio</span></code></td>
|
||||
<td>TypePercentage</td>
|
||||
<td><span class="cb">100</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Define the height on width <tt class="docutils literal"><span class="pre">H/W</span></tt> aspect
|
||||
<tr class="row-even"><td colspan="2">Define the height on width <code class="docutils literal"><span class="pre">H/W</span></code> aspect
|
||||
ratio, can be comprised between 10 and 1000</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">etesian.spaceMargin</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">etesian.spaceMargin</span></code></td>
|
||||
<td>TypePercentage</td>
|
||||
<td><span class="cb">5</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">The extra white space added to the total area
|
||||
of the standard cells</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">etesian.uniformDensity</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">etesian.uniformDensity</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
|
@ -417,14 +422,14 @@ of the standard cells</td>
|
|||
across the area or allowed to form denser
|
||||
clusters</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">etesian.effort</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">etesian.effort</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">2</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Sets the balance between the speed of the
|
||||
placer and the solution quality</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">etesian.routingDriven</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">etesian.routingDriven</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
|
@ -432,16 +437,16 @@ placer and the solution quality</td>
|
|||
and whitespace allocation to improve
|
||||
routability; to be implemented</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">etesian.graphics</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">etesian.graphics</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">2</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2"><p class="first">How often the display will be refreshed
|
||||
More refreshing slows the placer.</p>
|
||||
<ul class="last simple">
|
||||
<li><tt class="docutils literal"><span class="pre">1</span></tt> shows both upper and lower bounds</li>
|
||||
<li><tt class="docutils literal"><span class="pre">2</span></tt> only shows lower bound results</li>
|
||||
<li><tt class="docutils literal"><span class="pre">3</span></tt> only shows the final results</li>
|
||||
<li><code class="docutils literal"><span class="pre">1</span></code> shows both upper and lower bounds</li>
|
||||
<li><code class="docutils literal"><span class="pre">2</span></code> only shows lower bound results</li>
|
||||
<li><code class="docutils literal"><span class="pre">3</span></code> only shows the final results</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -461,8 +466,8 @@ a global routing <em>solution</em> can be saved to disk and reloaded for later u
|
|||
<span class="cb">kgr</span> extention. It is in <a class="reference external" href="http://www.cerc.utexas.edu/~thyeros/boxrouter/boxrouter.htm">Box Router</a> output format.</p>
|
||||
<p> <span class="raw-html"><p class="noindent"></p></span> Menus:</p>
|
||||
<ul class="simple">
|
||||
<li><img class="math" src="../_images/math/0183b70ce5b7bb56d8ad838429a01d2858d99612.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Save Global Routing}"/></li>
|
||||
<li><img class="math" src="../_images/math/7242aab75de488b349c95eca46e25a03ea80c207.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Load Global Routing}"/></li>
|
||||
<li><img class="math" src="../_images/math/ab9c214f89790a2afdc94a731f08c35d0fafa77d.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Save Global Routing}"/></li>
|
||||
<li><img class="math" src="../_images/math/0b37db03668389c8e33d766f186469af280334bb.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Load Global Routing}"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="kite-detailed-router">
|
||||
|
@ -492,15 +497,15 @@ In the event of a failure, on a saturated design, you may decrease the
|
|||
<cite>edge saturation ratio</cite> (argument <cite>–edge</cite>) to balance more evenly the design
|
||||
saturation. That is, the maximum saturation decrease at the price of a wider
|
||||
saturated area and increased wirelength. This is the saturation of the
|
||||
<em>global</em> router <span class="sc">Knik</span>, and you may increase/decrease by steps of <tt class="docutils literal"><span class="pre">5%</span></tt>,
|
||||
<em>global</em> router <span class="sc">Knik</span>, and you may increase/decrease by steps of <code class="docutils literal"><span class="pre">5%</span></code>,
|
||||
which represent one track. The maximum capacity of the <span class="sc">SxLib</span> gauge is
|
||||
10 tracks in two layers, that makes 20 tracks by <span class="sc">Knik</span> edge.</p>
|
||||
<p>Routing a design is done in four ordered steps:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>Detailed pre-route <img class="math" src="../_images/math/6a2cfe8749bfed89e3c82527f74daaff6378d70e.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed PreRoute}"/></li>
|
||||
<li>Global routing <img class="math" src="../_images/math/d3499f8834024d33c997cd9730e31d3a02ebab18.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Global Route}"/></li>
|
||||
<li>Detailed routing <img class="math" src="../_images/math/642cf89034341e49c1fbc546ca776e1205ae49c0.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed Route}"/></li>
|
||||
<li>Finalize routing <img class="math" src="../_images/math/e171f7265a6f90fdc6622dfa4a4fd08927ae5fea.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Finalize Route}"/></li>
|
||||
<li>Detailed pre-route <img class="math" src="../_images/math/9354e2441491d324ef5fd162920f581bdf022af5.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed PreRoute}"/></li>
|
||||
<li>Global routing <img class="math" src="../_images/math/8080e7327f421afe79e142b39735819ab9631cb9.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Global Route}"/></li>
|
||||
<li>Detailed routing <img class="math" src="../_images/math/44344a23b2a3007fed067629259108385790ee6a.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed Route}"/></li>
|
||||
<li>Finalize routing <img class="math" src="../_images/math/0d59c123dd2cd130ca29a2ba930fabbc4f547771.png" alt="\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Finalize Route}"/></li>
|
||||
</ol>
|
||||
<p>It is possible to supply to the router a complete wiring for some nets that the user’s
|
||||
wants to be routed according to a specific topology. The supplied topology must respect
|
||||
|
@ -538,14 +543,14 @@ the <span class="cb">kite.</span> prefix.</p>
|
|||
<tbody valign="top">
|
||||
<tr class="row-even"><td colspan="3"><strong>Katabatic Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">katabatic.topRoutingLayer</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">katabatic.topRoutingLayer</span></code></td>
|
||||
<td>TypeString</td>
|
||||
<td><span class="cb">METAL5</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Define the highest metal layer that will be
|
||||
used for routing (inclusive).</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">katabatic.globalLengthThreshold</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">katabatic.globalLengthThreshold</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">1450</span></td>
|
||||
</tr>
|
||||
|
@ -553,15 +558,15 @@ used for routing (inclusive).</td>
|
|||
method which is no longer used (did not give
|
||||
good results)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">katabatic.saturateRatio</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">katabatic.saturateRatio</span></code></td>
|
||||
<td>TypePercentage</td>
|
||||
<td><span class="cb">80</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">If <tt class="docutils literal"><span class="pre">M(x)</span></tt> density is above this ratio,
|
||||
<tr class="row-even"><td colspan="2">If <code class="docutils literal"><span class="pre">M(x)</span></code> density is above this ratio,
|
||||
move up feedthru global segments up from
|
||||
depth <tt class="docutils literal"><span class="pre">x</span></tt> to <tt class="docutils literal"><span class="pre">x+2</span></tt></td>
|
||||
depth <code class="docutils literal"><span class="pre">x</span></code> to <code class="docutils literal"><span class="pre">x+2</span></code></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">katabatic.saturateRp</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">katabatic.saturateRp</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">8</span></td>
|
||||
</tr>
|
||||
|
@ -572,7 +577,7 @@ in excess</td>
|
|||
</tr>
|
||||
<tr class="row-odd"><td colspan="3"><strong>Knik Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.hTracksReservedLocal</span></tt></td>
|
||||
<tr class="row-even"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.hTracksReservedLocal</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">3</span></td>
|
||||
</tr>
|
||||
|
@ -583,15 +588,15 @@ router. Horizontal and vertical locally
|
|||
reserved capacity can be distinguished for
|
||||
more accuracy.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.vTracksReservedLocal</span></tt></td>
|
||||
<tr class="row-even"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.vTracksReservedLocal</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">3</span></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td colspan="2">cf. <tt class="docutils literal"><span class="pre">kite.hTracksReservedLocal</span></tt></td>
|
||||
<tr class="row-odd"><td colspan="2">cf. <code class="docutils literal"><span class="pre">kite.hTracksReservedLocal</span></code></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="3"><strong>Kite Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.eventsLimit</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.eventsLimit</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">4000002</span></td>
|
||||
</tr>
|
||||
|
@ -600,7 +605,7 @@ this is a last ditch safety against infinite
|
|||
loop. It’s perhaps a little too low for big
|
||||
designs</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.ripupCost</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.ripupCost</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">3</span></td>
|
||||
</tr>
|
||||
|
@ -608,19 +613,19 @@ designs</td>
|
|||
cost to avoid a loop between two ripped up
|
||||
segments</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.strapRipupLimit</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.strapRipupLimit</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">16</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Maximum number of ripup for <em>strap</em> segments</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.localRipupLimit</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.localRipupLimit</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">9</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Maximum number of ripup for <em>local</em> segments</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.globalRipupLimit</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.globalRipupLimit</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">5</span></td>
|
||||
</tr>
|
||||
|
@ -628,7 +633,7 @@ segments</td>
|
|||
when this limit is reached, triggers topologic
|
||||
modification</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">kite.longGlobalRipupLimit</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">kite.longGlobalRipupLimit</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">5</span></td>
|
||||
</tr>
|
||||
|
@ -646,19 +651,19 @@ topological modification</td>
|
|||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><strong>How Cgt Locates Python Scripts:</strong>
|
||||
<span class="cb">cgt</span> uses the Python <tt class="docutils literal"><span class="pre">import</span></tt> mechanism to load Python scripts.
|
||||
So you must give the name of your script whitout <tt class="docutils literal"><span class="pre">.py</span></tt> extention and
|
||||
it must be reachable through the <tt class="docutils literal"><span class="pre">PYTHONPATH</span></tt>. You may uses the
|
||||
<span class="cb">cgt</span> uses the Python <code class="docutils literal"><span class="pre">import</span></code> mechanism to load Python scripts.
|
||||
So you must give the name of your script whitout <code class="docutils literal"><span class="pre">.py</span></code> extention and
|
||||
it must be reachable through the <code class="docutils literal"><span class="pre">PYTHONPATH</span></code>. You may uses the
|
||||
dotted module notation.</p>
|
||||
</div>
|
||||
<p>A Python/Stratus script must contains a function called <tt class="docutils literal"><span class="pre">ScriptMain()</span></tt>
|
||||
<p>A Python/Stratus script must contains a function called <code class="docutils literal"><span class="pre">ScriptMain()</span></code>
|
||||
with one optional argument, the graphical editor into which it may be
|
||||
running (will be set to <tt class="docutils literal"><span class="pre">None</span></tt> in text mode). The Python interface to
|
||||
running (will be set to <code class="docutils literal"><span class="pre">None</span></code> in text mode). The Python interface to
|
||||
the editor (type: <span class="cb">CellViewer</span>) is limited to basic capabilities
|
||||
only.</p>
|
||||
<p>Any script given on the command line will be run immediatly <em>after</em> the
|
||||
initializations and <em>before</em> any other argument is processed.</p>
|
||||
<p>For more explanation on Python scripts see <a class="reference internal" href="ScriptsPlugins.html#python-interface-to-coriolis"><em>Python Interface for Hurricane / Coriolis</em></a>.</p>
|
||||
<p>For more explanation on Python scripts see <a class="reference internal" href="ScriptsPlugins.html#python-interface-to-coriolis"><span class="std std-ref">Python Interface for Hurricane / Coriolis</span></a>.</p>
|
||||
</div>
|
||||
<div class="section" id="printing-snapshots">
|
||||
<h3>Printing & Snapshots<a class="headerlink" href="#printing-snapshots" title="Permalink to this headline">¶</a></h3>
|
||||
|
@ -666,8 +671,8 @@ initializations and <em>before</em> any other argument is processed.</p>
|
|||
menu or the <span class="fboxtt">CTRL+P</span> shortcut to open the dialog box.</p>
|
||||
<p>The print functionality uses exactly the same rendering mechanism as for the
|
||||
screen, beeing almost <em>WYSIWYG</em>. Thus, to obtain the best results it is advisable
|
||||
to select the <tt class="docutils literal"><span class="pre">Coriolis.Printer</span></tt> look (in the <em>Controller</em>), which uses a
|
||||
white background and much suited for high resolutions <tt class="docutils literal"><span class="pre">32x32</span></tt> pixels patterns</p>
|
||||
to select the <code class="docutils literal"><span class="pre">Coriolis.Printer</span></code> look (in the <em>Controller</em>), which uses a
|
||||
white background and much suited for high resolutions <code class="docutils literal"><span class="pre">32x32</span></code> pixels patterns</p>
|
||||
<p>There is also two mode of printing selectable through the <em>Controller</em>
|
||||
<strong>Settings -> Misc -> Printer/Snapshot Mode</strong>:</p>
|
||||
<table border="1" class="docutils">
|
||||
|
@ -683,7 +688,7 @@ white background and much suited for high resolutions <tt class="docutils litera
|
|||
</tr>
|
||||
<tr class="row-even"><td><strong>Cell Mode</strong></td>
|
||||
<td>150</td>
|
||||
<td>For single <tt class="docutils literal"><span class="pre">Cell</span></tt> printing or very small designs.
|
||||
<td>For single <code class="docutils literal"><span class="pre">Cell</span></code> printing or very small designs.
|
||||
Patterns will be bigger and more readable.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><strong>Design Mode</strong></td>
|
||||
|
@ -697,7 +702,7 @@ outlines).</td>
|
|||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><em>The pdf file size</em>
|
||||
Be aware that the generated <span class="sc">pdf</span> files are indeed only pixmaps.
|
||||
So they can grew very large if you select paper format above <tt class="docutils literal"><span class="pre">A2</span></tt>
|
||||
So they can grew very large if you select paper format above <code class="docutils literal"><span class="pre">A2</span></code>
|
||||
or similar.</p>
|
||||
</div>
|
||||
<p> <span class="raw-html"><p class="noindent"></p></span>
|
||||
|
@ -842,7 +847,7 @@ in which this model is instanciated).</td>
|
|||
</div>
|
||||
<div class="section" id="cgt-command-line-options">
|
||||
<h3>Cgt Command Line Options<a class="headerlink" href="#cgt-command-line-options" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Appart from the obvious <tt class="docutils literal"><span class="pre">--text</span></tt> options, all can be used for text and graphical mode.</p>
|
||||
<p>Appart from the obvious <code class="docutils literal"><span class="pre">--text</span></code> options, all can be used for text and graphical mode.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="38%" />
|
||||
|
@ -900,7 +905,7 @@ any design of <cite>100K</cite>. gates. For bigger
|
|||
designs you may wants to increase this limit.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><cite>–stratus-script=<module></cite></td>
|
||||
<td>Run the Python/Stratus script <tt class="docutils literal"><span class="pre">module</span></tt>.
|
||||
<td>Run the Python/Stratus script <code class="docutils literal"><span class="pre">module</span></code>.
|
||||
See <a class="reference internal" href="#python-scripts-in-cgt">Python Scripts in Cgt</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -909,16 +914,19 @@ See <a class="reference internal" href="#python-scripts-in-cgt">Python Scripts i
|
|||
<p>Some Examples :</p>
|
||||
<ul>
|
||||
<li><p class="first">Run both global and detailed router, then save the routed design :</p>
|
||||
<div class="highlight-python"><pre>> cgt -v -t -G -R --cell=design --save-design=design_kite</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">></span> <span class="n">cgt</span> <span class="o">-</span><span class="n">v</span> <span class="o">-</span><span class="n">t</span> <span class="o">-</span><span class="n">G</span> <span class="o">-</span><span class="n">R</span> <span class="o">--</span><span class="n">cell</span><span class="o">=</span><span class="n">design</span> <span class="o">--</span><span class="n">save</span><span class="o">-</span><span class="n">design</span><span class="o">=</span><span class="n">design_kite</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p class="first">Load a previous global solution, run the detailed router, then save the
|
||||
routed design :</p>
|
||||
<div class="highlight-python"><pre>> cgt -v -t --load-global -R --cell=design --save-design=design_kite</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">></span> <span class="n">cgt</span> <span class="o">-</span><span class="n">v</span> <span class="o">-</span><span class="n">t</span> <span class="o">--</span><span class="n">load</span><span class="o">-</span><span class="k">global</span> <span class="o">-</span><span class="n">R</span> <span class="o">--</span><span class="n">cell</span><span class="o">=</span><span class="n">design</span> <span class="o">--</span><span class="n">save</span><span class="o">-</span><span class="n">design</span><span class="o">=</span><span class="n">design_kite</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p class="first">Run the global router, then save the global routing solution :</p>
|
||||
<div class="highlight-python"><pre>> cgt -v -t -G --save-global --cell=design</pre>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">></span> <span class="n">cgt</span> <span class="o">-</span><span class="n">v</span> <span class="o">-</span><span class="n">t</span> <span class="o">-</span><span class="n">G</span> <span class="o">--</span><span class="n">save</span><span class="o">-</span><span class="k">global</span> <span class="o">--</span><span class="n">cell</span><span class="o">=</span><span class="n">design</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -940,14 +948,14 @@ routed design :</p>
|
|||
<tbody valign="top">
|
||||
<tr class="row-even"><td colspan="3"><strong>Verbosity/Log Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.info</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.info</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Enable display of <em>info</em> level message
|
||||
(<span class="cb">cinfo</span> stream)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.bug</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.bug</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
|
@ -955,21 +963,21 @@ routed design :</p>
|
|||
(<span class="cb">cbug</span> stream), messages can be a little
|
||||
scarry</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.logMode</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.logMode</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">If enabled, assume that the output device
|
||||
is not a <tt class="docutils literal"><span class="pre">tty</span></tt> and suppress any escaped
|
||||
is not a <code class="docutils literal"><span class="pre">tty</span></code> and suppress any escaped
|
||||
sequences</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.verboseLevel1</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.verboseLevel1</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">True</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">First level of verbosity, disable level 2</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.verboseLevel2</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.verboseLevel2</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
|
@ -977,18 +985,18 @@ sequences</td>
|
|||
</tr>
|
||||
<tr class="row-odd"><td colspan="3"><strong>Development/Debug Parameters</strong></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">misc.minTraceLevel</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">misc.minTraceLevel</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">0</span></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.maxTraceLevel</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.maxTraceLevel</span></code></td>
|
||||
<td>TypeInt</td>
|
||||
<td><span class="cb">0</span></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td colspan="2">Display trace information <em>between</em> those two
|
||||
levels (<span class="cb">cdebug</span> stream)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td rowspan="2"><tt class="docutils literal"><span class="pre">misc.catchCore</span></tt></td>
|
||||
<tr class="row-odd"><td rowspan="2"><code class="docutils literal"><span class="pre">misc.catchCore</span></code></td>
|
||||
<td>TypeBool</td>
|
||||
<td><span class="cb">False</span></td>
|
||||
</tr>
|
||||
|
@ -1018,9 +1026,9 @@ the current selection.</li>
|
|||
<div class="section" id="the-look-tab">
|
||||
<span id="id3"></span><h3>The Look Tab<a class="headerlink" href="#the-look-tab" title="Permalink to this headline">¶</a></h3>
|
||||
<p>You can select how the layout will be displayed. There is a special one
|
||||
<tt class="docutils literal"><span class="pre">Printer.Coriolis</span></tt> specifically designed for <a class="reference internal" href="#printing-snapshots">Printing & Snapshots</a>.
|
||||
<code class="docutils literal"><span class="pre">Printer.Coriolis</span></code> specifically designed for <a class="reference internal" href="#printing-snapshots">Printing & Snapshots</a>.
|
||||
You should select it prior to calling the print or snapshot dialog boxes.</p>
|
||||
<p> <img alt="Controller Look, Snapshot 1" class="align-middle" src="../_images/Controller-Look-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-Look-1.png"><img alt="Controller Look, Snapshot 1" class="align-middle" src="../_images/Controller-Look-1.png" style="width: 80%;" /></a> </p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="the-filter-tab">
|
||||
|
@ -1044,7 +1052,7 @@ to signal the gap.</p>
|
|||
<p class="last">For example, after the detailed routing no <em>rubbers</em> should remains.
|
||||
They have been made <em>very</em> visibles as big violet lines...</p>
|
||||
</div>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Filter-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-Filter-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Filter-1.png" style="width: 80%;" /></a> </p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="the-layers-go-tab">
|
||||
|
@ -1063,7 +1071,7 @@ to easily locate congested areas.</li>
|
|||
<li>The normal one triggers the display.</li>
|
||||
<li>The red-outlined allows objects of that layer to be selectable or not.</li>
|
||||
</ul>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-LayersGos-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-LayersGos-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-LayersGos-1.png" style="width: 80%;" /></a> </p>
|
||||
</div>
|
||||
<div class="section" id="the-netlist-tab">
|
||||
<span id="id6"></span><h3>The Netlist Tab<a class="headerlink" href="#the-netlist-tab" title="Permalink to this headline">¶</a></h3>
|
||||
|
@ -1073,10 +1081,10 @@ to easily locate congested areas.</li>
|
|||
using the filter pattern (supports regular expressions).</p>
|
||||
<p>An very useful feature is to enable the <strong>Sync Selection</strong>, which will
|
||||
automatically select all the components of the selected net(s). You can
|
||||
select multiple nets. In the figure the net <tt class="docutils literal"><span class="pre">auxsc35</span></tt> is selected and
|
||||
select multiple nets. In the figure the net <code class="docutils literal"><span class="pre">auxsc35</span></code> is selected and
|
||||
is highlited in the <em>Viewer</em>.</p>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Netlist-1.png" style="width: 80%;" />
|
||||
<img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Viewer-Netlist-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-Netlist-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Netlist-1.png" style="width: 80%;" /></a>
|
||||
<a class="reference internal" href="../_images/Viewer-Netlist-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Viewer-Netlist-1.png" style="width: 80%;" /></a> </p>
|
||||
</div>
|
||||
<div class="section" id="the-selection-tab">
|
||||
<span id="id7"></span><h3>The Selection Tab<a class="headerlink" href="#the-selection-tab" title="Permalink to this headline">¶</a></h3>
|
||||
|
@ -1085,11 +1093,11 @@ can be filtered thanks to the filter pattern.</p>
|
|||
<p>Used in conjunction with the <em>Netlist</em> <strong>Sync Selection</strong> you will all see
|
||||
all the components part of <em>net</em>.</p>
|
||||
<p>In this list, you can toggle individually the selection of component by
|
||||
pressing the <tt class="docutils literal"><span class="pre">t</span></tt> key. When unselected in this way a component is not
|
||||
pressing the <code class="docutils literal"><span class="pre">t</span></code> key. When unselected in this way a component is not
|
||||
removed from the the selection list but instead displayed in red italic.
|
||||
To see where a component is you may make it blink by repeatedly press
|
||||
the <tt class="docutils literal"><span class="pre">t</span></tt> key...</p>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Selection-1.png" style="width: 80%;" /> </p>
|
||||
the <code class="docutils literal"><span class="pre">t</span></code> key...</p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-Selection-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Selection-1.png" style="width: 80%;" /></a> </p>
|
||||
</div>
|
||||
<div class="section" id="the-inspector-tab">
|
||||
<span id="id8"></span><h3>The Inspector Tab<a class="headerlink" href="#the-inspector-tab" title="Permalink to this headline">¶</a></h3>
|
||||
|
@ -1111,16 +1119,16 @@ is deleted, you will crash the application...</p>
|
|||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><em>Implementation Detail:</em> the inspector support is done with
|
||||
<tt class="docutils literal"><span class="pre">Slot</span></tt>, <tt class="docutils literal"><span class="pre">Record</span></tt> and <tt class="docutils literal"><span class="pre">getString()</span></tt>.</p>
|
||||
<code class="docutils literal"><span class="pre">Slot</span></code>, <code class="docutils literal"><span class="pre">Record</span></code> and <code class="docutils literal"><span class="pre">getString()</span></code>.</p>
|
||||
</div>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Inspector-1.png" style="width: 80%;" />
|
||||
<img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Inspector-2.png" style="width: 80%;" />
|
||||
<img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Inspector-3.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-Inspector-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Inspector-1.png" style="width: 80%;" /></a>
|
||||
<a class="reference internal" href="../_images/Controller-Inspector-2.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Inspector-2.png" style="width: 80%;" /></a>
|
||||
<a class="reference internal" href="../_images/Controller-Inspector-3.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Inspector-3.png" style="width: 80%;" /></a> </p>
|
||||
</div>
|
||||
<div class="section" id="the-settings-tab">
|
||||
<span id="id9"></span><h3>The Settings Tab<a class="headerlink" href="#the-settings-tab" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Here comes the description of the <em>Settings</em> tab.</p>
|
||||
<p> <img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Settings-1.png" style="width: 80%;" /> </p>
|
||||
<p> <a class="reference internal" href="../_images/Controller-Settings-1.png"><img alt="Controller Basic Snapshot" class="align-middle" src="../_images/Controller-Settings-1.png" style="width: 80%;" /></a> </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1146,7 +1154,7 @@ is deleted, you will crash the application...</p>
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="Credits & License" href="LicenseCredits.html"/>
|
||||
<link rel="prev" title="Welcome to Coriolis’s documentation!" href="../index.html"/>
|
||||
|
@ -73,7 +75,7 @@
|
|||
|
||||
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Coriolis User’s Guide</a><ul>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Coriolis User’s Guide</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="LicenseCredits.html">Credits & License</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Releases.html">Release Notes</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="Releases.html#release-1-0-1475">Release 1.0.1475</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -314,7 +319,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
<link rel="next" title="CRL Core Reference" href="../CrlCore/CrlCore.html"/>
|
||||
<link rel="prev" title="Hurricane Reference" href="../Hurricane/Hurricane.html"/>
|
||||
|
@ -151,7 +153,7 @@
|
|||
<li class="toctree-l1"><a class="reference internal" href="../DpGen/DpGen.html">DpGen Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Patterns/Patterns.html">Patterns Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Hurricane/Hurricane.html">Hurricane Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="">Viewer Reference</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Viewer Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../CrlCore/CrlCore.html">CRL Core Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Katabatic/Katabatic.html">Katabatic Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../Kite/Kite.html">Kite Reference</a></li>
|
||||
|
@ -204,15 +206,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -275,7 +280,7 @@ available here: <a class="reference external" href="file:../../viewer/index.html
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.0 KiB |
|
@ -103,23 +103,23 @@ First step is to install the prerequisites. Currently, only RapidJSON_.
|
|||
As RapidJSON is evolving fast, if you encounter compatibility problems,
|
||||
the exact version we compiled against is given below. ::
|
||||
|
||||
dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~$ git clone http://github.com/miloyip/rapidjson
|
||||
dummy@lepka:~$ git checkout ec322005072076ef53984462fb4a1075c27c7dfd
|
||||
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~> cd ~/coriolis-2.x/src/support
|
||||
dummy@lepka:~> git clone http://github.com/miloyip/rapidjson
|
||||
dummy@lepka:~> git checkout ec322005072076ef53984462fb4a1075c27c7dfd
|
||||
|
||||
The second step is to create the source directory and pull the |git| repository: ::
|
||||
|
||||
dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ git clone https://www-soc.lip6.fr/git/coriolis.git
|
||||
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src
|
||||
dummy@lepka:~> cd ~/coriolis-2.x/src
|
||||
dummy@lepka:~> git clone https://www-soc.lip6.fr/git/coriolis.git
|
||||
|
||||
Third and final step, build & install: ::
|
||||
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=support \
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=support \
|
||||
--project=coriolis \
|
||||
--make="-j4 install"
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=support \
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=support \
|
||||
--project=coriolis \
|
||||
--doc --make="-j1 install"
|
||||
|
||||
|
@ -129,7 +129,7 @@ stage in ``-j4`` (or whatever) then we generate the documentation in ``-j1``
|
|||
|
||||
Under |RHEL6| or clones, you must build using the |devtoolset2|: ::
|
||||
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=coriolis \
|
||||
--devtoolset-2 --make="-j4 install"
|
||||
|
||||
If you want to uses Qt 5 instead of Qt 4, you may add the ``--qt5`` argument.
|
||||
|
@ -150,8 +150,8 @@ In the |Coriolis| |git| repository, two branches are present:
|
|||
development team. To use it instead of the :cb:`master` one, do the following
|
||||
command just after the first step: ::
|
||||
|
||||
dummy@lepka:~$ git checkout devel
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
dummy@lepka:~> git checkout devel
|
||||
dummy@lepka:src> ./bootstrap/ccb.py --project=coriolis \
|
||||
--make="-j4 install" --debug
|
||||
|
||||
Be aware that it may requires newer versions of the dependencies and may introduce
|
||||
|
@ -160,7 +160,7 @@ In the |Coriolis| |git| repository, two branches are present:
|
|||
In the (unlikely) event of a crash of |cgt|, as it is a |Python| script, the right
|
||||
command to run |gdb| on it is: ::
|
||||
|
||||
dummy@lepka:work$ gdb python core.XXXX
|
||||
dummy@lepka:work> gdb python core.XXXX
|
||||
|
||||
|newpage|
|
||||
|
||||
|
@ -172,9 +172,9 @@ Additionnal Requirement under |MacOS|
|
|||
seems unable to work with the |Python| bundled with |MacOS|. So you have to install
|
||||
both of them from |macports|: ::
|
||||
|
||||
dummy@macos:~$ port install boost +python27
|
||||
dummy@macos:~$ port select python python27
|
||||
dummy@macos:-$ export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
|
||||
dummy@macos:~> port install boost +python27
|
||||
dummy@macos:~> port select python python27
|
||||
dummy@macos:-> export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
|
||||
|
||||
The last two lines tell |MacOS| to use the |Python| from |macports| and *not* from
|
||||
the system.
|
||||
|
|
|
@ -321,7 +321,7 @@ 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
|
||||
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`.
|
||||
|
@ -329,4 +329,4 @@ You can generate the chip using one of the following method:
|
|||
.. note::
|
||||
Between two consecutive run, be sure to erase the netlist/layout generateds: ::
|
||||
|
||||
dummy@lepka:AM2901$ rm *_clocked*.vst *.ap
|
||||
dummy@lepka:AM2901> rm *clocked*.vst *.ap
|
||||
|
|
|
@ -150,6 +150,7 @@
|
|||
.. _Knik Thesis: http://www-soc.lip6.fr/en/users/damiendupuis/PhD/
|
||||
.. _RapidJSON: http://miloyip.github.io/rapidjson/
|
||||
.. _Python/C API Reference Manual: https://docs.python.org/2/c-api/index.html
|
||||
.. _Apache License, Version 2.0: http://www.apache.org/licences/LICENSE-2.0
|
||||
|
||||
.. Standard CAO/VLSI Concepts.
|
||||
.. |netlist| replace:: *netlist*
|
||||
|
|
|
@ -24,6 +24,9 @@ Contents:
|
|||
Unicorn/Unicorn.rst
|
||||
PythonCpp/index.rst
|
||||
RDS/index.rst
|
||||
lefapi/lefapi.rst
|
||||
defapi/defapi.rst
|
||||
lefdef/lefdef.rst
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
@ -52,6 +52,8 @@ div.sphinxsidebar {
|
|||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
|
@ -83,12 +85,9 @@ div.sphinxsidebar #searchbox input[type="text"] {
|
|||
width: 170px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
@ -186,6 +185,13 @@ div.genindex-jumpbox {
|
|||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
@ -196,7 +202,10 @@ h3:hover > a.headerlink,
|
|||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink {
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
|
@ -313,6 +322,13 @@ table.docutils {
|
|||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
|
@ -343,6 +359,25 @@ table.citation td {
|
|||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text {
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
|
@ -401,14 +436,14 @@ dl.glossary dt {
|
|||
margin: 0;
|
||||
}
|
||||
|
||||
.refcount {
|
||||
color: #060;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
@ -459,6 +494,13 @@ pre {
|
|||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
padding: 5px 0px;
|
||||
border: 0;
|
||||
|
@ -474,22 +516,51 @@ table.highlighttable td {
|
|||
padding: 0 0.5em 0 0.5em;
|
||||
}
|
||||
|
||||
tt.descname {
|
||||
div.code-block-caption {
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
div.code-block-caption + div > div.highlight > pre {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
padding: 1em 1em 0;
|
||||
}
|
||||
|
||||
div.literal-block-wrapper div.highlight {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
tt.descclassname {
|
||||
code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
tt.xref, a tt {
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* Sphinx JavaScript utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
@ -32,7 +32,7 @@ if (!window.console || !console.firebug) {
|
|||
*/
|
||||
jQuery.urldecode = function(x) {
|
||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* small helper function to urlencode strings
|
||||
|
@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) {
|
|||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* small function to check if an array contains
|
||||
* a given item.
|
||||
*/
|
||||
jQuery.contains = function(arr, item) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i] == item)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
* span elements with the given class name.
|
||||
|
@ -103,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) {
|
|||
});
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
|
@ -112,6 +124,7 @@ var Documentation = {
|
|||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initIndexTable();
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -164,9 +177,10 @@ var Documentation = {
|
|||
|
||||
/**
|
||||
* workaround a firefox stupidity
|
||||
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
||||
*/
|
||||
fixFirefoxAnchorBug : function() {
|
||||
if (document.location.hash && $.browser.mozilla)
|
||||
if (document.location.hash)
|
||||
window.setTimeout(function() {
|
||||
document.location.href += '';
|
||||
}, 10);
|
||||
|
@ -180,6 +194,9 @@ var Documentation = {
|
|||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
||||
if (terms.length) {
|
||||
var body = $('div.body');
|
||||
if (!body.length) {
|
||||
body = $('body');
|
||||
}
|
||||
window.setTimeout(function() {
|
||||
$.each(terms, function() {
|
||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||
|
@ -236,6 +253,29 @@ var Documentation = {
|
|||
});
|
||||
var url = parts.join('/');
|
||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
||||
},
|
||||
|
||||
initOnKeyListeners: function() {
|
||||
$(document).keyup(function(event) {
|
||||
var activeElementType = document.activeElement.tagName;
|
||||
// don't navigate when in search box or textarea
|
||||
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
|
||||
switch (event.keyCode) {
|
||||
case 37: // left
|
||||
var prevHref = $('link[rel="prev"]').prop('href');
|
||||
if (prevHref) {
|
||||
window.location.href = prevHref;
|
||||
return false;
|
||||
}
|
||||
case 39: // right
|
||||
var nextHref = $('link[rel="next"]').prop('href');
|
||||
if (nextHref) {
|
||||
window.location.href = nextHref;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -244,4 +284,4 @@ _ = Documentation.gettext;
|
|||
|
||||
$(document).ready(function() {
|
||||
Documentation.init();
|
||||
});
|
||||
});
|
Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 347 B |
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 347 B |
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 173 B |
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 173 B |
|
@ -2,41 +2,15 @@
|
|||
* searchtools.js_t
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilties for the full-text search.
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||
* words. the first one is used to find the occurance, the
|
||||
* latter for highlighting it.
|
||||
*/
|
||||
|
||||
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
||||
var textLower = text.toLowerCase();
|
||||
var start = 0;
|
||||
$.each(keywords, function() {
|
||||
var i = textLower.indexOf(this.toLowerCase());
|
||||
if (i > -1)
|
||||
start = i;
|
||||
});
|
||||
start = Math.max(start - 120, 0);
|
||||
var excerpt = ((start > 0) ? '...' : '') +
|
||||
$.trim(text.substr(start, 240)) +
|
||||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<div class="context"></div>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
/* Non-minified version JS is _stemmer.js if file is provided */
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
|
@ -220,6 +194,38 @@ var Stemmer = function() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: function(result) {
|
||||
return result[4];
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5}, // used to be unimportantResults
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
// query found in terms
|
||||
term: 5
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
|
@ -239,8 +245,13 @@ var Search = {
|
|||
},
|
||||
|
||||
loadIndex : function(url) {
|
||||
$.ajax({type: "GET", url: url, data: null, success: null,
|
||||
dataType: "script", cache: true});
|
||||
$.ajax({type: "GET", url: url, data: null,
|
||||
dataType: "script", cache: true,
|
||||
complete: function(jqxhr, textstatus) {
|
||||
if (textstatus != "success") {
|
||||
document.getElementById("searchindexloader").src = url;
|
||||
}
|
||||
}});
|
||||
},
|
||||
|
||||
setIndex : function(index) {
|
||||
|
@ -268,19 +279,20 @@ var Search = {
|
|||
if (this._pulse_status >= 0)
|
||||
return;
|
||||
function pulse() {
|
||||
var i;
|
||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||
var dotString = '';
|
||||
for (var i = 0; i < Search._pulse_status; i++)
|
||||
for (i = 0; i < Search._pulse_status; i++)
|
||||
dotString += '.';
|
||||
Search.dots.text(dotString);
|
||||
if (Search._pulse_status > -1)
|
||||
window.setTimeout(pulse, 500);
|
||||
};
|
||||
}
|
||||
pulse();
|
||||
},
|
||||
|
||||
/**
|
||||
* perform a search for something
|
||||
* perform a search for something (or wait until index is loaded)
|
||||
*/
|
||||
performSearch : function(query) {
|
||||
// create the required interface elements
|
||||
|
@ -300,41 +312,46 @@ var Search = {
|
|||
this.deferQuery(query);
|
||||
},
|
||||
|
||||
/**
|
||||
* execute search (requires search index to be loaded)
|
||||
*/
|
||||
query : function(query) {
|
||||
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
|
||||
var i;
|
||||
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||
|
||||
// Stem the searchterms and add them to the correct list
|
||||
// stem the searchterms and add them to the correct list
|
||||
var stemmer = new Stemmer();
|
||||
var searchterms = [];
|
||||
var excluded = [];
|
||||
var hlterms = [];
|
||||
var tmp = query.split(/\s+/);
|
||||
var tmp = query.split(/\W+/);
|
||||
var objectterms = [];
|
||||
for (var i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i] != "") {
|
||||
for (i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i] !== "") {
|
||||
objectterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
|
||||
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
||||
tmp[i] == "") {
|
||||
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
|
||||
tmp[i] === "") {
|
||||
// skip this "word"
|
||||
continue;
|
||||
}
|
||||
// stem the word
|
||||
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
||||
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
||||
var toAppend;
|
||||
// select the correct list
|
||||
if (word[0] == '-') {
|
||||
var toAppend = excluded;
|
||||
toAppend = excluded;
|
||||
word = word.substr(1);
|
||||
}
|
||||
else {
|
||||
var toAppend = searchterms;
|
||||
toAppend = searchterms;
|
||||
hlterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
// only add if not already in the list
|
||||
if (!$.contains(toAppend, word))
|
||||
if (!$u.contains(toAppend, word))
|
||||
toAppend.push(word);
|
||||
};
|
||||
}
|
||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||
|
||||
// console.debug('SEARCH: searching for:');
|
||||
|
@ -342,89 +359,50 @@ var Search = {
|
|||
// console.info('excluded: ', excluded);
|
||||
|
||||
// prepare search
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
var terms = this._index.terms;
|
||||
var fileMap = {};
|
||||
var files = null;
|
||||
// different result priorities
|
||||
var importantResults = [];
|
||||
var objectResults = [];
|
||||
var regularResults = [];
|
||||
var unimportantResults = [];
|
||||
var titleterms = this._index.titleterms;
|
||||
|
||||
// array of [filename, title, anchor, descr, score]
|
||||
var results = [];
|
||||
$('#search-progress').empty();
|
||||
|
||||
// lookup as object
|
||||
for (var i = 0; i < objectterms.length; i++) {
|
||||
var others = [].concat(objectterms.slice(0,i),
|
||||
objectterms.slice(i+1, objectterms.length))
|
||||
var results = this.performObjectSearch(objectterms[i], others);
|
||||
// Assume first word is most likely to be the object,
|
||||
// other words more likely to be in description.
|
||||
// Therefore put matches for earlier words first.
|
||||
// (Results are eventually used in reverse order).
|
||||
objectResults = results[0].concat(objectResults);
|
||||
importantResults = results[1].concat(importantResults);
|
||||
unimportantResults = results[2].concat(unimportantResults);
|
||||
for (i = 0; i < objectterms.length; i++) {
|
||||
var others = [].concat(objectterms.slice(0, i),
|
||||
objectterms.slice(i+1, objectterms.length));
|
||||
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||
}
|
||||
|
||||
// perform the search on the required terms
|
||||
for (var i = 0; i < searchterms.length; i++) {
|
||||
var word = searchterms[i];
|
||||
// no match but word was a required one
|
||||
if ((files = terms[word]) == null)
|
||||
break;
|
||||
if (files.length == undefined) {
|
||||
files = [files];
|
||||
}
|
||||
// create the mapping
|
||||
for (var j = 0; j < files.length; j++) {
|
||||
var file = files[j];
|
||||
if (file in fileMap)
|
||||
fileMap[file].push(word);
|
||||
else
|
||||
fileMap[file] = [word];
|
||||
}
|
||||
// lookup as search terms in fulltext
|
||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
for (i = 0; i < results.length; i++)
|
||||
results[i][4] = Scorer.score(results[i]);
|
||||
}
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
for (var file in fileMap) {
|
||||
var valid = true;
|
||||
|
||||
// check if all requirements are matched
|
||||
if (fileMap[file].length != searchterms.length)
|
||||
continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the
|
||||
// search result.
|
||||
for (var i = 0; i < excluded.length; i++) {
|
||||
if (terms[excluded[i]] == file ||
|
||||
$.contains(terms[excluded[i]] || [], file)) {
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
// now sort the results by score (in opposite order of appearance, since the
|
||||
// display function below uses pop() to retrieve items) and then
|
||||
// alphabetically
|
||||
results.sort(function(a, b) {
|
||||
var left = a[4];
|
||||
var right = b[4];
|
||||
if (left > right) {
|
||||
return 1;
|
||||
} else if (left < right) {
|
||||
return -1;
|
||||
} else {
|
||||
// same score: sort alphabetically
|
||||
left = a[1].toLowerCase();
|
||||
right = b[1].toLowerCase();
|
||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||
}
|
||||
|
||||
// if we have still a valid result we can add it
|
||||
// to the result list
|
||||
if (valid)
|
||||
regularResults.push([filenames[file], titles[file], '', null]);
|
||||
}
|
||||
|
||||
// delete unused variables in order to not waste
|
||||
// memory until list is retrieved completely
|
||||
delete filenames, titles, terms;
|
||||
|
||||
// now sort the regular results descending by title
|
||||
regularResults.sort(function(a, b) {
|
||||
var left = a[1].toLowerCase();
|
||||
var right = b[1].toLowerCase();
|
||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||
});
|
||||
|
||||
// combine all results
|
||||
var results = unimportantResults.concat(regularResults)
|
||||
.concat(objectResults).concat(importantResults);
|
||||
// for debugging
|
||||
//Search.lastresults = results.slice(); // a copy
|
||||
//console.info('search results:', Search.lastresults);
|
||||
|
||||
// print the results
|
||||
var resultCount = results.length;
|
||||
|
@ -433,7 +411,7 @@ var Search = {
|
|||
if (results.length) {
|
||||
var item = results.pop();
|
||||
var listItem = $('<li style="display:none"></li>');
|
||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
||||
// dirhtml builder
|
||||
var dirname = item[0] + '/';
|
||||
if (dirname.match(/\/index\/$/)) {
|
||||
|
@ -457,16 +435,18 @@ var Search = {
|
|||
displayNextItem();
|
||||
});
|
||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
||||
item[0] + '.txt', function(data) {
|
||||
if (data != '') {
|
||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
||||
Search.output.append(listItem);
|
||||
}
|
||||
listItem.slideDown(5, function() {
|
||||
displayNextItem();
|
||||
});
|
||||
}, "text");
|
||||
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
|
||||
dataType: "text",
|
||||
complete: function(jqxhr, textstatus) {
|
||||
var data = jqxhr.responseText;
|
||||
if (data !== '' && data !== undefined) {
|
||||
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||
}
|
||||
Search.output.append(listItem);
|
||||
listItem.slideDown(5, function() {
|
||||
displayNextItem();
|
||||
});
|
||||
}});
|
||||
} else {
|
||||
// no source available, just display title
|
||||
Search.output.append(listItem);
|
||||
|
@ -489,20 +469,32 @@ var Search = {
|
|||
displayNextItem();
|
||||
},
|
||||
|
||||
/**
|
||||
* search for object names
|
||||
*/
|
||||
performObjectSearch : function(object, otherterms) {
|
||||
var filenames = this._index.filenames;
|
||||
var objects = this._index.objects;
|
||||
var objnames = this._index.objnames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var importantResults = [];
|
||||
var objectResults = [];
|
||||
var unimportantResults = [];
|
||||
var i;
|
||||
var results = [];
|
||||
|
||||
for (var prefix in objects) {
|
||||
for (var name in objects[prefix]) {
|
||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||
var score = 0;
|
||||
var parts = fullname.split('.');
|
||||
// check for different match types: exact matches of full name or
|
||||
// "last name" (i.e. last dotted part)
|
||||
if (fullname == object || parts[parts.length - 1] == object) {
|
||||
score += Scorer.objNameMatch;
|
||||
// matches in last name
|
||||
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||
score += Scorer.objPartialMatch;
|
||||
}
|
||||
var match = objects[prefix][name];
|
||||
var objname = objnames[match[1]][2];
|
||||
var title = titles[match[0]];
|
||||
|
@ -512,7 +504,7 @@ var Search = {
|
|||
var haystack = (prefix + ' ' + name + ' ' +
|
||||
objname + ' ' + title).toLowerCase();
|
||||
var allfound = true;
|
||||
for (var i = 0; i < otherterms.length; i++) {
|
||||
for (i = 0; i < otherterms.length; i++) {
|
||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||
allfound = false;
|
||||
break;
|
||||
|
@ -523,37 +515,136 @@ var Search = {
|
|||
}
|
||||
}
|
||||
var descr = objname + _(', in ') + title;
|
||||
anchor = match[3];
|
||||
if (anchor == '')
|
||||
|
||||
var anchor = match[3];
|
||||
if (anchor === '')
|
||||
anchor = fullname;
|
||||
else if (anchor == '-')
|
||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||
result = [filenames[match[0]], fullname, '#'+anchor, descr];
|
||||
switch (match[2]) {
|
||||
case 1: objectResults.push(result); break;
|
||||
case 0: importantResults.push(result); break;
|
||||
case 2: unimportantResults.push(result); break;
|
||||
// add custom score for some objects according to scorer
|
||||
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||
score += Scorer.objPrio[match[2]];
|
||||
} else {
|
||||
score += Scorer.objPrioDefault;
|
||||
}
|
||||
results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// sort results descending
|
||||
objectResults.sort(function(a, b) {
|
||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||
});
|
||||
return results;
|
||||
},
|
||||
|
||||
importantResults.sort(function(a, b) {
|
||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||
});
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
unimportantResults.sort(function(a, b) {
|
||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||
});
|
||||
var i, j, file;
|
||||
var fileMap = {};
|
||||
var scoreMap = {};
|
||||
var results = [];
|
||||
|
||||
return [importantResults, objectResults, unimportantResults]
|
||||
// perform the search on the required terms
|
||||
for (i = 0; i < searchterms.length; i++) {
|
||||
var word = searchterms[i];
|
||||
var files = [];
|
||||
var _o = [
|
||||
{files: terms[word], score: Scorer.term},
|
||||
{files: titleterms[word], score: Scorer.title}
|
||||
];
|
||||
|
||||
// no match but word was a required one
|
||||
if ($u.every(_o, function(o){return o.files === undefined;})) {
|
||||
break;
|
||||
}
|
||||
// found search word in contents
|
||||
$u.each(_o, function(o) {
|
||||
var _files = o.files;
|
||||
if (_files === undefined)
|
||||
return
|
||||
|
||||
if (_files.length === undefined)
|
||||
_files = [_files];
|
||||
files = files.concat(_files);
|
||||
|
||||
// set score for the word in each file to Scorer.term
|
||||
for (j = 0; j < _files.length; j++) {
|
||||
file = _files[j];
|
||||
if (!(file in scoreMap))
|
||||
scoreMap[file] = {}
|
||||
scoreMap[file][word] = o.score;
|
||||
}
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
for (j = 0; j < files.length; j++) {
|
||||
file = files[j];
|
||||
if (file in fileMap)
|
||||
fileMap[file].push(word);
|
||||
else
|
||||
fileMap[file] = [word];
|
||||
}
|
||||
}
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
for (file in fileMap) {
|
||||
var valid = true;
|
||||
|
||||
// check if all requirements are matched
|
||||
if (fileMap[file].length != searchterms.length)
|
||||
continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
for (i = 0; i < excluded.length; i++) {
|
||||
if (terms[excluded[i]] == file ||
|
||||
titleterms[excluded[i]] == file ||
|
||||
$u.contains(terms[excluded[i]] || [], file) ||
|
||||
$u.contains(titleterms[excluded[i]] || [], file)) {
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if we have still a valid result we can add it to the result list
|
||||
if (valid) {
|
||||
// select one (max) score for the file.
|
||||
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
|
||||
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
|
||||
results.push([filenames[file], titles[file], '', null, score]);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||
* words. the first one is used to find the occurrence, the
|
||||
* latter for highlighting it.
|
||||
*/
|
||||
makeSearchSummary : function(text, keywords, hlwords) {
|
||||
var textLower = text.toLowerCase();
|
||||
var start = 0;
|
||||
$.each(keywords, function() {
|
||||
var i = textLower.indexOf(this.toLowerCase());
|
||||
if (i > -1)
|
||||
start = i;
|
||||
});
|
||||
start = Math.max(start - 120, 0);
|
||||
var excerpt = ((start > 0) ? '...' : '') +
|
||||
$.trim(text.substr(start, 240)) +
|
||||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<div class="context"></div>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
Search.init();
|
||||
|
|
|
@ -1,23 +1,31 @@
|
|||
// Underscore.js 0.5.5
|
||||
// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
|
||||
// Underscore is freely distributable under the terms of the MIT license.
|
||||
// Portions of Underscore are inspired by or borrowed from Prototype.js,
|
||||
// Underscore.js 1.3.1
|
||||
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
||||
// Underscore is freely distributable under the MIT license.
|
||||
// Portions of Underscore are inspired or borrowed from Prototype,
|
||||
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
||||
// For all details and documentation:
|
||||
// http://documentcloud.github.com/underscore/
|
||||
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
||||
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
||||
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
||||
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
||||
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
||||
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
||||
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
||||
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
||||
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
||||
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
||||
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
||||
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
||||
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
||||
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
||||
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
||||
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
||||
// http://documentcloud.github.com/underscore
|
||||
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
|
||||
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
|
||||
h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
|
||||
b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
|
||||
null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
|
||||
function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
|
||||
e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
|
||||
function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
|
||||
return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
|
||||
c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
|
||||
b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
|
||||
return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
|
||||
d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
|
||||
var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
|
||||
c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
|
||||
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
|
||||
b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
|
||||
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
|
||||
b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
|
||||
b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),
|
||||
function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
|
||||
u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
|
||||
function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
|
||||
true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
|
||||
|
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 345 B |
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 345 B |
|
@ -2,9 +2,9 @@
|
|||
* websupport.js
|
||||
* ~~~~~~~~~~~~~
|
||||
*
|
||||
* sphinx.websupport utilties for all documentation.
|
||||
* sphinx.websupport utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
@ -50,51 +50,51 @@
|
|||
}
|
||||
|
||||
function initEvents() {
|
||||
$('a.comment-close').live("click", function(event) {
|
||||
$(document).on("click", 'a.comment-close', function(event) {
|
||||
event.preventDefault();
|
||||
hide($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.vote').live("click", function(event) {
|
||||
$(document).on("click", 'a.vote', function(event) {
|
||||
event.preventDefault();
|
||||
handleVote($(this));
|
||||
});
|
||||
$('a.reply').live("click", function(event) {
|
||||
$(document).on("click", 'a.reply', function(event) {
|
||||
event.preventDefault();
|
||||
openReply($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.close-reply').live("click", function(event) {
|
||||
$(document).on("click", 'a.close-reply', function(event) {
|
||||
event.preventDefault();
|
||||
closeReply($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.sort-option').live("click", function(event) {
|
||||
$(document).on("click", 'a.sort-option', function(event) {
|
||||
event.preventDefault();
|
||||
handleReSort($(this));
|
||||
});
|
||||
$('a.show-proposal').live("click", function(event) {
|
||||
$(document).on("click", 'a.show-proposal', function(event) {
|
||||
event.preventDefault();
|
||||
showProposal($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.hide-proposal').live("click", function(event) {
|
||||
$(document).on("click", 'a.hide-proposal', function(event) {
|
||||
event.preventDefault();
|
||||
hideProposal($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.show-propose-change').live("click", function(event) {
|
||||
$(document).on("click", 'a.show-propose-change', function(event) {
|
||||
event.preventDefault();
|
||||
showProposeChange($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.hide-propose-change').live("click", function(event) {
|
||||
$(document).on("click", 'a.hide-propose-change', function(event) {
|
||||
event.preventDefault();
|
||||
hideProposeChange($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.accept-comment').live("click", function(event) {
|
||||
$(document).on("click", 'a.accept-comment', function(event) {
|
||||
event.preventDefault();
|
||||
acceptComment($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.delete-comment').live("click", function(event) {
|
||||
$(document).on("click", 'a.delete-comment', function(event) {
|
||||
event.preventDefault();
|
||||
deleteComment($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.comment-markup').live("click", function(event) {
|
||||
$(document).on("click", 'a.comment-markup', function(event) {
|
||||
event.preventDefault();
|
||||
toggleCommentMarkupBox($(this).attr('id').substring(2));
|
||||
});
|
||||
|
@ -700,8 +700,8 @@
|
|||
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
|
||||
<div class="comment-markup-box" id="mb<%id%>">\
|
||||
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
|
||||
<tt>``code``</tt>, \
|
||||
code blocks: <tt>::</tt> and an indented block after blank line</div>\
|
||||
<code>``code``</code>, \
|
||||
code blocks: <code>::</code> and an indented block after blank line</div>\
|
||||
<form method="post" id="cf<%id%>" class="comment-form" action="">\
|
||||
<textarea name="comment" cols="80"></textarea>\
|
||||
<p class="propose-button">\
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -31,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="../genindex.html"/>
|
||||
<link rel="search" title="Search" href="../search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
|
||||
|
||||
|
||||
|
@ -202,15 +204,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="../RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -259,7 +264,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
|
@ -33,6 +31,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="#"/>
|
||||
<link rel="search" title="Search" href="search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="index.html"/>
|
||||
|
||||
|
||||
|
@ -204,15 +205,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -267,7 +271,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
@ -297,7 +301,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'',
|
||||
URL_ROOT:'./',
|
||||
VERSION:'2',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
|
|
@ -31,6 +31,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="genindex.html"/>
|
||||
<link rel="search" title="Search" href="search.html"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="#"/>
|
||||
|
||||
|
||||
|
@ -202,15 +205,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -249,7 +255,7 @@
|
|||
<h1>Coriolis 2 documentation</h1>
|
||||
<p>
|
||||
|
||||
Documentation generated on Jul 17, 2017.
|
||||
Documentation generated on Oct 30, 2017.
|
||||
</p>
|
||||
|
||||
<p><strong>Documentation Topics</strong></p>
|
||||
|
@ -311,6 +317,21 @@
|
|||
<span class="linkdescr">Lists all sections and subsections</span></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<p><strong>Third Party Documentations</strong></p>
|
||||
<table class="contentstable" align="center"><tr>
|
||||
<td width="50%">
|
||||
<p class="biglink"><a class="biglink" href="lefdef/lefdef.html">LEF/DEF Language Reference</a><br/>
|
||||
<span class="linkdescr">Cadence LEF/DEF 5.8 language reference</span></p>
|
||||
</td><td width="50%">
|
||||
<p class="biglink"><a class="biglink" href="lefapi/lefapi.html">LEF C++ API</a><br/>
|
||||
<span class="linkdescr">Cadence Documentation of LEF 5.8 C++ API</span></p>
|
||||
</td></tr>
|
||||
<tr><td width="50%">
|
||||
</td><td width="50%">
|
||||
<p class="biglink"><a class="biglink" href="defapi/defapi.html">DEF C++ API</a><br/>
|
||||
<span class="linkdescr">Cadence Documentation of DEF 5.8 C++ API</span></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -324,7 +345,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
@ -354,7 +375,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'',
|
||||
URL_ROOT:'./',
|
||||
VERSION:'2',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
|
||||
|
||||
|
||||
<link rel="index" title="Index"
|
||||
href="genindex.html"/>
|
||||
<link rel="search" title="Search" href="#"/>
|
||||
<link rel="top" title="Coriolis 2 documentation" href="index.html"/>
|
||||
|
||||
|
||||
|
@ -201,15 +204,18 @@
|
|||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="RDS/RDSpage.html#the-rds-file">The RDS File</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#physical-grid-lambda-value">Physical Grid & Lambda Value</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <tt class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <tt class="docutils literal"><span class="pre">MBK_WIRESETTING</span></tt> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-segment-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_SEGMENT</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-via-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_VIA</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_HOLE</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table">The <code class="docutils literal"><span class="pre">MBK_TO_RDS_BIGVIA_METAL</span></code> table</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="RDS/RDSpage.html#the-mbk-wiresetting-table">The <code class="docutils literal"><span class="pre">MBK_WIRESETTING</span></code> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefapi/lefapi.html">LEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="defapi/defapi.html">DEF API Reference</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lefdef/lefdef.html">LEF/DEF Language Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -268,7 +274,7 @@
|
|||
<tr>
|
||||
<td class="LFooter"><small>
|
||||
Generated by <a href="http://sphinx-doc.org/">Sphinx</a>
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Jul 17, 2017.
|
||||
using a <a href="https://readthedocs.org">RTD</a> theme on Oct 30, 2017.
|
||||
</small></td>
|
||||
<td class="RFooter"></td>
|
||||
</tr>
|
||||
|
@ -298,7 +304,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'',
|
||||
URL_ROOT:'./',
|
||||
VERSION:'2',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
|
|
@ -59,4 +59,19 @@
|
|||
<span class="linkdescr">Lists all sections and subsections</span></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<p><strong>Third Party Documentations</strong></p>
|
||||
<table class="contentstable" align="center"><tr>
|
||||
<td width="50%">
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("lefdef/lefdef") }}">LEF/DEF Language Reference</a><br/>
|
||||
<span class="linkdescr">Cadence LEF/DEF 5.8 language reference</span></p>
|
||||
</td><td width="50%">
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("lefapi/lefapi") }}">LEF C++ API</a><br/>
|
||||
<span class="linkdescr">Cadence Documentation of LEF 5.8 C++ API</span></p>
|
||||
</td></tr>
|
||||
<tr><td width="50%">
|
||||
</td><td width="50%">
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("defapi/defapi") }}">DEF C++ API</a><br/>
|
||||
<span class="linkdescr">Cadence Documentation of DEF 5.8 C++ API</span></p>
|
||||
</td></tr>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
|
@ -25,7 +25,7 @@ import sys, os
|
|||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.pngmath']
|
||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.imgmath']
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
.. include:: ../etc/definitions.rst
|
||||
|
||||
|
||||
===================
|
||||
DEF API Reference
|
||||
===================
|
||||
|
||||
The DEF API reference is copyrighted by |Cadence| (http://www.cadence.com)
|
||||
under the `Apache License, Version 2.0`_ and is available here:
|
||||
`DEF API <file:../../lefdef/defapi/ch1Intro.html>`_
|