Documentation cleanup & rebuild.
* Change: In documentation/build.py, more PEP8 & Python 3 future compliance. Correct copy of the tools HTML docs on my laptop, to have a full offline copy of the doc. * New: In documentation/contents/pages/check-toolkit, duplicate the doc from alliance-check-toolkit README. Seems it has been inadvertently removed at some point (?). Have to be careful to maintain in synch with the toolkit. * Change: <tool>/doc/*/SoC.css, use Roboto fonts when availables. * Update: Commit the whole pre-generated docs (Doxygen, Pelican).
This commit is contained in:
parent
8c52755558
commit
c6e5583233
|
@ -9,7 +9,7 @@
|
|||
html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 {
|
||||
font-size: 11pt;
|
||||
/* The Open Sans font family is supplied by TexLive. */
|
||||
font-family: "Open Sans", Verdana, sans-serif;;
|
||||
font-family: "Roboto", "Open Sans", Verdana, sans-serif;;
|
||||
}
|
||||
|
||||
html {
|
||||
|
@ -598,7 +598,7 @@
|
|||
*/
|
||||
|
||||
div.fragment {
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
font-size: 80%;
|
||||
border: none;
|
||||
/*border-width: thin; */
|
||||
|
@ -610,6 +610,16 @@
|
|||
margin-right: 5%
|
||||
}
|
||||
|
||||
div.fragment a.code:link,
|
||||
div.fragment a.code:visited,
|
||||
div.fragment a.codeRef:link,
|
||||
div.fragment a.codeRef:visited {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.line {
|
||||
white-space: pre;
|
||||
padding: 0pt;
|
||||
|
@ -631,7 +641,7 @@
|
|||
*/
|
||||
|
||||
a.el, a.elRef {
|
||||
font-family: Courier;
|
||||
font-family: "Roboto Mono", Courier;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: black;
|
||||
|
@ -698,7 +708,7 @@
|
|||
}
|
||||
|
||||
table.memname * {
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
}
|
||||
|
||||
|
||||
|
@ -744,7 +754,7 @@
|
|||
/*background-color: #eeeeff;*/
|
||||
/*background-color: #EEEEEE;*/
|
||||
/*background-color: #CCE6CA;*/
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
}
|
||||
|
||||
.memTemplItemLeft, .memTemplItemRight {
|
||||
|
@ -753,7 +763,7 @@
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.memItemLeft { font-size: 11px; width: 35%; }
|
||||
.memItemLeft { font-size: 11px; width: 100pt; }
|
||||
.memItemRight { font-size: 12px; }
|
||||
.memTemplItemLeft { font-size: 11px; }
|
||||
.memTemplItemRight { font-size: 12px; }
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -48,20 +48,20 @@ $(function() {
|
|||
<div class="ttc" id="classCRL_1_1AcmSigda_html_a5e61fb60049f5a2dca1f2ca05fd5857a"><div class="ttname"><a href="classCRL_1_1AcmSigda.html#a5e61fb60049f5a2dca1f2ca05fd5857a">CRL::AcmSigda::load</a></div><div class="ttdeci">static Cell * load(std::string benchmark)</div></div>
|
||||
<div class="ttc" id="classCRL_1_1AcmSigda_html"><div class="ttname"><a href="classCRL_1_1AcmSigda.html">CRL::AcmSigda</a></div><div class="ttdoc">A Parser of ACM/Sigda 89&#39; benchmarks. </div><div class="ttdef"><b>Definition:</b> AcmSigda.h:33</div></div>
|
||||
<div class="ttc" id="namespaceHurricane_html"><div class="ttname"><a href="namespaceHurricane.html">Hurricane</a></div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -53,20 +53,20 @@ $(function() {
|
|||
<div class="ttc" id="classCRL_1_1AllianceLibrary_html_ad7394ba603e21e655d4518795650f042"><div class="ttname"><a href="classCRL_1_1AllianceLibrary.html#ad7394ba603e21e655d4518795650f042">CRL::AllianceLibrary::AllianceLibrary</a></div><div class="ttdeci">AllianceLibrary()</div></div>
|
||||
<div class="ttc" id="namespaceHurricane_html"><div class="ttname"><a href="namespaceHurricane.html">Hurricane</a></div></div>
|
||||
<div class="ttc" id="classCRL_1_1AllianceLibrary_html_abd54e8a070660030c6d2af8a239359b5"><div class="ttname"><a href="classCRL_1_1AllianceLibrary.html#abd54e8a070660030c6d2af8a239359b5">CRL::AllianceLibrary::getLibrary</a></div><div class="ttdeci">Library * getLibrary() const</div><div class="ttdef"><b>Definition:</b> AllianceLibrary.h:72</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -59,21 +59,21 @@ $(function() {
|
|||
<div class="ttc" id="classCRL_1_1Banner_html_aa61a32222853ae9f4298302ca53788bc"><div class="ttname"><a href="classCRL_1_1Banner.html#aa61a32222853ae9f4298302ca53788bc">CRL::Banner::getAuthors</a></div><div class="ttdeci">const string & getAuthors() const</div><div class="ttdef"><b>Definition:</b> Banner.h:177</div></div>
|
||||
<div class="ttc" id="classCRL_1_1Banner_html"><div class="ttname"><a href="classCRL_1_1Banner.html">CRL::Banner</a></div><div class="ttdoc">Print Formatted Banners (on ttys). </div><div class="ttdef"><b>Definition:</b> Banner.h:114</div></div>
|
||||
<div class="ttc" id="classCRL_1_1Banner_html_a240b3f305516b17eff31f684d0a5c643"><div class="ttname"><a href="classCRL_1_1Banner.html#a240b3f305516b17eff31f684d0a5c643">CRL::Banner::getName</a></div><div class="ttdeci">const string & getName() const</div><div class="ttdef"><b>Definition:</b> Banner.h:173</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
<div class="ttc" id="classCRL_1_1Banner_html_a9c6bee971231044f417aaac312abcb61"><div class="ttname"><a href="classCRL_1_1Banner.html#a9c6bee971231044f417aaac312abcb61">CRL::Banner::setPurpose</a></div><div class="ttdeci">void setPurpose(string purpose)</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -54,20 +54,20 @@ $(function() {
|
|||
<div class="ttc" id="classHurricane_1_1CellViewer_html"><div class="ttname"><a href="../viewer/classHurricane_1_1CellViewer.html">Hurricane::CellViewer</a></div></div>
|
||||
<div class="ttc" id="namespaceHurricane_html"><div class="ttname"><a href="namespaceHurricane.html">Hurricane</a></div></div>
|
||||
<div class="ttc" id="classHurricane_1_1CellWidget_html"><div class="ttname"><a href="../viewer/classHurricane_1_1CellWidget.html">Hurricane::CellWidget</a></div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -87,20 +87,20 @@ $(function() {
|
|||
<div class="ttc" id="classCRL_1_1RoutingLayerGauge_html"><div class="ttname"><a href="classCRL_1_1RoutingLayerGauge.html">CRL::RoutingLayerGauge</a></div><div class="ttdoc">Gauge of a Layer for the detailed routing. </div><div class="ttdef"><b>Definition:</b> RoutingLayerGauge.h:77</div></div>
|
||||
<div class="ttc" id="classHurricane_1_1Initializer_html"><div class="ttname"><a href="../hurricane/classHurricane_1_1Initializer.html">Hurricane::Initializer</a></div></div>
|
||||
<div class="ttc" id="namespaceConstant_html_abb6258ce09861f20cfe37b49d9a3515fa8c19f155f88d2db98534c1aec454862d"><div class="ttname"><a href="namespaceConstant.html#abb6258ce09861f20cfe37b49d9a3515fa8c19f155f88d2db98534c1aec454862d">Constant::Exact</a></div><div class="ttdef"><b>Definition:</b> RoutingLayerGauge.h:47</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -9,7 +9,7 @@
|
|||
html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 {
|
||||
font-size: 11pt;
|
||||
/* The Open Sans font family is supplied by TexLive. */
|
||||
font-family: "Open Sans", Verdana, sans-serif;;
|
||||
font-family: "Roboto", "Open Sans", Verdana, sans-serif;;
|
||||
}
|
||||
|
||||
html {
|
||||
|
@ -598,7 +598,7 @@
|
|||
*/
|
||||
|
||||
div.fragment {
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
font-size: 80%;
|
||||
border: none;
|
||||
/*border-width: thin; */
|
||||
|
@ -610,6 +610,16 @@
|
|||
margin-right: 5%
|
||||
}
|
||||
|
||||
div.fragment a.code:link,
|
||||
div.fragment a.code:visited,
|
||||
div.fragment a.codeRef:link,
|
||||
div.fragment a.codeRef:visited {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.line {
|
||||
white-space: pre;
|
||||
padding: 0pt;
|
||||
|
@ -631,7 +641,7 @@
|
|||
*/
|
||||
|
||||
a.el, a.elRef {
|
||||
font-family: Courier;
|
||||
font-family: "Roboto Mono", Courier;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: black;
|
||||
|
@ -698,7 +708,7 @@
|
|||
}
|
||||
|
||||
table.memname * {
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
}
|
||||
|
||||
|
||||
|
@ -744,7 +754,7 @@
|
|||
/*background-color: #eeeeff;*/
|
||||
/*background-color: #EEEEEE;*/
|
||||
/*background-color: #CCE6CA;*/
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
}
|
||||
|
||||
.memTemplItemLeft, .memTemplItemRight {
|
||||
|
@ -753,7 +763,7 @@
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.memItemLeft { font-size: 11px; width: 35%; }
|
||||
.memItemLeft { font-size: 11px; width: 100pt; }
|
||||
.memItemRight { font-size: 12px; }
|
||||
.memTemplItemLeft { font-size: 11px; }
|
||||
.memTemplItemRight { font-size: 12px; }
|
||||
|
|
|
@ -52,20 +52,20 @@ $(function() {
|
|||
<div class="ttc" id="classCRL_1_1ToolEngine_html_a3ce4d591198922c56a328bced79dd921"><div class="ttname"><a href="classCRL_1_1ToolEngine.html#a3ce4d591198922c56a328bced79dd921">CRL::ToolEngine::destroyAll</a></div><div class="ttdeci">static void destroyAll()</div></div>
|
||||
<div class="ttc" id="classCRL_1_1ToolEngine_html"><div class="ttname"><a href="classCRL_1_1ToolEngine.html">CRL::ToolEngine</a></div><div class="ttdoc">Base Class of all Coriolis Tools. </div><div class="ttdef"><b>Definition:</b> ToolEngine.h:48</div></div>
|
||||
<div class="ttc" id="namespaceHurricane_html"><div class="ttname"><a href="namespaceHurricane.html">Hurricane</a></div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -51,20 +51,20 @@ $(function() {
|
|||
<div class="ttc" id="namespaceCRL_html_a9c6426dc361a7b02fc55b7c19401c7aa"><div class="ttname"><a href="namespaceCRL.html#a9c6426dc361a7b02fc55b7c19401c7aa">CRL::ToolEngineLocator</a></div><div class="ttdeci">GenericLocator< ToolEngine * > ToolEngineLocator</div><div class="ttdef"><b>Definition:</b> ToolEngines.h:54</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html_a976ed6ed06b1c3510c696de4c8960971"><div class="ttname"><a href="namespaceCRL.html#a976ed6ed06b1c3510c696de4c8960971">CRL::ToolEngineFilter</a></div><div class="ttdeci">GenericFilter< ToolEngine * > ToolEngineFilter</div><div class="ttdef"><b>Definition:</b> ToolEngines.h:55</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html_ae49bc0c5f113bba964680768556dd1b3"><div class="ttname"><a href="namespaceCRL.html#ae49bc0c5f113bba964680768556dd1b3">CRL::ToolEngines</a></div><div class="ttdeci">GenericCollection< ToolEngine * > ToolEngines</div><div class="ttdef"><b>Definition:</b> ToolEngines.h:50</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:26</div></div>
|
||||
<div class="ttc" id="namespaceCRL_html"><div class="ttname"><a href="namespaceCRL.html">CRL</a></div><div class="ttdoc">The namespace of Coriolis Core. </div><div class="ttdef"><b>Definition:</b> Environment.h:24</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<br>
|
||||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -64,14 +64,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -53,14 +53,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -118,14 +118,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -94,14 +94,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -905,14 +905,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -56,14 +56,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -175,14 +175,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -67,14 +67,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -495,14 +495,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -60,14 +60,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -292,14 +292,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -69,14 +69,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -691,14 +691,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -83,14 +83,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -781,14 +781,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -96,14 +96,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -1136,14 +1136,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -54,14 +54,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -127,14 +127,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -68,14 +68,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -451,14 +451,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -70,14 +70,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -682,14 +682,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -64,14 +64,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -452,14 +452,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -56,14 +56,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -190,14 +190,14 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -64,14 +64,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -198,14 +198,14 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -73,14 +73,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -53,14 +53,14 @@ Directories</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -49,14 +49,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -49,14 +49,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -61,14 +61,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -72,14 +72,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -54,14 +54,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -48,14 +48,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -68,14 +68,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -61,14 +61,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -57,14 +57,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -55,14 +55,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -88,14 +88,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -51,14 +51,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -579,14 +579,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -258,14 +258,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -54,14 +54,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -96,14 +96,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -63,14 +63,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -51,14 +51,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -48,14 +48,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -57,14 +57,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -57,14 +57,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -150,14 +150,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -51,14 +51,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -64,14 +64,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -45,14 +45,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -149,14 +149,14 @@ Typedefs</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -149,14 +149,14 @@ Enumerations</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -85,14 +85,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -52,14 +52,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -67,14 +67,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -52,14 +52,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -51,14 +51,14 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Apr 27 2020</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Thu Nov 12 2020</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="footer2">
|
||||
<tr>
|
||||
<td class="LFooter">Coriolis Core (CRL)</td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2016 UPMC All rights reserved</small></td>
|
||||
<td class="RFooter"><small>Copyright © 2008-2020 Sorbonne Universite, All rights reserved</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
\vspace*{1cm}
|
||||
{\large Generated by Doxygen 1.8.14}\\
|
||||
\vspace*{0.5cm}
|
||||
{\small Mon Apr 27 2020 11:34:59}\\
|
||||
{\small Thu Nov 12 2020 13:59:16}\\
|
||||
\end{center}
|
||||
\end{titlepage}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
import re
|
||||
import os
|
||||
import os.path
|
||||
|
@ -13,7 +14,7 @@ import optparse
|
|||
|
||||
|
||||
def log ( message ):
|
||||
print message
|
||||
print( message )
|
||||
logging.info( message )
|
||||
return
|
||||
|
||||
|
@ -23,8 +24,7 @@ class ErrorMessage ( Exception ):
|
|||
def __init__ ( self, code, *arguments ):
|
||||
self._code = code
|
||||
self._errors = [ 'Malformed call to ErrorMessage()'
|
||||
, '%s' % str(arguments) ]
|
||||
|
||||
, '{}'.format(arguments) ]
|
||||
text = None
|
||||
if len(arguments) == 1:
|
||||
if isinstance(arguments[0],Exception): text = str(arguments[0]).split('\n')
|
||||
|
@ -32,30 +32,25 @@ class ErrorMessage ( Exception ):
|
|||
self._errors = arguments[0]
|
||||
elif len(arguments) > 1:
|
||||
text = list(arguments)
|
||||
|
||||
if text:
|
||||
self._errors = []
|
||||
while len(text[0]) == 0: del text[0]
|
||||
|
||||
lstrip = 0
|
||||
if text[0].startswith('[ERROR]'): lstrip = 8
|
||||
|
||||
for line in text:
|
||||
if line[0:lstrip ] == ' '*lstrip or \
|
||||
line[0:lstrip-1] == '[ERROR]':
|
||||
self._errors += [ line[lstrip:] ]
|
||||
else:
|
||||
self._errors += [ line.lstrip() ]
|
||||
return
|
||||
|
||||
def __str__ ( self ):
|
||||
if not isinstance(self._errors,list):
|
||||
return "[ERROR] %s" % self._errors
|
||||
|
||||
formatted = "\n"
|
||||
for i in range(len(self._errors)):
|
||||
if i == 0: formatted += "[ERROR] %s" % self._errors[i]
|
||||
else: formatted += " %s" % self._errors[i]
|
||||
if i == 0: formatted += "[ERROR] {}".format( self._errors[i] )
|
||||
else: formatted += " {}".format( self._errors[i] )
|
||||
if i+1 < len(self._errors): formatted += "\n"
|
||||
return formatted
|
||||
|
||||
|
@ -67,10 +62,9 @@ class ErrorMessage ( Exception ):
|
|||
self._errors += [ line ]
|
||||
else:
|
||||
self._errors += [ message ]
|
||||
return
|
||||
|
||||
def terminate ( self ):
|
||||
print self
|
||||
print( self )
|
||||
sys.exit(self._code)
|
||||
|
||||
def _getCode ( self ): return self._code
|
||||
|
@ -87,35 +81,30 @@ class Configuration ( object ):
|
|||
hostname = socket.gethostname()
|
||||
if hostname.startswith('lepka'): self.onLepka = True
|
||||
else: self.onDocker = True
|
||||
|
||||
scriptDir = os.path.abspath(os.getcwd())
|
||||
if scriptDir.endswith( 'coriolis/documentation' ):
|
||||
if scriptDir.endswith( 'coriolis/documentation' ) and not self.onLepka:
|
||||
self.onLepka = False
|
||||
self.onSource = True
|
||||
|
||||
if self.onDocker:
|
||||
log( 'Using *Docker* configuration.' )
|
||||
self.pelicanDir = '/data/git/coriolis.lip6.fr/pelican'
|
||||
self.apacheDir = '/var/www/html'
|
||||
if self.onLepka:
|
||||
log( 'Using *Lepka* configuration.' )
|
||||
self.pelicanDir = os.path.join( os.environ['HOME'], 'cms/coriolis.lip6.fr/pelican' )
|
||||
#self.pelicanDir = os.path.join( os.environ['HOME'], 'cms/coriolis.lip6.fr/pelican' )
|
||||
self.pelicanDir = scriptDir
|
||||
self.apacheDir = '/dsk/l1/httpd/coriolis'
|
||||
if self.onSource:
|
||||
log( 'Using *Source* configuration.' )
|
||||
self.pelicanDir = scriptDir
|
||||
self.apacheDir = None
|
||||
|
||||
self.localDocDir = '/dsk/l1/jpc/coriolis-2.x/Linux.el7_64/Release.Shared/install/share/doc/coriolis2/en/html/doc'
|
||||
self.remoteDocDir = '/data'
|
||||
self.remoteGitDir = '/data/git'
|
||||
self.remotePelicanDir = os.path.join( self.remoteGitDir, 'coriolis.lip6.fr/pelican' )
|
||||
self.pluginsDir = os.path.join( self.remoteGitDir, 'pelican-plugins' )
|
||||
|
||||
self.logDir = os.path.join( self.pelicanDir, 'logs' )
|
||||
|
||||
self.target = 'coriolis-d'
|
||||
return
|
||||
|
||||
|
||||
class Command ( object ):
|
||||
|
@ -124,7 +113,6 @@ class Command ( object ):
|
|||
self.command = command
|
||||
self.outlog = None
|
||||
self.errlog = None
|
||||
return
|
||||
|
||||
def asString ( self ):
|
||||
s = ''
|
||||
|
@ -144,16 +132,15 @@ class Command ( object ):
|
|||
self.outlog, self.errlog = child.communicate()
|
||||
if len(self.outlog): logging.info ( self.outlog )
|
||||
if len(self.errlog): logging.error( self.errlog )
|
||||
|
||||
status = child.returncode
|
||||
status >>= 8
|
||||
if status != 0:
|
||||
ErrorMessage( status, "%s (status:%d)."%(error,status) ).terminate()
|
||||
ErrorMessage( status, "{} (status:{}).".format(error,status) ).terminate()
|
||||
return status
|
||||
|
||||
@staticmethod
|
||||
def rmtree ( path ):
|
||||
command = 'rm -rf %s' % path
|
||||
command = 'rm -rf {}'.format( path )
|
||||
try:
|
||||
log( command )
|
||||
shutil.rmtree( path )
|
||||
|
@ -164,7 +151,7 @@ class Command ( object ):
|
|||
|
||||
@staticmethod
|
||||
def copytree ( src, dst ):
|
||||
command = 'cp -r %s %s' % (src,dst)
|
||||
command = 'cp -r {} {}'.format( src, dst )
|
||||
try:
|
||||
log( command )
|
||||
shutil.copytree( src, dst )
|
||||
|
@ -173,7 +160,7 @@ class Command ( object ):
|
|||
return 1
|
||||
except shutil.Error, errors:
|
||||
for error in errors:
|
||||
logging.error( 'cp %s %s: %s' % error )
|
||||
logging.error( 'cp {} {}: {}'.format(src,dst,error) )
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
@ -182,12 +169,10 @@ class SshCommand ( object ):
|
|||
|
||||
def __init__ ( self, scriptlet ):
|
||||
self.scriptlet = scriptlet
|
||||
return
|
||||
|
||||
def execute ( self, target ):
|
||||
command = [ 'ssh', '-x', target, self.scriptlet ]
|
||||
Command( command ).execute()
|
||||
return
|
||||
|
||||
|
||||
class Document ( object ):
|
||||
|
@ -196,33 +181,31 @@ class Document ( object ):
|
|||
self.conf = conf
|
||||
self.document = os.path.basename( document )
|
||||
self.rdir = os.path.dirname ( document )
|
||||
return
|
||||
|
||||
def toPdf ( self ):
|
||||
pdfDir = '%s/content/pdfs' % self.conf.pelicanDir
|
||||
stylesheet = '%s/etc/SoC-ReST.tex' % self.conf.pelicanDir
|
||||
documentPdf = '%s.pdf' % self.document
|
||||
documentRst = '%s.rst' % self.document
|
||||
documentTex = '%s.tex' % self.document
|
||||
documentRawTex = '%s-raw.tex' % self.document
|
||||
pdfDir = '{}/content/pdfs' .format( self.conf.pelicanDir )
|
||||
stylesheet = '{}/etc/SoC-ReST.tex'.format( self.conf.pelicanDir )
|
||||
documentPdf = '{}.pdf'.format( self.document )
|
||||
documentRst = '{}.rst'.format( self.document )
|
||||
documentTex = '{}.tex'.format( self.document )
|
||||
documentRawTex = '{}-raw.tex'.format( self.document )
|
||||
documentTmps = [ documentTex
|
||||
, documentRawTex
|
||||
, '%s.log' % self.document
|
||||
, '%s.out' % self.document
|
||||
, '%s.aux' % self.document
|
||||
, '%s.toc' % self.document
|
||||
, '{}.log'.format( self.document )
|
||||
, '{}.out'.format( self.document )
|
||||
, '{}.aux'.format( self.document )
|
||||
, '{}.toc'.format( self.document )
|
||||
]
|
||||
targetPdf = os.path.join( pdfDir, documentPdf )
|
||||
|
||||
cwd = os.getcwd()
|
||||
os.chdir( os.path.join(self.conf.pelicanDir,self.rdir) )
|
||||
os.environ[ 'TEXINPUTS' ] = '%s/etc/images//:./images//:' % self.conf.pelicanDir
|
||||
os.environ[ 'TEXINPUTS' ] = '{}/etc/images//:./images//:'.format( self.conf.pelicanDir )
|
||||
Command( [ 'rst2latex', '--use-latex-toc'
|
||||
, '--stylesheet=%s' % stylesheet
|
||||
, '--stylesheet={}'.format( stylesheet )
|
||||
, documentRst
|
||||
, documentRawTex
|
||||
] ).execute()
|
||||
|
||||
pMulticol = re.compile( r' \\& \\\\multicolumn\{2\}\{l\|\}\{' )
|
||||
fdi = open( documentRawTex, 'r' )
|
||||
fdo = open( documentTex , 'w' )
|
||||
|
@ -230,62 +213,49 @@ class Document ( object ):
|
|||
fdo.write( pMulticol.sub(' \\& \\\\multicolumn{2}{p{0.6\\\\DUtablewidth}|}{',line) )
|
||||
fdi.close()
|
||||
fdo.close()
|
||||
|
||||
Command( [ 'pdflatex', '-halt-on-error', documentTex ] ).execute()
|
||||
Command( [ 'pdflatex', '-halt-on-error', documentTex ] ).execute()
|
||||
|
||||
for file in documentTmps: os.unlink( file )
|
||||
|
||||
if not os.path.isdir( pdfDir ):
|
||||
log( 'mkdir %s' % pdfDir )
|
||||
log( 'mkdir {}'.format( pdfDir ))
|
||||
os.mkdir( pdfDir )
|
||||
|
||||
if os.path.exists( targetPdf ): os.unlink( targetPdf )
|
||||
log( 'mv %s %s' % (documentPdf,pdfDir) )
|
||||
log( 'mv {} {}'.format( documentPdf, pdfDir ))
|
||||
shutil.move( documentPdf, pdfDir )
|
||||
|
||||
os.chdir( cwd )
|
||||
return
|
||||
|
||||
|
||||
class Site ( object ):
|
||||
|
||||
def __init__ ( self, conf ):
|
||||
self.conf = conf
|
||||
return
|
||||
|
||||
def build ( self ):
|
||||
print 'cd %s' % self.conf.pelicanDir
|
||||
print( 'cd {}'.format( self.conf.pelicanDir ))
|
||||
os.chdir( self.conf.pelicanDir )
|
||||
status = Command( [ 'pelican', '-vD', '--ignore-cache', 'content' ] ).execute()
|
||||
if status: return status
|
||||
|
||||
if self.conf.onLepka:
|
||||
Command.rmtree ( self.conf.apacheDir )
|
||||
Command.copytree( './output', self.conf.apacheDir )
|
||||
Command.copytree( self.conf.localDocDir, os.path.join(self.conf.apacheDir,'doc') )
|
||||
return
|
||||
|
||||
def gitPush ( self ):
|
||||
print 'cd %s' % self.conf.pelicanDir
|
||||
print( 'cd {}'.format( self.conf.pelicanDir ))
|
||||
os.chdir( self.conf.pelicanDir )
|
||||
|
||||
lines = ''
|
||||
cmd = Command( ['git', 'status', 'content', 'common', 'theme'] )
|
||||
cmd.execute()
|
||||
if cmd.outlog: lines = cmd.outlog.split('\n')
|
||||
if lines[-2] != 'nothing to commit, working directory clean':
|
||||
message = [ 'There are some uncommited changes in the site contents.' ] + lines
|
||||
print ErrorMessage( 1, message )
|
||||
#return False
|
||||
|
||||
print( ErrorMessage( 1, message ))
|
||||
Command( ['git', 'push'] ).execute()
|
||||
return True
|
||||
|
||||
def gitCommitPdfs ( self ):
|
||||
print 'cd %s' % self.conf.pelicanDir
|
||||
print( 'cd {}'.format( self.conf.pelicanDir ))
|
||||
os.chdir( self.conf.pelicanDir )
|
||||
|
||||
lines = ''
|
||||
cmd = Command( ['git', 'status', 'content/pdfs'] )
|
||||
cmd.execute()
|
||||
|
@ -294,45 +264,39 @@ class Site ( object ):
|
|||
message = 'Updated PDFs, %s.' % time.strftime( '%B %d, %Y (%H:%M)' )
|
||||
Command( ['git', 'add' , 'content/pdfs'] ).execute()
|
||||
Command( ['git', 'commit', '-m', message ] ).execute()
|
||||
|
||||
return True
|
||||
|
||||
def remoteBuild ( self ):
|
||||
Command( [ 'ssh', '-x', '-o', 'StrictHostKeyChecking no'
|
||||
, self.conf.target, "echo 'Force SSH key loading.'" ] ).execute()
|
||||
|
||||
Command( [ 'rsync', '--rsh=/usr/bin/ssh', '-avH'
|
||||
, self.conf.localDocDir
|
||||
, '%s:%s' % (self.conf.target,self.conf.remoteDocDir) ] ).execute()
|
||||
|
||||
, '{}:{}'.format(self.conf.target,self.conf.remoteDocDir) ] ).execute()
|
||||
remoteScript = \
|
||||
' if [ ! -d %(remotePelicanDir)s ]; then' \
|
||||
' cd %(remoteGitDir)s;' \
|
||||
' if [ ! -d {remotePelicanDir} ]; then' \
|
||||
' cd {remoteGitDir};' \
|
||||
' git clone gitsoc@bop-t:coriolis.lip6.fr;' \
|
||||
' sudo pelican-themes -s %(remotePelicanDir)s/themes/nest-coriolis;' \
|
||||
' sudo pelican-themes -s {remotePelicanDir}/themes/nest-coriolis;' \
|
||||
' sudo chown -R pelican:pelican /var/www/html;' \
|
||||
' fi;' \
|
||||
' cd %(remotePelicanDir)s;' \
|
||||
' cd {remotePelicanDir};' \
|
||||
' git pull;' \
|
||||
' if [ ! -d %(pluginsDir)s ]; then' \
|
||||
' cd %(remoteGitDir)s;' \
|
||||
' if [ ! -d {pluginsDir} ]; then' \
|
||||
' cd {remoteGitDir};' \
|
||||
' git clone https://github.com/getpelican/pelican-plugins;' \
|
||||
' cd pelican-plugins;' \
|
||||
' patch -p1 -i %(remotePelicanDir)s/patchs/0001-bootstrap-rst.no-math.patch;' \
|
||||
' patch -p1 -i {remotePelicanDir}/patchs/0001-bootstrap-rst.no-math.patch;' \
|
||||
' fi;' \
|
||||
' cd %(remotePelicanDir)s;' \
|
||||
' cd {remotePelicanDir};' \
|
||||
' ./build.py -p;' \
|
||||
% { 'pluginsDir' : self.conf.pluginsDir
|
||||
, 'remoteGitDir' : self.conf.remoteGitDir
|
||||
, 'remotePelicanDir' : self.conf.remotePelicanDir
|
||||
}
|
||||
|
||||
.format( pluginsDir = self.conf.pluginsDir
|
||||
, remoteGitDir = self.conf.remoteGitDir
|
||||
, remotePelicanDir = self.conf.remotePelicanDir
|
||||
)
|
||||
SshCommand( remoteScript ).execute( self.conf.target )
|
||||
return
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
usage = \
|
||||
'\n' \
|
||||
'\nThe "build.py" script rebuild the "coriolis.lip6.fr" website hosted' \
|
||||
|
@ -365,41 +329,33 @@ if __name__ == '__main__':
|
|||
'\n and "bop" is used to perform "git pull".' \
|
||||
'\n' \
|
||||
'\n./build.py <options>'
|
||||
|
||||
parser = optparse.OptionParser( usage )
|
||||
parser.add_option( '-p', '--pelican' , action='store_true', dest='doPelican' , help='Run pelican.' )
|
||||
parser.add_option( '-P', '--pdfs' , action='store_true', dest='doPdfs' , help='Generate the PDFs.' )
|
||||
parser.add_option( '-C', '--coriolis', action='store_true', dest='doCoriolis', help='Build/update the web site on the server (docker).' )
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
conf = Configuration()
|
||||
if not os.path.isdir( conf.logDir ):
|
||||
os.mkdir( conf.logDir )
|
||||
|
||||
logging.basicConfig( filename='logs/build-%s.log' % time.strftime( '%Y%m%d-%H%M' )
|
||||
logging.basicConfig( filename='logs/build-{}.log'.format(time.strftime( '%Y%m%d-%H%M' ))
|
||||
, format='%(asctime)s:%(levelname)s| %(message)s'
|
||||
, level=logging.INFO
|
||||
)
|
||||
|
||||
documents = [ Document( conf, 'content/pages/users-guide/UsersGuide' )
|
||||
, Document( conf, 'content/pages/python-tutorial/PythonTutorial' )
|
||||
, Document( conf, 'content/pages/python-cpp/PythonCpp' )
|
||||
, Document( conf, 'content/pages/stratus/Stratus' )
|
||||
, Document( conf, 'content/pages/check-toolkit/CheckToolkit' )
|
||||
, Document( conf, 'content/pages/rds/RDS' )
|
||||
]
|
||||
|
||||
coriolis = Site( conf )
|
||||
|
||||
if options.doPdfs:
|
||||
for document in documents: document.toPdf()
|
||||
if not conf.onSource:
|
||||
if not conf.onSource or not conf.onLepka:
|
||||
coriolis.gitCommitPdfs()
|
||||
|
||||
if options.doPelican:
|
||||
coriolis.build()
|
||||
|
||||
if options.doCoriolis:
|
||||
coriolis.gitPush()
|
||||
coriolis.remoteBuild()
|
||||
|
||||
sys.exit( 0 )
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
.. include:: ../../../etc/definitions.rst
|
||||
|
||||
.. role:: raw-html(raw)
|
||||
:format: html
|
||||
|
||||
.. URLs that changes between the various backends.
|
||||
.. _Coriolis Tools Documentation: http://coriolis.lip6.fr/
|
||||
.. _Stratus Documentation: http://coriolis.lip6.fr/pages/stratus-language.html
|
||||
.. _Here: ../../images/users-guide/UsersGuide.pdf
|
||||
.. _Coriolis User's Guide: ../../images/users-guide/UsersGuide.pdf
|
||||
|
||||
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\newpage
|
||||
|
||||
\pagestyle{empty}
|
||||
|
||||
\begin{center}
|
||||
|
||||
\hfill \includegraphics[height=2.0cm]{../../../etc/images/Logo-LIP6-bleugris}
|
||||
\hfill \includegraphics[height=1.8cm]{../../../etc/images/Logo-SU}
|
||||
\hfill \includegraphics[height=2.0cm]{../../../etc/images/Logo-CNRS}
|
||||
\hfill
|
||||
\\*[2cm]
|
||||
|
||||
\huge \textsc{Sorbonne Université} \\*[1cm]
|
||||
|
||||
\huge {\textsc{lip6} Laboratory} \\*[3cm]
|
||||
|
||||
\Huge \textbf{\textsc{Alliance Check Toolkit}} \\*[1cm]
|
||||
|
||||
\huge {Jean-Paul \textsc{Chaput}} \\
|
||||
\Large\href{mailto:Jean-Paul.Chaput@lip6.fr}{Jean-Paul.Chaput@lip6.fr}\\*[4cm]
|
||||
|
||||
\includegraphics[scale=1.0]{../../../etc/images/logoCC.pdf}
|
||||
|
||||
\normalsize
|
||||
This work is licensed under a \\
|
||||
Creative Commons Attribution-NonCommercial-ShareALike 4.0 International License. \\
|
||||
Creative Commons License \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{creativecommons.org/licenses/by-nc-sa/4.0/}
|
||||
|
||||
\end{center}
|
||||
|
||||
\newpage
|
||||
\pagestyle{fancy}
|
||||
|
||||
|pagestylefancy|
|
||||
|
||||
|
||||
.. contents::
|
||||
|
||||
|newpage|
|
||||
|
||||
.. include:: README.rst
|
|
@ -0,0 +1,36 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
|
||||
======================
|
||||
Alliance Check Toolkit
|
||||
======================
|
||||
|
||||
|
||||
:slug: check-toolkit
|
||||
:date: 2020-11-12 12:30
|
||||
:Authors: Jean-Paul Chaput
|
||||
:Contact: <Jean-Paul.Chaput@lip6.fr>
|
||||
:Version: November 12, 2020 (jpc)
|
||||
:status: hidden
|
||||
|
||||
|
||||
.. role:: raw-html(raw)
|
||||
:format: html
|
||||
|
||||
.. URLs that changes between the various backends.
|
||||
.. _Coriolis Tools Documentation: ../documentation.rst
|
||||
.. _Alliance Check Toolkit: {filename}/pdfs/CheckToolkit.pdf
|
||||
|
||||
|
||||
Printable Version of this Document
|
||||
==================================
|
||||
|
||||
`Alliance Check Toolkit`_.
|
||||
|
||||
|
||||
.. contents::
|
||||
:depth: 1
|
||||
|
||||
|
||||
.. include:: ../../../etc/definitions.rst
|
||||
.. include:: README.rst
|
|
@ -0,0 +1,901 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
.. Acronyms & Names
|
||||
.. |Verilog| replace:: :sc:`Verilog`
|
||||
.. |RTLIL| replace:: :sc:`rtlil`
|
||||
.. |RAM| replace:: :sc:`ram`
|
||||
.. |ROM| replace:: :sc:`rom`
|
||||
.. |LVS| replace:: :sc:`lvs`
|
||||
.. |DRC| replace:: :sc:`drc`
|
||||
.. |adder| replace:: ``adder``
|
||||
.. |AM2901| replace:: :sc:`am2901`
|
||||
.. |alliance-run| replace:: ``alliance-run``
|
||||
.. |cpu| replace:: :sc:`cpu`
|
||||
.. |6502| replace:: :sc:`6502`
|
||||
.. |Arlet6502| replace:: :sc:`Arlet6502`
|
||||
.. |ARMv2a| replace:: :sc:`ARMv2a`
|
||||
.. |VexRiscV| replace:: :sc:`VexRiscV`
|
||||
.. |FPGA| replace:: :sc:`fpga`
|
||||
.. |ISPD05| replace:: :sc:`ispd05`
|
||||
.. |ALU| replace:: :sc:`alu`
|
||||
.. |FreePDK45| replace:: :sc:`FreePDK45`
|
||||
.. |scn6m_deep| replace:: :sc:`scn6m_deep`
|
||||
|
||||
.. |encounter| replace:: ``encounter``
|
||||
.. |yosys| replace:: ``yosys``
|
||||
.. |devtoolset-2| replace:: ``devtoolset-2``
|
||||
.. |gds| replace:: ``gds``
|
||||
.. |sclib| replace:: ``sclib``
|
||||
.. |sxlib| replace:: ``sxlib``
|
||||
.. |dp_sxlib| replace:: ``dp_sxlib``
|
||||
.. |ramlib| replace:: ``ramlib``
|
||||
.. |rflib| replace:: ``rflib``
|
||||
.. |rf2lib| replace:: ``rf2lib``
|
||||
.. |padlib| replace:: ``padlib``
|
||||
.. |pxlib| replace:: ``pxlib``
|
||||
.. |nsxlib| replace:: ``nsxlib``
|
||||
.. |mpxlib| replace:: ``mpxlib``
|
||||
.. |msplib| replace:: ``msplib``
|
||||
.. |gscl45| replace:: ``gscl45``
|
||||
.. |CORELIB| replace:: ``corelib``
|
||||
.. |scn6m_deep_09| replace:: ``scn6m_deep_09.rds``
|
||||
.. |rules_mk| replace:: ``rules.mk``
|
||||
.. |px2mpx| replace:: ``px2mpx.py``
|
||||
.. |doChip| replace:: ``doChip.py``
|
||||
.. |blif2vst| replace:: ``blif2vst.py``
|
||||
.. |go| replace:: ``go.sh``
|
||||
.. |boom| replace:: ``boom``
|
||||
.. |boog| replace:: ``boog``
|
||||
.. |loon| replace:: ``loon``
|
||||
.. |cougar| replace:: ``cougar``
|
||||
.. |ocp| replace:: ``ocp``
|
||||
.. |nero| replace:: ``nero``
|
||||
.. |ring| replace:: ``ring``
|
||||
.. |hitas| replace:: ``hitas``
|
||||
.. |yagle| replace:: ``yagle``
|
||||
.. |proof| replace:: ``proof``
|
||||
.. |vasy| replace:: ``vasy``
|
||||
.. |avt_shell| replace:: ``avt_shell``
|
||||
.. |extractCell.tcl| replace:: ``extractCell.tcl``
|
||||
.. |buildLib.tcl| replace:: ``buildLib.tcl``
|
||||
.. |nsl| replace:: ``nsl``
|
||||
.. |yosys.py| replace:: ``yosys.py``
|
||||
|
||||
.. |layout-alc| replace:: ``layout-alc``
|
||||
.. |chip_clk| replace:: ``$(CHIP)_crl_clocked``
|
||||
.. |chip_clk_kite| replace:: ``$(CHIP)_crl_clocked_kite``
|
||||
.. |druc| replace:: ``druc``
|
||||
.. |druc-alc| replace:: ``druc-alc``
|
||||
.. |lvx| replace:: ``lvx``
|
||||
.. |lvx-alc| replace:: ``lvx-alc``
|
||||
.. |graal| replace:: ``graal``
|
||||
.. |dreal| replace:: ``dreal``
|
||||
.. |view| replace:: ``view``
|
||||
.. |cgt_interactive| replace:: ``cgt-interactive``
|
||||
|
||||
.. |vbe| replace:: ``vbe``
|
||||
.. |vhdl| replace:: ``vhdl``
|
||||
.. |blif| replace:: ``blif``
|
||||
|
||||
|
||||
.. _`Arlet's MOS 6502 core`: https://github.com/Arlet/verilog-6502
|
||||
|
||||
|
||||
Toolkit Purpose
|
||||
===============
|
||||
|
||||
This toolkit has been created to allow developpers to share through |git| a set
|
||||
of benchmarks to validate their changes in |Alliance| & |Coriolis| before commiting
|
||||
and pushing them in their central repositories. A change will be considered as
|
||||
validated when all the developpers can run successfully all the benchs in their
|
||||
respective environments.
|
||||
|
||||
As a consequence, this repository is likely to be *very* unstable and the commits
|
||||
not well documenteds as they will be quick corrections made by the developpers.
|
||||
|
||||
|
||||
Release Notes
|
||||
=============
|
||||
|
||||
August 30, 2019
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
|Katana| is now used as the default router. It can now manage a complete chip design
|
||||
with I/O pads. As a consequence, the |Makefile| are all modificated, the variable
|
||||
``USE_KATANA=Yes`` is changed to ``USE_KITE=No`` (see `Benchmark Makefiles`_).
|
||||
|
||||
Designs with I/O pads are also modificated to be processed by |Katana| as it uses
|
||||
a different approach.
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Toolkit Contents
|
||||
================
|
||||
|
||||
The toolkit provides:
|
||||
|
||||
* **OK Status.** A set of eight benchmark designs that are used as regression tests (see `go.sh`_).
|
||||
Benchmarks with multiple target technologies still count as one.
|
||||
|
||||
* **KO Status.** Examples that currently fails due to incomplete or poorly implemenented
|
||||
features of |Coriolis|.
|
||||
|
||||
* **Unchecked.** Non-fonctional examples, or really too long to run for a regression test.
|
||||
|
||||
|
||||
============================= ========================== ======================================= ===========
|
||||
Design Technology Cell Libraries Status
|
||||
============================= ========================== ======================================= ===========
|
||||
|adder| |MOSIS| |nsxlib|, |mpxlib|, |msplib| Unchecked
|
||||
|AM2901| (standard cells) Symbolic cmos |sxlib|, |pxlib| OK
|
||||
|AM2901| (datapath) Symbolic cmos |sxlib|, |dp_sxlib|, |pxlib| OK
|
||||
|alliance-run| (|AM2901|) Symbolic cmos |sxlib|, |dp_sxlib|, |padlib| Unchecked
|
||||
``RingOscillator`` Symbolic cmos |sxlib| OK
|
||||
|cpu| |MOSIS| |nsxlib|, |mpxlib|, |msplib| OK
|
||||
**SNX**
|
||||
---------------------------------------------------------------------------------------------------------------
|
||||
|SNX| / Alliance Symbolic cmos |sclib| Unchecked
|
||||
|SNX| / sxlib2M Symbolic cmos 2M |sxlib| OK
|
||||
|SNX| / cmos Symbolic cmos |sxlib|, |pxlib| OK
|
||||
|SNX| / cmos45 Symbolic cmos 45 |nsxlib|, |mpxlib| OK
|
||||
|SNX| / FreePDK_45 FreePDK 45 |gscl45| OK
|
||||
|SNX| / c35b4 AMS 350nm c35b4 |CORELIB| KO
|
||||
**6502**
|
||||
---------------------------------------------------------------------------------------------------------------
|
||||
|6502| / cmos45 Symbolic cmos 45 |nsxlib| OK
|
||||
|Arlet6502| / cmos350 Symbolic cmos 45 |nsxlib| OK
|
||||
**MIPS**
|
||||
---------------------------------------------------------------------------------------------------------------
|
||||
|MIPS| (microprogrammed) Symbolic cmos |sxlib|, |dp_sxlib|, |rf2lib| OK
|
||||
|MIPS| (pipeline) Symbolic cmos |sxlib|, |dp_sxlib|, |rf2lib| OK
|
||||
|MIPS| (pipeline+chip) Symbolic cmos |sxlib|, |dp_sxlib|, |rf2lib|, |pxlib| Unchecked
|
||||
**Miscellaneous**
|
||||
---------------------------------------------------------------------------------------------------------------
|
||||
|FPGA| (``Moc4x4_L4C12``) Symbolic cmos |sxlib| KO
|
||||
|ISPD05| (``bigblue1``) None Generated on the fly Unchecked
|
||||
|ARMv2a| Symbolic cmos |sxlib|, |pxlib| OK
|
||||
**Vex RISC-V**
|
||||
---------------------------------------------------------------------------------------------------------------
|
||||
|VexRiscV| / cmos Symbolic cmos |sxlib|, |pxlib| OK
|
||||
|VexRiscV| / cmos45 Symbolic cmos 45 |nsxlib|, |mpxlib| OK
|
||||
|VexRiscV| / FreePDK_45 FreePDK 45 |gscl45| KO
|
||||
|VexRiscV| / c35b4 AMS 350nm c35b4 |CORELIB| KO
|
||||
**nMigen basic ALU example**
|
||||
---------------------------------------------------------------------------------------------------------------
|
||||
|ALU| / scn6m_deep_09 |MOSIS| |nsxlib| Unchecked
|
||||
============================= ========================== ======================================= ===========
|
||||
|
||||
|newpage|
|
||||
|
||||
* The |nMigen| design is the basic |ALU| taken from the distribution to perform
|
||||
integration test in the design flow. The target technology is the |MOSIS| 180nm
|
||||
(``scn6m_deep``).
|
||||
|
||||
* The |Arlet6502| is taken from `Arlet's MOS 6502 core`_ and is routed using the
|
||||
four metal symbolic technology (so the router has three availables).
|
||||
|
||||
* Three cell libraries.
|
||||
|
||||
All thoses libraries are for use with |MOSIS| and |FreePDK45| technologies.
|
||||
We provides them as part of the toolkit as we are still in the process of validating
|
||||
that technology, and we may have to perform quick fixes on them. The design are
|
||||
configured to use them instead of those supplied by the |Alliance| installation.
|
||||
|
||||
#. |nsxlib| : Standard Cell library, compliant with |MOSIS|.
|
||||
#. |mpxlib| : Pad library, compliant with |Coriolis|.
|
||||
#. |msplib| : Pad library, compliant with |Alliance| / |ring|. Cells in this
|
||||
library are *wrappers* around their counterpart in |mpxlib|, they provides
|
||||
an outer layout shell that is usable by |ring|.
|
||||
|
||||
* The |RDS| files for |MOSIS| (|scn6m_deep_09|) and |FreePDK45| technologies,
|
||||
for the same reason as the cell libraries.
|
||||
|
||||
* Miscellenous helper scripts.
|
||||
|
||||
|
||||
Toolkit Layout
|
||||
==============
|
||||
|
||||
The files are organized as follow :
|
||||
|
||||
=========================================== =======================================================
|
||||
Directory Contents
|
||||
=========================================== =======================================================
|
||||
``./etc/`` Configuration files
|
||||
``./etc/mk/`` Makefiles rules to build benchmarks. This directory
|
||||
must be symbolic linked into each benchmark directory
|
||||
``./etc/mk/users.d/`` Directory holding the configuration for each user
|
||||
``./bin/`` Additionnal scripts
|
||||
``./cells/<LIBDIR>`` Standard cells libraries.
|
||||
``./benchs/<BENCH>/<techno>/`` Benchmark directories
|
||||
``./doc/`` This documentation directory
|
||||
=========================================== =======================================================
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Benchmark Makefiles
|
||||
===================
|
||||
|
||||
A benchmark |Makefile| is build by setting up variables ``USE_<FEATURE>=Yes/No``
|
||||
then including the set of rules ``./mk/design-flow.mk``. The directory
|
||||
``alliance-check-toolkit/etc/mk/`` must be symlinked in the directory where the
|
||||
|Makefile| resides.
|
||||
|
||||
The |Makefile| provides some or all of the following targets. If the place
|
||||
and route stage of a benchmark has multiple target technology, one directory
|
||||
is created for each.
|
||||
|
||||
+--------------+----------------------+---------------------------------------------------------------+
|
||||
| |Coriolis| | |blif| | Synthetize the netlist with ``Yosys``. |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |layout| | The complete symbolic layout of the design (P&R). |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |gds| | Generate the real layout (|GDSII|) |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |druc| | Symbolic layout checking |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |lvx| | Perform |LVS|. |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |graal| | Launch |graal| in the |Makefile| 's environement |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |dreal| | Launch |dreal| in the |Makefile| 's environement, and load |
|
||||
| | | the |gds| file of the design. |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |view| | Launch |cgt| and load the design (chip) |
|
||||
| +----------------------+---------------------------------------------------------------+
|
||||
| | |cgt| | Launch |cgt| in the |Makefile| 's environement |
|
||||
+--------------+----------------------+---------------------------------------------------------------+
|
||||
|
||||
|
||||
A top |Makefile| in a bench directory must looks like:
|
||||
|
||||
.. code-block:: Makefile
|
||||
|
||||
LOGICAL_SYNTHESIS = Yosys
|
||||
PHYSICAL_SYNTHESIS = Coriolis
|
||||
DESIGN_KIT = nsxlib45
|
||||
|
||||
USE_CLOCKTREE = No
|
||||
USE_DEBUG = No
|
||||
USE_KITE = No
|
||||
|
||||
NETLISTS = VexRiscv
|
||||
|
||||
include ./mk/design-flow.mk
|
||||
|
||||
blif: VexRiscv.blif
|
||||
layout: vexriscv_r.ap
|
||||
gds: vexriscv_r.gds
|
||||
|
||||
lvx: lvx-vst-vexriscv
|
||||
drc: druc-vexriscv_r
|
||||
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Where variables have the following meaning:
|
||||
|
||||
========================= ===========================================================
|
||||
Variable Usage
|
||||
========================= ===========================================================
|
||||
``LOGICAL_SYNTHESIS`` Tells what synthesis tool to use between ``Alliance`` or
|
||||
``Yosys``. Netlists must be pre-generated if this variable
|
||||
is empty or not present
|
||||
``PHYSICAL_SYNTHESIS`` Tells what place & route tools to use between ``Alliance``
|
||||
(i.e. |ocp|, |nero| & |ring|) and ``Coriolis``
|
||||
``DESIGN_KIT`` The target technology and the standard cell libraries to
|
||||
use, for the supported values see below.
|
||||
``NETLISTS`` The list of *netlists* that are requireds to perform the
|
||||
place and route stage. See the complete explanation below
|
||||
``VST_FLAGS`` Flags to be passed to the tools driving |vst| files.
|
||||
Due to some non-standard syntax in the |Alliance| format,
|
||||
if you have a hierarchical design, please set it to
|
||||
``--vst-use-concat``
|
||||
``USE_CLOCKTREE`` Adds a clock-tree to the design (|Coriolis|)
|
||||
``USE_DEBUG`` Use the debugger enabled version of |cgt|
|
||||
``USE_KITE`` Use the old |Kite| (digital only) router
|
||||
========================= ===========================================================
|
||||
|
||||
Detailed semantic of the ``NETLISTS`` variable:
|
||||
|
||||
* Netlists name must be given without file extensions. Those are guessed according
|
||||
to the selected synthesis tool.
|
||||
|
||||
* According to the value of ``LOGICAL_SYNTHESIS`` they are user supplied or generated.
|
||||
In the later case, be aware that calling the ``clean`` target will remove
|
||||
the generated files.
|
||||
|
||||
* In case the logical synthesis stage is needed, the file holding the behavioral
|
||||
description is the *first* of the item list. In certain contexts, it will also be
|
||||
considered as the chip's core.
|
||||
|
||||
* If the behavioral description is hierarchical, each sub model must be added to
|
||||
the ``NETLISTS`` variable (*after* the top level one). In case of |Yosys|
|
||||
synthesis, |blif2vst| will generate a |vst| file for each model of the
|
||||
hierarchy. We add them to the list so a ``make clean`` will remove not only
|
||||
the top level |vst| (and associated |ap| after placement), but the whole
|
||||
hierarchy.
|
||||
|
||||
A slightly more complex example is below. The behavioral description that will
|
||||
be synthetised must be in ``alu_hier`` (in fact ``alu_hier.il`` or ``alu_hier.v``
|
||||
as we are using |Yosys|). Two sub-model are generated by the synthesis, ``add``
|
||||
and ``sub``, so we add them in tail of the ``NETLISTS`` variable.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
||||
LOGICAL_SYNTHESIS = Yosys
|
||||
PHYSICAL_SYNTHESIS = Coriolis
|
||||
DESIGN_KIT = nsxlib
|
||||
|
||||
YOSYS_FLATTEN = No
|
||||
VST_FLAGS = --vst-use-concat
|
||||
USE_CLOCKTREE = No
|
||||
USE_DEBUG = No
|
||||
USE_KITE = No
|
||||
|
||||
NETLISTS = alu_hier \
|
||||
add \
|
||||
sub
|
||||
|
||||
include ./mk/design-flow.mk
|
||||
|
||||
blif: alu_hier.blif
|
||||
vst: alu_hier.vst
|
||||
layout: alu_hier_r.ap
|
||||
gds: alu_hier_r.gds
|
||||
|
||||
lvx: lvx-alu_hier_r
|
||||
druc: druc-alu_hier_r
|
||||
view: cgt-alu_hier_r
|
||||
graal: graal-alu_hier_r
|
||||
|
||||
|
||||
|
||||
|
||||
Availables design kits (to set ``DESIGN_KIT``):
|
||||
|
||||
========================= ===========================================================
|
||||
Value Design kit
|
||||
========================= ===========================================================
|
||||
``sxlib`` The default |Alliance| symbolic technology. Use the
|
||||
|sxlib| and |pxlib| libraries.
|
||||
``nsxlib`` Symbolic technology fitted for |MOSIS| 180nm, 6 metal
|
||||
layers |scn6m_deep|
|
||||
``nsxlib45`` The symbolic technology fitted for 180nm and below.
|
||||
Used for |FreePDK45| in symbolic mode.
|
||||
``FreePDK_45`` Direct use of the real technology |FreePDK45|.
|
||||
``c35b4`` AMS 350nm c35b4 real technology.
|
||||
========================= ===========================================================
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Setting Up the User's Environement
|
||||
==================================
|
||||
|
||||
Before running the benchmarks, you must create a configuration file to tell
|
||||
where all the softwares are installeds. The file is to be created in the directory: ::
|
||||
|
||||
alliance-check-toolkit/etc/mk/users.d/
|
||||
|
||||
The file itself must be named from your username, if mine is ``jpc``: ::
|
||||
|
||||
alliance-check-toolkit/etc/mk/users.d/user-jpc.mk
|
||||
|
||||
Example of file contents:
|
||||
|
||||
.. code-block:: Makefile
|
||||
|
||||
# Where Jean-Paul Chaput gets his tools installeds.
|
||||
|
||||
export NDA_TOP = ${HOME}/crypted/soc/techno
|
||||
export AMS_C35B4 = ${NDA_TOP}/AMS/035hv-4.10
|
||||
export FreePDK_45 = ${HOME}/coriolis-2.x/work/DKs/FreePDK45
|
||||
export CORIOLIS_TOP = $(HOME)/coriolis-2.x/$(BUILD_VARIANT)$(LIB_SUFFIX_)/$(BUILD_TYPE_DIR)/install
|
||||
export ALLIANCE_TOP = $(HOME)/alliance/$(BUILD_VARIANT)$(LIB_SUFFIX_)/install
|
||||
export CHECK_TOOLKIT = $(HOME)/coriolis-2.x/src/alliance-check-toolkit
|
||||
export AVERTEC_TOP = /dsk/l1/tasyag/Linux.el7_64/install
|
||||
export YOSYS_TOP = /usr
|
||||
|
||||
All the variable names and values are more or less self explanatory...
|
||||
|
||||
|
||||
|Coriolis| Configuration Files
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Unlike |Alliance| which is entirely configured through environement variables
|
||||
or system-wide configuration file, |Coriolis| uses configuration files in
|
||||
the current directory. They are present for each bench:
|
||||
|
||||
* ``<cwd>/coriolis2/__init__.py`` : Just to tell |Python| that this directory
|
||||
contains a module and be able to *import* it.
|
||||
* ``<cwd>/coriolis2/settings.py`` : Override system configuration, and setup
|
||||
technology.
|
||||
|
||||
|
||||
|Coriolis| and Clock Tree Generation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
When |Coriolis| is used, it create a clock tree which modificate the original
|
||||
netlist. The new netlist, with a clock tree, has a postfix of ``_clocked``.
|
||||
|
||||
.. note:: **Trans-hierarchical Clock-Tree.** As |Coriolis| do not flatten the
|
||||
designs it creates, not only the top-level netlist is modificated. All the
|
||||
sub-blocks connected to the master clock are also duplicateds, whith the
|
||||
relevant part of the clock-tree included.
|
||||
|
||||
|
||||
|RHEL6| and Clones
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Under |RHEL6| the developpement version of |Coriolis| needs the |devtoolset-2|.
|
||||
``os.mk`` tries, based on ``uname`` to switch it on or off.
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Yosys Wrapper Script |yosys.py|
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
As far as I understand, |yosys| do not allow it's scripts to be parametriseds.
|
||||
The |yosys.py| script is a simple wrapper around |yosys| that generate a
|
||||
custom tailored |tcl| script then call |yosys| itself. It can manage two
|
||||
input file formats, |Verilog| and |RTLIL| and produce a |blif| netlist.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
ego@home:VexRiscv/cmos350$ ../../../bin/yosys.py \
|
||||
--input-lang=Verilog \
|
||||
--design=VexRiscv \
|
||||
--top=VexRiscv \
|
||||
--liberty=../../../cells/nsxlib/nsxlib.lib
|
||||
|
||||
|
||||
Here is an example of generated |tcl| script: ``VexRiscv.ys``:
|
||||
|
||||
.. code-block:: tcl
|
||||
|
||||
set verilog_file VexRiscv.v
|
||||
set verilog_top VexRiscv
|
||||
set liberty_file .../alliance-check-toolkit/cells/nsxlib/nsxlib.lib
|
||||
yosys read_verilog $verilog_file
|
||||
yosys hierarchy -check -top $verilog_top
|
||||
yosys synth -top $verilog_top
|
||||
yosys dfflibmap -liberty $liberty_file
|
||||
yosys abc -liberty $liberty_file
|
||||
yosys clean
|
||||
yosys write_blif VexRiscv.blif
|
||||
|
||||
|
||||
Benchmarks Special Notes
|
||||
========================
|
||||
|
||||
|alliance-run|
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
This benchmark comes mostly with it's own rules and do not uses the ones supplieds
|
||||
by |rules_mk|. It uses only the top-level configuration variables.
|
||||
|
||||
It a sligtly modified copy of the |alliance-run| found in the |Alliance| package
|
||||
(modification are all in the |Makefile|). It build an |AM2901|, but it is
|
||||
splitted in a control and an operative part (data-path). This is to also check
|
||||
the data-path features of |Alliance|.
|
||||
|
||||
And lastly, it provides a check for the |Coriolis| encapsulation of |Alliance|
|
||||
through |Python| wrappers. The support is still incomplete and should be used
|
||||
only by very experienced users. See the ``demo*`` rules.
|
||||
|
||||
|
||||
|AM2901| standard cells
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This benchmark can be run in loop to check slight variations. The clock tree generator
|
||||
modify the netlist trans-hierarchically then saves the new netlist. But, when there's
|
||||
a block *without* a clock (say an |ALU| for instance) it is not modificated yet saved.
|
||||
So the ``vst`` file got rewritten. And while the netlist is rewritten
|
||||
in a deterministic way (from how it was parsed), it is *not* done the same way due
|
||||
to instance and terminal re-ordering. So, from run to run, we get identical netlists
|
||||
but different files inducing slight variations in how the design is placed and routed.
|
||||
We use this *defect* to generate deterministic series of random variation that helps
|
||||
check the router. All runs are saved in a ``./runs`` sub-directory.
|
||||
|
||||
The script to perform a serie of run is ``./doRun.sh``.
|
||||
|
||||
To reset the serie to a specific run (for debug), you may use ``./setRun.sh``.
|
||||
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Libraries Makefiles
|
||||
===================
|
||||
|
||||
.. note::
|
||||
For those part to work, you need to get |hitas| & |yagle|:
|
||||
|
||||
`HiTas -- Static Timing Analyser <https://soc-extras.lip6.fr/en/tasyag-abstract-en/>`_
|
||||
|
||||
|
||||
The ``bench/etc/mk/check-library.mk`` provides rules to perform the check of a library
|
||||
as a whole or cell by cell. To avoid too much clutter in the library directory,
|
||||
all the intermediate files generated by the verification tools are kept in a
|
||||
``./check/`` subdirectory. Once a cell has been validated, a ``./check/<cell>.ok``
|
||||
is generated too prevent it to be checked again in subsequent run. If you
|
||||
want to force the recheck of the cell, do not forget to remove this file.
|
||||
|
||||
|
||||
Checking Procedure
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* DRC with |druc|.
|
||||
* Formal proof between the layout and the behavioral description. This is a
|
||||
somewhat long chain of tools:
|
||||
|
||||
#. |cougar|, extract the spice netlist (``.spi``).
|
||||
#. |yagle|, rebuild a behavioral description (``.vhd``) from the spice
|
||||
netlist.
|
||||
#. |vasy|, convert the ``.vhd`` into a ``.vbe`` (Alliance |VHDL| subset
|
||||
for behavioral descriptions).
|
||||
#. |proof|, perform the formal proof between the refence ``.vbe`` and the
|
||||
extracted one.
|
||||
|
||||
|
||||
========================= ===================================================
|
||||
Rule or File Action
|
||||
========================= ===================================================
|
||||
``check-lib`` Validate every cell of the library
|
||||
``clean-lib-tmp`` Remove all intermediate files in the ``./check``
|
||||
subdirectory **except** for the ``*.ok`` ones.
|
||||
That is, cells validated will not be rechecked.
|
||||
``clean-lib`` Remove all files in ``./check``, including ``*.ok``
|
||||
``./check/<cell>.ok`` Use this rule to perform the individual check of
|
||||
``<cell>``. If the cell is validated, a file of
|
||||
the same name will be created, preventing the cell
|
||||
to be checked again.
|
||||
========================= ===================================================
|
||||
|
||||
|
||||
Synopsys Liberty .lib Generation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The generation of the liberty file is only half-automated. |hitas| / |yagle|
|
||||
build the base file, then we manually perform the two modifications (see below).
|
||||
|
||||
The rule to call to generate the liberty file is: ``<libname>-dot-lib`` where
|
||||
``<libname>`` is the name of the library. To avoid erasing the previous one (and
|
||||
presumably hand patched), this rule create a ``<libname>.lib.new``.
|
||||
|
||||
#. Run the ``./bin/cellsArea.py`` script which will setup the areas of the cells
|
||||
(in square um). Work on ``<libname>.lib.new``.
|
||||
|
||||
#. For the synchronous flip-flop, add the functional description to their
|
||||
timing descriptions: ::
|
||||
|
||||
cell (sff1_x4) {
|
||||
pin (ck) {
|
||||
direction : input ;
|
||||
clock : true ;
|
||||
/* Timing informations ... */
|
||||
}
|
||||
pin (q) {
|
||||
direction : output ;
|
||||
function : "IQ" ;
|
||||
/* Timing informations ... */
|
||||
}
|
||||
ff(IQ,IQN) {
|
||||
next_state : "i" ;
|
||||
clocked_on : "ck" ;
|
||||
}
|
||||
}
|
||||
|
||||
cell (sff2_x4) {
|
||||
pin (ck) {
|
||||
direction : input ;
|
||||
clock : true ;
|
||||
/* Timing informations ... */
|
||||
}
|
||||
pin (q) {
|
||||
direction : output ;
|
||||
function : "IQ" ;
|
||||
/* Timing informations ... */
|
||||
}
|
||||
ff(IQ,IQN) {
|
||||
next_state : "(cmd * i1) + (cmd' * i0)" ;
|
||||
clocked_on : "ck" ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.. note::
|
||||
The tristate cells **ts_** and **nts_** are not included in the ``.lib``.
|
||||
|
||||
|
||||
Helpers Scripts
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
|TCL| scripts for |avt_shell| related to cell validation and characterization,
|
||||
in ``./benchs/bin``, are:
|
||||
|
||||
* ``extractCell.tcl``, read a spice file and generate a |VHDL| behavioral
|
||||
description (using |yagle|). This file needs to be processed further by
|
||||
|vasy| to become an Alliance behavioral file (|vbe|). It takes two
|
||||
arguments: the technology file and the cell spice file.
|
||||
Cell which name starts by ``sff`` will be treated as D flip-flop.
|
||||
|
||||
* ``buildLib.tcl``, process all cells in a directory to buil a liberty
|
||||
file. Takes two arguments, the technology file and the name of the
|
||||
liberty file to generate. The collection of characterized cells will
|
||||
be determined by the ``.spi`` files found in the current directory.
|
||||
|
||||
|
||||
Macro-Blocks Makefiles
|
||||
======================
|
||||
|
||||
The ``bench/etc/mk/check-generator.mk`` provides rules to perform the check of a
|
||||
macro block generator. As one library cell may be used to build multiple macro-blocks,
|
||||
one |Makefile| per macro must be provided. The *dot* extension of a |Makefile| is
|
||||
expected to be the name of the macro-block. Here is a small example for the register
|
||||
file generator, ``Makefile.block_rf2``:
|
||||
|
||||
.. code-block:: Makefile
|
||||
|
||||
TK_RTOP = ../..
|
||||
export MBK_CATA_LIB = $(TOOLKIT_CELLS_TOP)/nrf2lib
|
||||
|
||||
include $(TK_RTOP)/etc/mk/alliance.mk
|
||||
include $(TK_RTOP)/etc/mk/mosis.mk
|
||||
include $(TK_RTOP)/etc/mk/check-generator.mk
|
||||
|
||||
check-gen: ./check/block_rf2_p_b_4_p_w_6.ok \
|
||||
./check/block_rf2_p_b_2_p_w_32.ok \
|
||||
./check/block_rf2_p_b_64_p_w_6.ok \
|
||||
./check/block_rf2_p_b_16_p_w_32.ok \
|
||||
./check/block_rf2_p_b_32_p_w_32.ok
|
||||
|
||||
.. note::
|
||||
In the ``check-gen`` rule, the name of the block **must** match the *dot*
|
||||
extension of the |Makefile|, here: ``block_rf2``.
|
||||
|
||||
Macro-block generators are parametrized. We uses a special naming convention
|
||||
to pass parameters names and values trough the rule name. To declare a parameter,
|
||||
add ``_p_``, then the name of the parameter and it's value separated by a ``_``.
|
||||
|
||||
========================== ===============================
|
||||
String in Rule Name Call to the generator
|
||||
========================== ===============================
|
||||
``_p_b_16_p_w_32`` ``-b 16 -w 32``
|
||||
========================== ===============================
|
||||
|
||||
When multiple flavor of a generator could be built upon the same cell library,
|
||||
one |Makefile| per flavor is provided. To run them all at once, a ``makeAll.sh``
|
||||
script is also available.
|
||||
|
||||
The ``check-gen`` rule only perform a |DRC| and a |LVS| to check that their
|
||||
router as correctly connected the cells of a macro-block. It doesn't perform
|
||||
any functional verification.
|
||||
|
||||
To perform a functional abstraction with |Yagle| you may use the following
|
||||
command: ::
|
||||
|
||||
ego@home:nrf2lib> make -f Makefile.block_rf2 block_rf2_b_4_p_w_6_kite.vhd
|
||||
|
||||
Even if the resulting |VHDL| cannot be used it is always good to look in
|
||||
the report file ``block_rf2_b_4_p_w_6_kite.rep`` for any error or warning,
|
||||
particularly any disconnected transistor.
|
||||
|
||||
|
||||
Calling the Generator
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
A script ``./check/generator.py`` must be written in order to call the generator
|
||||
in standalone mode. This script is quite straigthforward, what changes between
|
||||
generators is the command line options and the ``stratus.buildModel()`` call.
|
||||
|
||||
After the generator call, we get a netlist and placement, but it is not finished
|
||||
until it is routed with the |Coriolis| router.
|
||||
|
||||
.. note::
|
||||
Currently all macro-block generators are part of the |Stratus| netlist capture
|
||||
language tool from |Coriolis|.
|
||||
|
||||
|
||||
Scaling the Cell Library
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This operation has to be done once, when the cell library is initially ported.
|
||||
The result is put in the |git| repository, so there's no need to run it again
|
||||
on a provided library.
|
||||
|
||||
The script is ``./check/scaleCell.py``. It is very sensitive on the way
|
||||
the library pathes are set in ``.coriolis2/settings.py``. It must have the
|
||||
target cell library setup as the ``WORKING_LIBRARY`` and the source cell
|
||||
library in the ``SYSTEM_LIBRARY``. The technology must be set to the target
|
||||
one. And, of course, the script must be run the directory where ``.coriolis2/``
|
||||
is located.
|
||||
|
||||
The heart of the script is the ``scaleCell()`` function, which work on the
|
||||
original cell in variable ``sourceCell`` (argument) and ``scaledCell``, the
|
||||
converted one. Although the script is configured to use the *scaled*
|
||||
technology, this do not affect the values of the coordinates of the cells
|
||||
we read, whatever their origin. This means that when we read the ``sourceCell``,
|
||||
the coordinates of it's components keeps the value they have under ``SxLib``.
|
||||
It is *when* we duplicate them into the ``scaledCell`` that we perform the
|
||||
scaling (i.e. multiply by two) and do whatever adjustments we need.
|
||||
So when we have an adjustment to do on a specific segment, say slihgtly shift
|
||||
a ``NDIF``, the coordinates must be expressed as in ``SxLib`` (once more: *before*
|
||||
scaling).
|
||||
|
||||
.. note::
|
||||
There is a safety in ``./check/scaleCell.py``, it will not run until the
|
||||
target library has not been emptied of it's cells.
|
||||
|
||||
The script contains a ``getDeltas()`` function which provide a table on how
|
||||
to resize some layers (width and extension).
|
||||
|
||||
As the scaling operations is very specific to each macro-block, this script
|
||||
is *not* shared, but customized for each one.
|
||||
|
||||
|
||||
Tools & Scripts
|
||||
===============
|
||||
|
||||
|
||||
.. _go.sh:
|
||||
|
||||
One script to run them all: |go|
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To call all the bench's ``Makefile`` sequentially and execute one or more rules on
|
||||
each, the small script utility |go| is available. Here are some examples: ::
|
||||
|
||||
ego@home:bench$ ./bin/go.sh clean
|
||||
ego@home:bench$ ./bin/go.sh lvx
|
||||
|
||||
|
||||
Command Line |cgt|: |doChip|
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
As a alternative to |cgt|, the small helper script |doChip| allows to
|
||||
perform all the P&R tasks, on an stand-alone block or a whole chip.
|
||||
|
||||
|
||||
Blif Netlist Converter
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The |blif2vst| script convert a ``.blif`` netlist into an |Alliance| one
|
||||
(|vst|). This is a very straightforward encapsulation of |Coriolis|.
|
||||
It could have been included in |doChip|, but then the ``make`` rules
|
||||
would have been much more complicateds.
|
||||
|
||||
|
||||
Pad Layout Converter |px2mpx|
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The |px2mpx| script convert pad layout from the |pxlib| (|Alliance| dummy
|
||||
technology) into |mpxlib| (|MOSIS| compliant symbolic technology).
|
||||
|
||||
Basically it multiplies all the coordinate by two as the source technology
|
||||
is 1µ type and the target one a 2µ. In addition it performs some adjustement
|
||||
on the wire extension and minimal width and the blockage sizes.
|
||||
|
||||
As it is a one time script, it is heavily hardwired, so before using it
|
||||
do not forget to edit it to suit your needs.
|
||||
|
||||
The whole conversion process is quite tricky as we are cheating with the
|
||||
normal use of the software. The steps are as follow:
|
||||
|
||||
1. Using the |Alliance| dummy technology and in an empty directory, run
|
||||
the script. The layouts of the converted pads (``*_mpx.ap``) will be
|
||||
created.
|
||||
|
||||
2. In a second directory, this time configured for the |MOSIS| technology
|
||||
(see ``.coriolis2_techno.conf``) copy the converted layouts. In addition
|
||||
to the layouts, this directory **must also contain** the behavioral
|
||||
description of the pads (``.vbe``). Otherwise, you will not be able to
|
||||
see the proper layout.
|
||||
|
||||
3. When you are satisfied with the new layout of the pads, you can copy
|
||||
them back in the official pad cell library.
|
||||
|
||||
.. note:: **How Coriolis Load Cells.**
|
||||
Unlike in |Alliance|, |Coriolis| maintain a much tighter relationship
|
||||
between physical and logical (structural or behavioral) views. The
|
||||
loading process of a cell try *first* to load the logical view, and
|
||||
if found, keep tab of the directory it was in. *Second* it tries to
|
||||
load the physical view from the same directory the logical view was
|
||||
in. If no logical view is found, only the physical is loaded.
|
||||
|
||||
Conversely, when saving a cell, the directory it was loaded from
|
||||
is kept, so that the cell will be overwritten, and not duplicated
|
||||
in the working directory as it was in |Alliance|.
|
||||
|
||||
This explains why the behavioral view of the pad is needed in
|
||||
the directory the layouts are put into. Otherwise you would only see
|
||||
the pads of the system library (if any).
|
||||
|
||||
|
||||
|Cadence| Support
|
||||
=================
|
||||
|
||||
To perform comparisons with |Cadence| |EDI| tools (i.e. |encounter|
|
||||
|NanoRoute|), some benchmarks have a sub-directory ``encounter``
|
||||
holding all the necessary files. Here is an example for the design
|
||||
named ``<fpga>``.
|
||||
|
||||
=========================== =================================================
|
||||
``encounter`` directory
|
||||
------------------------------------------------------------------------------
|
||||
File Name Contents
|
||||
=========================== =================================================
|
||||
``fpga_export.lef`` Technology & standard cells for the design
|
||||
``fpga_export.def`` The design itself, flattened to the standard
|
||||
cells.
|
||||
``fpga_nano.def`` The placed and routed result.
|
||||
``fpga.tcl`` The |TCL| script to be run by |encounter|
|
||||
=========================== =================================================
|
||||
|
||||
The LEF/DEF file exported or imported by Coriolis are *not* true physical
|
||||
files. They are pseudo-real, in the sense that all the dimensions are
|
||||
directly taken from the symbolic with the simple rule ``1 lambda = 1 micron``.
|
||||
|
||||
.. note:: **LEF/DEF files:** Coriolis is able to import/export in those
|
||||
formats only if it has been compiled against the |Si2| relevant libraries
|
||||
that are subjects to specific license agreements. So in case we don't
|
||||
have access to thoses we supplies the generated LEF/DEF files.
|
||||
|
||||
The ``encounter`` directory contains the LEF/DEF files and the |TCL|
|
||||
script to be run by |encounter|: ::
|
||||
|
||||
ego@home:encounter> . ../../etc/EDI1324.sh
|
||||
ego@home:encounter> encounter -init ./fpga.tcl
|
||||
|
||||
|
||||
Example of |TCL| script for |encounter|:
|
||||
|
||||
.. code-block:: tcl
|
||||
|
||||
set_global _enable_mmmc_by_default_flow $CTE::mmmc_default
|
||||
suppressMessage ENCEXT-2799
|
||||
win
|
||||
loadLefFile fpga_export.lef
|
||||
loadDefFile fpga_export.def
|
||||
floorPlan -site core -r 0.998676319592 0.95 0.0 0.0 0.0 0.0
|
||||
getIoFlowFlag
|
||||
fit
|
||||
setDrawView place
|
||||
setPlaceMode -fp false
|
||||
placeDesign
|
||||
generateTracks
|
||||
generateVias
|
||||
setNanoRouteMode -quiet -drouteFixAntenna 0
|
||||
setNanoRouteMode -quiet -drouteStartIteration 0
|
||||
setNanoRouteMode -quiet -routeTopRoutingLayer 5
|
||||
setNanoRouteMode -quiet -routeBottomRoutingLayer 2
|
||||
setNanoRouteMode -quiet -drouteEndIteration 0
|
||||
setNanoRouteMode -quiet -routeWithTimingDriven false
|
||||
setNanoRouteMode -quiet -routeWithSiDriven false
|
||||
routeDesign -globalDetail
|
||||
global dbgLefDefOutVersion
|
||||
set dbgLefDefOutVersion 5.7
|
||||
defOut -floorplan -netlist -routing fpga_nano.def
|
||||
|
||||
|
||||
Technologies
|
||||
==============
|
||||
|
||||
We provides configuration files for the publicly available |MOSIS|
|
||||
technology ``SCN6M_DEEP``.
|
||||
|
||||
* ``./bench/etc/scn6m_deep_09.rds``, |RDS| rules for symbolic to real
|
||||
transformation.
|
||||
* ``./bench/etc/scn6m_deep.hsp``, transistor spice models for |yagle|.
|
||||
|
||||
References:
|
||||
|
||||
* `MOSIS Scalable CMOS (SCMOS) <https://www.mosis.com/files/scmos/scmos.pdf>`_
|
||||
* `MOSIS Wafer Acceptance Tests <ftp://ftp.mosis.com/pub/mosis/vendors/tsmc-018/t92y_mm_non_epi_thk_mtl-params.txt>`_
|
||||
|
|
@ -35,7 +35,7 @@ Alliance Documentation
|
|||
|
||||
.. row::
|
||||
|
||||
`Alliance Check Toolkit`_ |br|
|
||||
`Alliance Check Toolkit <{filename}/pages/check-toolkit/CheckToolkit_HTML.rst>`_ |br|
|
||||
Regression tests & examples
|
||||
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ RDS / Symbolic to Real Conversion
|
|||
Printable version of this Document
|
||||
==================================
|
||||
|
||||
`RDS.pdf <{filename}/pdfs/main/RDS.pdf>`_
|
||||
`RDS.pdf <{filename}/pdfs/RDS.pdf>`_
|
||||
|
||||
|
||||
.. contents::
|
||||
|
|
|
@ -20,7 +20,7 @@ Stratus : Simulation Patterns
|
|||
Printable version of this Document
|
||||
==================================
|
||||
|
||||
`Stratus.pdf <{filename}/pdf/Stratus.pdf>`_
|
||||
`Stratus.pdf <{filename}/pdfs/Stratus.pdf>`_
|
||||
|
||||
|
||||
.. contents::
|
||||
|
|
|
@ -93,6 +93,10 @@
|
|||
.. |IEEE| replace:: :sc:`ieee`
|
||||
.. |ANSI| replace:: :sc:`ansi`
|
||||
.. |MIPS| replace:: :sc:`mips`
|
||||
.. |EDI| replace:: :sc:`edi`
|
||||
.. |Yosys| replace:: :sc:`Yosys`
|
||||
.. |nMigen| replace:: :sc:`nMigen`
|
||||
.. |NanoRoute| replace:: :sc:`NanoRoute`
|
||||
.. |Pharosc| replace:: :sc:`Pharosc`
|
||||
.. |Am2901| replace:: :sc:`Am2901`
|
||||
.. |CAIRO| replace:: :sc:`cairo`
|
||||
|
@ -101,7 +105,6 @@
|
|||
.. |CRL| replace:: :sc:`crl`
|
||||
.. |Alliance| replace:: :sc:`Alliance`
|
||||
.. |StaCS| replace:: :sc:`StaCS`
|
||||
.. |Yosys| replace:: :sc:`Yosys`
|
||||
.. |GenLib| replace:: :sc:`GenLib`
|
||||
.. |Nero| replace:: :sc:`Nero`
|
||||
.. |Druc| replace:: :cb:`Druc`
|
||||
|
@ -136,6 +139,7 @@
|
|||
.. |pdf| replace:: :sc:`pdf`
|
||||
.. |UTF-8| replace:: :sc:`utf-8`
|
||||
.. |Python| replace:: :sc:`Python`
|
||||
.. |TCL| replace:: :sc:`tcl`
|
||||
.. |Linux| replace:: :sc:`Linux`
|
||||
.. |MacPorts| replace:: :sc:`MacPorts`
|
||||
.. |devtoolset| replace:: :cb:`devtoolset`
|
||||
|
@ -158,6 +162,8 @@
|
|||
.. |bison| replace:: :cb:`bison`
|
||||
.. |flex| replace:: :cb:`flex`
|
||||
.. |struct| replace:: :cb:`struct`
|
||||
.. |Makefile| replace:: :cb:`Makefile`
|
||||
|
||||
|
||||
.. |KeyUp| replace:: :fboxtt:`Up`
|
||||
.. |KeyDown| replace:: :fboxtt:`Down`
|
||||
|
@ -221,6 +227,7 @@
|
|||
.. |layouts| replace:: *layouts*
|
||||
.. |VLSI| replace:: :sc:`vlsi`
|
||||
.. |GDS| replace:: :sc:`gds`
|
||||
.. |GDSII| replace:: :sc:`gdsii`
|
||||
.. |CMOS| replace:: :sc:`cmos`
|
||||
.. |VHDL| replace:: :sc:`vhdl`
|
||||
.. |NWELL| replace:: :sc:`nwell`
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,7 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="Alliance Documentation Alliance Installation How to get, build & install Alliance alongside Coriolis `Alliance Check Toolkit`_ Regression tests & examples Coriolis Documentation Coriolis User's Guide ...">
|
||||
<meta name="description" content="Alliance Documentation Alliance Installation How to get, build & install Alliance alongside Coriolis Alliance Check Toolkit Regression tests & examples Coriolis Documentation Coriolis User's Guide ...">
|
||||
<meta name="keywords" content="">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
|
||||
|
@ -127,7 +127,7 @@
|
|||
How to get, build & install Alliance alongside Coriolis</div>
|
||||
<div class="col-md-5">
|
||||
<div class="row">
|
||||
<a href="#id2"><span class="problematic" id="id3">`Alliance Check Toolkit`_</span></a> <span class="raw-html"><br/></span>
|
||||
<a class="reference external" href="../pages/check-toolkit.html">Alliance Check Toolkit</a> <span class="raw-html"><br/></span>
|
||||
Regression tests & examples</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -186,12 +186,6 @@ Cadence Documentation of LEF 5.8 C++ API</p>
|
|||
Cadence Documentation of DEF 5.8 C++ API</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="system-messages section">
|
||||
<h2>Docutils System Messages</h2>
|
||||
<div class="system-message" id="id2">
|
||||
<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/dsk/l1/jpc/coriolis-2.x/src/coriolis/documentation/content/pages/documentation.rst</tt>, line 38); <em><a href="#id3">backlink</a></em></p>
|
||||
Unknown target name: "alliance check toolkit".</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
<!-- Hurricane Concepts. -->
|
||||
<div class="section" id="printable-version-of-this-document">
|
||||
<h2><a class="toc-backref" href="#id2">Printable version of this Document</a></h2>
|
||||
<p><a class="reference external" href="{filename}/pdfs/main/RDS.pdf">RDS.pdf</a></p>
|
||||
<p><a class="reference external" href="../pdfs/RDS.pdf">RDS.pdf</a></p>
|
||||
<div class="contents topic" id="contents">
|
||||
<p class="topic-title first">Contents</p>
|
||||
<ul class="simple">
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
<!-- Hurricane Concepts. -->
|
||||
<div class="section" id="printable-version-of-this-document">
|
||||
<h2><a class="toc-backref" href="#id8">Printable version of this Document</a></h2>
|
||||
<p><a class="reference external" href="{filename}/pdf/Stratus.pdf">Stratus.pdf</a></p>
|
||||
<p><a class="reference external" href="../pdfs/Stratus.pdf">Stratus.pdf</a></p>
|
||||
<div class="contents topic" id="contents">
|
||||
<p class="topic-title first">Contents</p>
|
||||
<ul class="simple">
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -24,14 +24,6 @@
|
|||
background-color: black;
|
||||
}
|
||||
|
||||
.table > thead > tr > th {
|
||||
border-bottom: 2px solid black;
|
||||
}
|
||||
|
||||
.table > tbody > tr > td {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
/* ReST customization. */
|
||||
.content p, .content ul > li {
|
||||
text-align: justify;
|
||||
|
|
|
@ -29,6 +29,7 @@ STATIC_PATHS = [ 'pages/users-guide'
|
|||
, 'pages/python-tutorial'
|
||||
, 'pages/python-cpp'
|
||||
, 'pages/stratus'
|
||||
, 'pages/check-toolkit'
|
||||
, 'pages/rds'
|
||||
, 'scripts'
|
||||
, 'images'
|
||||
|
@ -115,6 +116,9 @@ IGNORE_FILES = [ 'UsersGuide.rst' # For User's Guide.
|
|||
, 'Language.rst'
|
||||
, 'Patterns.rst'
|
||||
|
||||
, 'CheckToolkit.rst' # Alliance Check Toolkit.
|
||||
, 'README.rst'
|
||||
|
||||
, 'RDS.rst' # For RDS.
|
||||
, 'RDSpage.rst'
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 {
|
||||
font-size: 11pt;
|
||||
/* The Open Sans font family is supplied by TexLive. */
|
||||
font-family: "Open Sans", Verdana, sans-serif;;
|
||||
font-family: "Roboto", "Open Sans", Verdana, sans-serif;;
|
||||
}
|
||||
|
||||
html {
|
||||
|
@ -598,7 +598,7 @@
|
|||
*/
|
||||
|
||||
div.fragment {
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
font-size: 80%;
|
||||
border: none;
|
||||
/*border-width: thin; */
|
||||
|
@ -610,6 +610,16 @@
|
|||
margin-right: 5%
|
||||
}
|
||||
|
||||
div.fragment a.code:link,
|
||||
div.fragment a.code:visited,
|
||||
div.fragment a.codeRef:link,
|
||||
div.fragment a.codeRef:visited {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.line {
|
||||
white-space: pre;
|
||||
padding: 0pt;
|
||||
|
@ -631,7 +641,7 @@
|
|||
*/
|
||||
|
||||
a.el, a.elRef {
|
||||
font-family: Courier;
|
||||
font-family: "Roboto Mono", Courier;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: black;
|
||||
|
@ -698,7 +708,7 @@
|
|||
}
|
||||
|
||||
table.memname * {
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
}
|
||||
|
||||
|
||||
|
@ -744,7 +754,7 @@
|
|||
/*background-color: #eeeeff;*/
|
||||
/*background-color: #EEEEEE;*/
|
||||
/*background-color: #CCE6CA;*/
|
||||
font-family: "Monospace";
|
||||
font-family: "Roboto Mono", "Monospace";
|
||||
}
|
||||
|
||||
.memTemplItemLeft, .memTemplItemRight {
|
||||
|
@ -753,7 +763,7 @@
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.memItemLeft { font-size: 11px; width: 35%; }
|
||||
.memItemLeft { font-size: 11px; width: 100pt; }
|
||||
.memItemRight { font-size: 12px; }
|
||||
.memTemplItemLeft { font-size: 11px; }
|
||||
.memTemplItemRight { font-size: 12px; }
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue