Migrating the initialisation system to be completely Python-like.
* New: In bootstrap/coriolisEnv.py, add the "etc" directory to the PYTHONPATH as initialization are now Python modules. * New: In Hurricane/analogic, first groundwork for the integration of PIP/MIM/MOM multi-capacitors. Add C++ and Python interface for the allocation matrix and the list of capacities values. * Change: In Hurricane::RegularLayer, add a layer parameter to the constructor so the association between the RegularLayer and it's BasicLayer can readily be done. * Change: In Hurricane::Layer, add a new getCut() accessor to get the cut layer in ViaLayer. * Change: In Hurricane::DataBase::get(), the Python wrapper should no longer consider an error if the data-base has not been created yet. Just return None. * Bug: In Isobar::PyLayer::getEnclosure() wrapper, if the overall enclosure is requested, pass the right parameter to the C++ function. * Change: In AllianceFramework, make public _bindLibraries() and export it to the Python interface. * Change: In AllianceFramework::create(), do not longer call bindLibraries(). This now must be done explicitely and afterwards. * Change: In AllianceFramework::createLibrary() and Environement::addSYSTEM_LIBRARY(), minor bug corrections that I don't recall. * Change: In SearchPath::prepend(), set the selected index to zero and return it. * Change: In CRL::System CTOR, add "etc" to the PYTHONPATH as the configuration files are now organized as Python modules. * New: In PyCRL, export the CRL::System singleton, it's creation is no longer triggered by the one of AllianceFramework. * New: In CRL/etc/, convert most of the configuration files into the Python module format. For now, keep the old ".conf", but that are no longer used. For the real technologies, we cannot keep the directory name as "180" or "45" as it not allowed by Python syntax, so we create "node180" or "node45" instead. Most of the helpers and coriolisInit.py are no longer used now. To be removed in future commits after being sure that everything works... * Bug: In AutoSegment::makeDogleg(AutoContact*), the layer of the contacts where badly computed when one end of the original segment was attached to a non-preferred direction segment (mostly on terminal contacts). Now use the new AutoContact::updateLayer() method. * Bug: In Dijkstra::load(), limit symetric search area only if the net is a symmetric one ! * Change: In Katana/python/katanaInit.py, comply with the new initialisation scheme. * Change: In Unicorn/cgt.py, comply to the new inititalization scheme. * Change: In cumulus various Python scripts remove the call to helpers.staticInitialization() as they are not needed now (we run in only *one* interpreter, so we correctly share all init). In plugins/__init__.py, read the new NDA directory variable. * Bug: In cumulus/plugins/Chip.doCoronafloorplan(), self.railsNb was not correctly managed when there was no clock. * Change: In cumulus/plugins/Configuration.coronaContactArray(), compute the viaPitch from the technology instead of the hard-coded 4.0 lambdas. In Configuration.loadConfiguration(), read the "ioring.py" from the new user's settings module. * Bug: In stratus.dpgen_ADSB2F, gives coordinates translated into DbU to the XY functions. In st_model.Save(), use the VstUseConcat flag to get correct VST files. In st_net.hur_net(), when a net is POWER/GROUND or CLOCK also make it global. * Change: In Oroshi/python/WIP_Transistor.py, encapsulate the generator inside a try/except block to get prettier error (and stop at the first).
This commit is contained in:
parent
2d8e26a467
commit
2c73cfe76c
|
@ -198,6 +198,19 @@ namespace Anabatic {
|
|||
}
|
||||
|
||||
|
||||
void AutoContact::updateLayer ()
|
||||
{
|
||||
size_t minDepth = (size_t)-1;
|
||||
size_t maxDepth = 0;
|
||||
|
||||
getDepthSpan( minDepth, maxDepth );
|
||||
if (minDepth == maxDepth)
|
||||
setLayer( Session::getRoutingGauge()->getRoutingLayer(minDepth) );
|
||||
else
|
||||
setLayer( Session::getRoutingGauge()->getContactLayer(minDepth) );
|
||||
}
|
||||
|
||||
|
||||
void AutoContact::getLengths ( DbU::Unit* lengths, AutoSegment::DepthLengthSet& processeds )
|
||||
{
|
||||
DbU::Unit hSideLength = getGCell()->getSide( Flags::Horizontal ).getSize();
|
||||
|
|
|
@ -2212,15 +2212,11 @@ namespace Anabatic {
|
|||
|
||||
if (isSource) {
|
||||
doglegs[ index + 0 ]->setLayer( std::max((size_t)1,segmentDepth-2) );
|
||||
doglegs[ index + 1 ]->getAutoSource()->setLayer( rg->getContactLayer(segmentDepth-2) );
|
||||
doglegs[ index + 1 ]->getAutoTarget()->setLayer( rg->getContactLayer(segmentDepth-1) );
|
||||
cdebug_log(149,0) << "doglegs[i+0]: " << doglegs[index+0] << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoSource() << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoTarget() << endl;
|
||||
} else {
|
||||
doglegs[ index + 2 ]->setLayer( std::max((size_t)1,segmentDepth-2) );
|
||||
doglegs[ index + 1 ]->getAutoTarget()->setLayer( rg->getContactLayer(segmentDepth-2) );
|
||||
doglegs[ index + 1 ]->getAutoSource()->setLayer( rg->getContactLayer(segmentDepth-1) );
|
||||
cdebug_log(149,0) << "doglegs[i+2]: " << doglegs[index+2] << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoTarget() << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoSource() << endl;
|
||||
|
@ -2233,20 +2229,18 @@ namespace Anabatic {
|
|||
|
||||
if (isSource) {
|
||||
doglegs[ index + 0 ]->setLayer( segmentDepth+2 );
|
||||
doglegs[ index + 1 ]->getAutoSource()->setLayer( rg->getContactLayer(segmentDepth+1) );
|
||||
doglegs[ index + 1 ]->getAutoTarget()->setLayer( rg->getContactLayer(segmentDepth ) );
|
||||
cdebug_log(149,0) << "doglegs[i+0]: " << doglegs[index+0] << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoSource() << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoTarget() << endl;
|
||||
} else {
|
||||
doglegs[ index + 2 ]->setLayer( segmentDepth+2 );
|
||||
doglegs[ index + 1 ]->getAutoTarget()->setLayer( rg->getContactLayer(segmentDepth+1) );
|
||||
doglegs[ index + 1 ]->getAutoSource()->setLayer( rg->getContactLayer(segmentDepth ) );
|
||||
cdebug_log(149,0) << "doglegs[i+2]: " << doglegs[index+2] << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoTarget() << endl;
|
||||
cdebug_log(149,0) << "doglegs[i+1]: " << doglegs[index+1]->getAutoSource() << endl;
|
||||
}
|
||||
}
|
||||
doglegs[ index + 1 ]->getAutoSource()->updateLayer();
|
||||
doglegs[ index + 1 ]->getAutoTarget()->updateLayer();
|
||||
}
|
||||
|
||||
cdebug_tabw(149,-1);
|
||||
|
|
|
@ -1505,8 +1505,8 @@ namespace Anabatic {
|
|||
|
||||
cdebug_log(112,0) << bb.getXMin() << " " << bb.getXMax() << endl;
|
||||
cdebug_log(112,0) << "center X:" << center.getX() << " gcell Xmax:" << gcell->getXMax() << endl;
|
||||
|
||||
_limitSymSearchArea(rp); // ANALOG
|
||||
|
||||
if (state and state->isSymmetric()) _limitSymSearchArea( rp );
|
||||
|
||||
if (not gcell) {
|
||||
cerr << Error( "Dijkstra::load(): %s\n"
|
||||
|
|
|
@ -163,6 +163,7 @@ namespace Anabatic {
|
|||
virtual void cacheDetach ( AutoSegment* ) = 0;
|
||||
virtual void cacheAttach ( AutoSegment* ) = 0;
|
||||
virtual void updateCache () = 0;
|
||||
void updateLayer ();
|
||||
void updateSize ();
|
||||
virtual void updateGeometry () = 0;
|
||||
virtual void updateTopology () = 0;
|
||||
|
|
|
@ -289,6 +289,7 @@ if __name__ == "__main__":
|
|||
strippedPythonPath = "%s/cumulus:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s/cumulus/plugins:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s/stratus:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s:" % (sysconfDir) + strippedPythonPath
|
||||
|
||||
shellScriptSh += 'PYTHONPATH="%(PYTHONPATH)s";' \
|
||||
'export PYTHONPATH;'
|
||||
|
|
|
@ -54,7 +54,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -59,7 +59,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -66,7 +66,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -60,7 +60,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -93,7 +93,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -58,7 +58,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -57,7 +57,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -64,7 +64,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -53,7 +53,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -118,7 +118,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -87,7 +87,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -923,7 +923,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -56,7 +56,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -175,7 +175,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -67,7 +67,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -495,7 +495,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -60,7 +60,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -292,7 +292,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -71,7 +71,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -763,7 +763,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -86,7 +86,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -846,7 +846,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -88,7 +88,7 @@ $(function() {
|
|||
<tr class="even"><td class="entry"><a class="el" href="classCRL_1_1Environment.html#a06c179d70d3065f0bfe398a02e4c6359">setPad</a>(const char *value)</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classCRL_1_1Environment.html#ae96c850eadc89d1705b9aa0256f434ea">setPOWER</a>(const char *value)</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classCRL_1_1Environment.html#ad14d519b0a4c964d7a786739499571dd">setSCALE_X</a>(long value)</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classCRL_1_1Environment.html#a315f5a14de9dc354cf81728adb29a8c6">setWORKING_LIBRARY</a>(const char *value)</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classCRL_1_1Environment.html#a315f5a14de9dc354cf81728adb29a8c6">setWORKING_LIBRARY</a>(const char *value)</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classCRL_1_1Environment.html#a4ea88dd9784318190a3705345c47904a">validate</a>() const</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classCRL_1_1Environment.html#acf7b9322c6c78b30b946f776b7c4dc08">~Environment</a>()</td><td class="entry"><a class="el" href="classCRL_1_1Environment.html">CRL::Environment</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
|
@ -96,7 +96,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1053,9 +1053,6 @@ Public Member Functions</h2></td></tr>
|
|||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void CRL::Environment::setWORKING_LIBRARY </td>
|
||||
|
@ -1065,16 +1062,9 @@ Public Member Functions</h2></td></tr>
|
|||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Sets the directory in which create cells will be saved. </p>
|
||||
|
||||
<p class="reference">References <a class="el" href="classCRL_1_1SearchPath.html#a6cd1524e1048f246682cd5ef40145d67">CRL::SearchPath::replace()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7c3bff1fa3f9a080461950db36df4416"></a>
|
||||
|
@ -1146,7 +1136,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -54,7 +54,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -127,7 +127,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -68,7 +68,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -451,7 +451,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -70,7 +70,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -682,7 +682,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -64,7 +64,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -63,11 +63,11 @@ Classes</h2></td></tr>
|
|||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a7081332b63c642917b4ca15f665662f4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#a7081332b63c642917b4ca15f665662f4">reset</a> ()</td></tr>
|
||||
<tr class="separator:a7081332b63c642917b4ca15f665662f4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af358bdb1e940f08137f887f70eb641e3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#af358bdb1e940f08137f887f70eb641e3">append</a> (const std::string &path, const std::string &name="")</td></tr>
|
||||
<tr class="memitem:af358bdb1e940f08137f887f70eb641e3"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#af358bdb1e940f08137f887f70eb641e3">append</a> (const std::string &path, const std::string &name="")</td></tr>
|
||||
<tr class="separator:af358bdb1e940f08137f887f70eb641e3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af39d78a63d880e90ae6f947abf1fe322"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#af39d78a63d880e90ae6f947abf1fe322">prepend</a> (const std::string &path, const std::string &name="")</td></tr>
|
||||
<tr class="memitem:af39d78a63d880e90ae6f947abf1fe322"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#af39d78a63d880e90ae6f947abf1fe322">prepend</a> (const std::string &path, const std::string &name="")</td></tr>
|
||||
<tr class="separator:af39d78a63d880e90ae6f947abf1fe322"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6cd1524e1048f246682cd5ef40145d67"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#a6cd1524e1048f246682cd5ef40145d67">replace</a> (const std::string &path, const std::string &, size_t index)</td></tr>
|
||||
<tr class="memitem:a6cd1524e1048f246682cd5ef40145d67"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#a6cd1524e1048f246682cd5ef40145d67">replace</a> (const std::string &path, const std::string &, size_t index)</td></tr>
|
||||
<tr class="separator:a6cd1524e1048f246682cd5ef40145d67"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af8e579af7e78dddb7a014d4bbbf9a36f"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRL_1_1SearchPath.html#af8e579af7e78dddb7a014d4bbbf9a36f">locate</a> (const std::string &file, std::ios::openmode mode=std::ios::in, int first=0, int last=64)</td></tr>
|
||||
<tr class="separator:af8e579af7e78dddb7a014d4bbbf9a36f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
|
@ -249,8 +249,6 @@ Static Public Member Functions</h2></td></tr>
|
|||
</div><div class="memdoc">
|
||||
<p>Replace the search path element at index <code>index</code>. </p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="classCRL_1_1Environment.html#a315f5a14de9dc354cf81728adb29a8c6">CRL::Environment::setWORKING_LIBRARY()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af8e579af7e78dddb7a014d4bbbf9a36f"></a>
|
||||
|
@ -454,7 +452,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -56,7 +56,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -190,7 +190,7 @@ Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -64,7 +64,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -198,7 +198,7 @@ Static Public Member Functions</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -73,7 +73,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1254,21 +1254,21 @@
|
|||
<arglist>()</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>void</type>
|
||||
<type>size_t</type>
|
||||
<name>append</name>
|
||||
<anchorfile>classCRL_1_1SearchPath.html</anchorfile>
|
||||
<anchor>af358bdb1e940f08137f887f70eb641e3</anchor>
|
||||
<arglist>(const std::string &path, const std::string &name="")</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>void</type>
|
||||
<type>size_t</type>
|
||||
<name>prepend</name>
|
||||
<anchorfile>classCRL_1_1SearchPath.html</anchorfile>
|
||||
<anchor>af39d78a63d880e90ae6f947abf1fe322</anchor>
|
||||
<arglist>(const std::string &path, const std::string &name="")</arglist>
|
||||
</member>
|
||||
<member kind="function">
|
||||
<type>void</type>
|
||||
<type>size_t</type>
|
||||
<name>replace</name>
|
||||
<anchorfile>classCRL_1_1SearchPath.html</anchorfile>
|
||||
<anchor>a6cd1524e1048f246682cd5ef40145d67</anchor>
|
||||
|
|
|
@ -53,7 +53,7 @@ Directories</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -49,7 +49,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -49,7 +49,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -61,7 +61,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -72,7 +72,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -54,7 +54,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -48,7 +48,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -68,7 +68,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -62,7 +62,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -57,7 +57,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -55,7 +55,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -91,7 +91,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -54,7 +54,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -588,7 +588,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -258,7 +258,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -54,7 +54,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -100,7 +100,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -63,7 +63,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -51,7 +51,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -48,7 +48,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -57,7 +57,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -57,7 +57,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -154,7 +154,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -51,7 +51,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -64,7 +64,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -45,7 +45,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -149,7 +149,7 @@ Typedefs</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -149,7 +149,7 @@ Enumerations</h2></td></tr>
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -85,7 +85,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -52,7 +52,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -67,7 +67,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -52,7 +52,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -51,7 +51,7 @@ $(function() {
|
|||
<hr>
|
||||
<table class="footer1">
|
||||
<tr>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Sun May 26 2019</small></td>
|
||||
<td class="LFooter"><small>Generated by doxygen 1.8.14 on Mon Oct 28 2019</small></td>
|
||||
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -371,13 +371,9 @@ Sets the name of the auxiliary file in library directories holding the meta-\/in
|
|||
\index{C\+R\+L\+::\+Environment@{C\+R\+L\+::\+Environment}!set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+RY@{set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+RY}}
|
||||
\index{set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+RY@{set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+RY}!C\+R\+L\+::\+Environment@{C\+R\+L\+::\+Environment}}
|
||||
\subsubsection{\texorpdfstring{set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+R\+Y()}{setWORKING\_LIBRARY()}}
|
||||
{\footnotesize\ttfamily void C\+R\+L\+::\+Environment\+::set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+RY (\begin{DoxyParamCaption}\item[{const char $\ast$}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
||||
{\footnotesize\ttfamily void C\+R\+L\+::\+Environment\+::set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+RY (\begin{DoxyParamCaption}\item[{const char $\ast$}]{value }\end{DoxyParamCaption})}
|
||||
|
||||
Sets the directory in which create cells will be saved.
|
||||
|
||||
References C\+R\+L\+::\+Search\+Path\+::replace().
|
||||
|
||||
\mbox{\Hypertarget{classCRL_1_1Environment_a7c3bff1fa3f9a080461950db36df4416}\label{classCRL_1_1Environment_a7c3bff1fa3f9a080461950db36df4416}}
|
||||
Sets the directory in which create cells will be saved. \mbox{\Hypertarget{classCRL_1_1Environment_a7c3bff1fa3f9a080461950db36df4416}\label{classCRL_1_1Environment_a7c3bff1fa3f9a080461950db36df4416}}
|
||||
\index{C\+R\+L\+::\+Environment@{C\+R\+L\+::\+Environment}!add\+S\+Y\+S\+T\+E\+M\+\_\+\+L\+I\+B\+R\+A\+RY@{add\+S\+Y\+S\+T\+E\+M\+\_\+\+L\+I\+B\+R\+A\+RY}}
|
||||
\index{add\+S\+Y\+S\+T\+E\+M\+\_\+\+L\+I\+B\+R\+A\+RY@{add\+S\+Y\+S\+T\+E\+M\+\_\+\+L\+I\+B\+R\+A\+RY}!C\+R\+L\+::\+Environment@{C\+R\+L\+::\+Environment}}
|
||||
\subsubsection{\texorpdfstring{add\+S\+Y\+S\+T\+E\+M\+\_\+\+L\+I\+B\+R\+A\+R\+Y()}{addSYSTEM\_LIBRARY()}}
|
||||
|
|
|
@ -15,11 +15,11 @@ class \mbox{\hyperlink{classCRL_1_1SearchPath_1_1Element}{Element}}
|
|||
\item
|
||||
void \mbox{\hyperlink{classCRL_1_1SearchPath_a7081332b63c642917b4ca15f665662f4}{reset}} ()
|
||||
\item
|
||||
void \mbox{\hyperlink{classCRL_1_1SearchPath_af358bdb1e940f08137f887f70eb641e3}{append}} (const std\+::string \&path, const std\+::string \&name=\char`\"{}\char`\"{})
|
||||
size\+\_\+t \mbox{\hyperlink{classCRL_1_1SearchPath_af358bdb1e940f08137f887f70eb641e3}{append}} (const std\+::string \&path, const std\+::string \&name=\char`\"{}\char`\"{})
|
||||
\item
|
||||
void \mbox{\hyperlink{classCRL_1_1SearchPath_af39d78a63d880e90ae6f947abf1fe322}{prepend}} (const std\+::string \&path, const std\+::string \&name=\char`\"{}\char`\"{})
|
||||
size\+\_\+t \mbox{\hyperlink{classCRL_1_1SearchPath_af39d78a63d880e90ae6f947abf1fe322}{prepend}} (const std\+::string \&path, const std\+::string \&name=\char`\"{}\char`\"{})
|
||||
\item
|
||||
void \mbox{\hyperlink{classCRL_1_1SearchPath_a6cd1524e1048f246682cd5ef40145d67}{replace}} (const std\+::string \&path, const std\+::string \&, size\+\_\+t index)
|
||||
size\+\_\+t \mbox{\hyperlink{classCRL_1_1SearchPath_a6cd1524e1048f246682cd5ef40145d67}{replace}} (const std\+::string \&path, const std\+::string \&, size\+\_\+t index)
|
||||
\item
|
||||
size\+\_\+t \mbox{\hyperlink{classCRL_1_1SearchPath_af8e579af7e78dddb7a014d4bbbf9a36f}{locate}} (const std\+::string \&file, std\+::ios\+::openmode mode=std\+::ios\+::in, int first=0, int last=64)
|
||||
\item
|
||||
|
@ -89,11 +89,7 @@ Prepend a search path. The {\ttfamily name} gives the library name. \mbox{\Hyper
|
|||
\subsubsection{\texorpdfstring{replace()}{replace()}}
|
||||
{\footnotesize\ttfamily void C\+R\+L\+::\+Search\+Path\+::replace (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{path, }\item[{const std\+::string \&}]{name, }\item[{size\+\_\+t}]{index }\end{DoxyParamCaption})}
|
||||
|
||||
Replace the search path element at index {\ttfamily index}.
|
||||
|
||||
Referenced by C\+R\+L\+::\+Environment\+::set\+W\+O\+R\+K\+I\+N\+G\+\_\+\+L\+I\+B\+R\+A\+R\+Y().
|
||||
|
||||
\mbox{\Hypertarget{classCRL_1_1SearchPath_af8e579af7e78dddb7a014d4bbbf9a36f}\label{classCRL_1_1SearchPath_af8e579af7e78dddb7a014d4bbbf9a36f}}
|
||||
Replace the search path element at index {\ttfamily index}. \mbox{\Hypertarget{classCRL_1_1SearchPath_af8e579af7e78dddb7a014d4bbbf9a36f}\label{classCRL_1_1SearchPath_af8e579af7e78dddb7a014d4bbbf9a36f}}
|
||||
\index{C\+R\+L\+::\+Search\+Path@{C\+R\+L\+::\+Search\+Path}!locate@{locate}}
|
||||
\index{locate@{locate}!C\+R\+L\+::\+Search\+Path@{C\+R\+L\+::\+Search\+Path}}
|
||||
\subsubsection{\texorpdfstring{locate()}{locate()}}
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
\vspace*{1cm}
|
||||
{\large Generated by Doxygen 1.8.14}\\
|
||||
\vspace*{0.5cm}
|
||||
{\small Sun May 26 2019 17:26:53}\\
|
||||
{\small Mon Oct 28 2019 18:06:32}\\
|
||||
\end{center}
|
||||
\end{titlepage}
|
||||
|
||||
|
|
|
@ -4,4 +4,5 @@
|
|||
install( DIRECTORY symbolic DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY 180 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY 45 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node180 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/__init__.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from Hurricane import DataBase
|
||||
import helpers.io
|
||||
from helpers.io import ErrorMessage
|
||||
|
||||
|
||||
def loadGdsLayers ( gdsLayersTable ):
|
||||
technology = DataBase.getDB().getTechnology()
|
||||
|
||||
for entry in gdsLayersTable:
|
||||
try:
|
||||
if len(entry) != 4:
|
||||
raise ErrorMessage( 1, ['Malformed entry in <gdsLayersTable>.'
|
||||
,'Must have exactly four fields: (symb_name,real_name,GDSII_layer,GDSII_datatype).'
|
||||
,str(entry)
|
||||
] )
|
||||
symbName, realName, gdsiiLayer,gdsiiDatatype = entry
|
||||
if not isinstance(gdsiiLayer,int):
|
||||
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
|
||||
,'GDSII layer number is not of int type (%s).' \
|
||||
% helpers.stype(gdsiiLayer)
|
||||
,str(entry)
|
||||
] )
|
||||
if not isinstance(gdsiiDatatype,int):
|
||||
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
|
||||
,'GDSII layer Datatype is not of int type (%s).' \
|
||||
% helpers.stype(gdsiiDatatype)
|
||||
,str(entry)
|
||||
] )
|
||||
|
||||
basicLayer = technology.getBasicLayer( symbName )
|
||||
if not basicLayer:
|
||||
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
|
||||
,'The real layer "%s" associated to the GDSII "%s" do not exists.' \
|
||||
% (symbName,realName)
|
||||
,str(entry)
|
||||
] )
|
||||
|
||||
basicLayer.setRealName ( realName )
|
||||
basicLayer.setGds2Layer ( gdsiiLayer )
|
||||
basicLayer.setGds2Datatype( gdsiiDatatype )
|
||||
|
||||
except Exception, e:
|
||||
helpers.io.catch( e )
|
||||
return
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/analog.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers
|
||||
|
||||
|
||||
p = Cfg.getParamString( 'analog.techno' )
|
||||
p.setString( 'Analog_technology_has_not_been_set' )
|
||||
p.flags = Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist
|
||||
|
||||
#Cfg.getParamString( 'analog.devices' ).setString( helpers.technoDir+'/devices.conf' )
|
|
@ -0,0 +1,75 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/colors.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import string
|
||||
|
||||
|
||||
stdColors = \
|
||||
{ 'Black' : '0,0,0'
|
||||
, 'Gray50' : '050,050,050'
|
||||
, 'Gray238' : '238,238,238'
|
||||
, 'White' : '255,255,255'
|
||||
, 'Seashell4' : '139,134,130'
|
||||
, 'Red' : '255,0,0' # Shade of Reds.
|
||||
, 'OrangeRed' : "255,69,0"
|
||||
, 'DarkOrange' : "255,140,0"
|
||||
, 'Orange' : "255,165,0"
|
||||
, 'Wheat' : "245,222,179"
|
||||
, 'LightPink' : '255,182,193'
|
||||
, 'Green' : '0,255,0' # Shade of Green.
|
||||
, 'LawnGreen' : '124,252,0'
|
||||
, 'Blue' : '0,0,255' # Shade of Blue.
|
||||
, 'Aqua' : '0,255,255'
|
||||
, 'DarkTurquoise' : '0,206,209'
|
||||
, 'BlueViolet' : '138,43,226'
|
||||
, 'Violet' : '238;130;238' # Shade of Violets.
|
||||
, 'Magenta' : '255,0,255'
|
||||
, 'Magenta4' : '139,0,139'
|
||||
, 'Tan' : '210,180,140' # Shade of Browns
|
||||
, 'Yellow' : '255,255,0' # Shade of Yellows.
|
||||
, 'LightYellow' : '255,255,224'
|
||||
}
|
||||
|
||||
|
||||
def toRGB ( color ):
|
||||
if not isinstance(color,str):
|
||||
raise ErrorMessage( 1, [ 'The <color> attribute of Drawing must be str, not %s.' % (helpers.stype(color))
|
||||
, str(options[attribute])] )
|
||||
|
||||
# Try a predefined color lookup.
|
||||
if stdColors.has_key(color): return stdColors[color]
|
||||
|
||||
# Try a RGB hexa: #RRGGBB.
|
||||
if color[0] == '#':
|
||||
for digit in color[1:]:
|
||||
if not digit in string.hexdigits:
|
||||
raise ErrorMessage( 1, ['Non-hexadecimal digit \'%c\' in <color> attribute of Drawing.' % digit, color] )
|
||||
if len(color) != 7:
|
||||
raise ErrorMessage( 1, ['<color> attribute of Drawing do not have exactly six digits.' % digit, color])
|
||||
return color
|
||||
|
||||
# Try a RGB tuple (R,G,B).
|
||||
rgb = color.split(',')
|
||||
if len(rgb) != 3:
|
||||
raise ErrorMessage( 1, ['<color> attribute of Drawing is neither hexa nor RGB nor predefined.', color] )
|
||||
|
||||
for component in rgb:
|
||||
for digit in component:
|
||||
if not digit in string.digits:
|
||||
raise ErrorMessage( 1, ['Bad RGB <color> component \'%s\' of Drawing, not an integer.' % component ,color] )
|
||||
value = int(component)
|
||||
if value < 0 or value > 255:
|
||||
raise ErrorMessage( 1, ['Bad RGB <color> component \'%s\' of Drawing, not between 0 and 255.' % component ,color] )
|
||||
return color
|
|
@ -0,0 +1,48 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./common/devices.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from Hurricane import DataBase
|
||||
import helpers.io
|
||||
from helpers.io import ErrorMessage
|
||||
from helpers.io import WarningMessage
|
||||
|
||||
|
||||
tech = DataBase.getDB().getTechnology()
|
||||
|
||||
|
||||
def addDevice ( **kw ):
|
||||
global tech
|
||||
|
||||
try:
|
||||
if kw.has_key('name'):
|
||||
devDesc = tech.addDeviceDescriptor( kw['name'] )
|
||||
|
||||
if kw.has_key('spice'):
|
||||
devDesc.setSpiceFilePath( kw['spice'] )
|
||||
|
||||
if kw.has_key('connectors'):
|
||||
for connector in kw['connectors']:
|
||||
devDesc.addConnector( connector )
|
||||
else:
|
||||
print WarningMessage( 'common.addDevice(): Missing connectors on device "%s".' % kw['name' ])
|
||||
|
||||
if kw.has_key('layouts'):
|
||||
for layout in kw['layouts']:
|
||||
devDesc.addLayout( layout[0], layout[1] )
|
||||
else:
|
||||
print WarningMessage( 'common.addDevice(): Missing layouts on device "%s".' % kw['name' ])
|
||||
except Exception, e:
|
||||
helpers.io.catch( e )
|
||||
return
|
|
@ -0,0 +1,463 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/display.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Viewer
|
||||
from common.colors import toRGB
|
||||
from common.patterns import toHexa
|
||||
|
||||
|
||||
def createStyles ( scale=1.0 ):
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: Alliance.Coriolis [black].
|
||||
|
||||
style = Viewer.DisplayStyle( 'Alliance.Coriolis [black]' )
|
||||
style.setDescription( 'Alliance Coriolis Look - black background' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
style.addDrawingStyle( group='Viewer', name='fallback' , color=toRGB('Gray238' ), border=1, pattern='55AA55AA55AA55AA' )
|
||||
style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('Gray50' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='foreground' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='rubber' , color=toRGB('192,0,192' ), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='phantom' , color=toRGB('Seashell4' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='boundaries' , color=toRGB('208,199,192'), border=1, pattern='0000000000000000', threshold=0 )
|
||||
style.addDrawingStyle( group='Viewer', name='marker' , color=toRGB('80,250,80' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionDraw' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionFill' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('White' ), border=1, threshold=2.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('White' ), border=2, threshold=6.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='ghost' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('White' ), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.instance' , color=toRGB('Black' ), border=1, threshold=4.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.reference' , color=toRGB('White' ), border=1, threshold=20.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='undef' , color=toRGB('Violet' ), border=0, pattern='2244118822441188' )
|
||||
style.addDrawingStyle( group='Viewer', name='mauka.container', color=toRGB('Magenta4' ), border=4, pattern='0000000000000000', goMatched=False )
|
||||
|
||||
# Group: Active Layer.
|
||||
style.addDrawingStyle( group='Active Layer', name='nWell' , color=toRGB('Tan' ), pattern='55AA55AA55AA55AA' , threshold=1.5 *scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='pWell' , color=toRGB('LightYellow'), pattern='55AA55AA55AA55AA' , threshold=1.50*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='nImplant', color=toRGB('LawnGreen' ), pattern='55AA55AA55AA55AA' , threshold=1.50*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='pImplant', color=toRGB('Yellow' ), pattern='55AA55AA55AA55AA' , threshold=1.50*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='active' , color=toRGB('White' ), pattern=toHexa('antihash1.8'), threshold=1.50*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='poly' , color=toRGB('Red' ), pattern='55AA55AA55AA55AA' , threshold=1.50*scale )
|
||||
|
||||
# Group: Routing Layer.
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal1' , color=toRGB('Blue' ), pattern=toHexa('poids2.8' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal2' , color=toRGB('Aqua' ), pattern=toHexa('light_antihash0.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal3' , color=toRGB('LightPink'), pattern=toHexa('light_antihash1.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal4' , color=toRGB('Green' ), pattern=toHexa('light_antihash2.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal5' , color=toRGB('Yellow' ), pattern='1144114411441144' , threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal6' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal7' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal8' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal9' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal10', color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.02*scale )
|
||||
|
||||
# Group: Cuts (VIA holes).
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut0', color=toRGB('0,150,150'), threshold=1.50*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut1', color=toRGB('Aqua' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut2', color=toRGB('LightPink'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut3', color=toRGB('Green' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut4', color=toRGB('Yellow' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut5', color=toRGB('Violet' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut6', color=toRGB('Violet' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut7', color=toRGB('Violet' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut8', color=toRGB('Violet' ), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut9', color=toRGB('Violet' ), threshold=0.80*scale )
|
||||
|
||||
# Group: MIM6.
|
||||
style.addDrawingStyle( group='MIM6', name='metbot_r', color=toRGB('Aqua' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='MIM6', name='cut6' , color=toRGB('LightPink'), pattern=toHexa('light_antihash1.8'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='MIM6', name='metal7' , color=toRGB('Green' ), pattern=toHexa('light_antihash2.8'), threshold=0.80*scale )
|
||||
|
||||
# Group: Blockages.
|
||||
style.addDrawingStyle( group='Blockages', name='blockage1' , color=toRGB('Blue' ), pattern='006070381c0e0703' , threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage2' , color=toRGB('Aqua' ), pattern='8103060c183060c0' , threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage3' , color=toRGB('LightPink'), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage4' , color=toRGB('Green' ), pattern=toHexa('light_antihash2.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage5' , color=toRGB('Yellow' ), pattern='1144114411441144' , threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage6' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage7' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage8' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage9' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage10', color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
|
||||
# Group: Knik & Kite.
|
||||
style.addDrawingStyle( group='Knik & Kite', name='SPL1' , color=toRGB('Red' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='AutoLayer' , color=toRGB('Magenta' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalh' , color=toRGB('128,255,200'), pattern=toHexa('light_antihash0.8'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalv' , color=toRGB('200,200,255'), pattern=toHexa('light_antihash1.8'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gcut' , color=toRGB('255,255,190'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::Edge' , color=toRGB('255,255,190'), pattern='0000000000000000', threshold=0.02*scale, border=4 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::GCell', color=toRGB('255,0,0' ), pattern='0000000000000000', threshold=0.02*scale, border=4 )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: Alliance.Coriolis [white].
|
||||
|
||||
style = Viewer.DisplayStyle( 'Alliance.Coriolis [white]' )
|
||||
style.inheritFrom( 'Alliance.Coriolis [black]' )
|
||||
style.setDescription( 'Alliance Coriolis Look - white background' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
style.addDrawingStyle( group='Viewer', name='fallback' , color=toRGB('Gray238' ), border=1, pattern='55AA55AA55AA55AA' )
|
||||
style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('Gray50' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='foreground' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='rubber' , color=toRGB('192,0,192' ), border=4, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='phantom' , color=toRGB('Seashell4' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='boundaries' , color=toRGB('208,199,192'), border=1, pattern='0000000000000000', threshold=0 )
|
||||
style.addDrawingStyle( group='Viewer', name='marker' , color=toRGB('80,250,80' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionDraw' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionFill' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('White' ), border=1, threshold=2.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('White' ), border=2, threshold=6.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='ghost' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('White' ), border=1, threshold=0.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.instance' , color=toRGB('White' ), border=1, threshold=400.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.reference', color=toRGB('White' ), border=1, threshold=200.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='undef' , color=toRGB('Violet' ), border=0, pattern='2244118822441188' )
|
||||
|
||||
# Active Layers.
|
||||
style.addDrawingStyle( group='Active Layer', name='nWell' , color=toRGB('Tan' ), pattern=toHexa('urgo.8' ), border=1, threshold=0*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='pWell' , color=toRGB('LightYellow'), pattern=toHexa('urgo.8' ), border=1, threshold=0*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='nImplant', color=toRGB('LawnGreen' ), pattern=toHexa('antihash0.8'), border=1, threshold=0*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='pImplant', color=toRGB('Yellow' ), pattern=toHexa('antihash0.8'), border=1, threshold=0*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='active' , color=toRGB('White' ), pattern=toHexa('antihash1.8'), border=1, threshold=0*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='poly' , color=toRGB('Red' ), pattern=toHexa('poids2.8' ), border=1, threshold=0*scale )
|
||||
style.addDrawingStyle( group='Active Layer', name='poly2' , color=toRGB('Orange' ), pattern=toHexa('poids2.8' ), border=1, threshold=0*scale )
|
||||
|
||||
# Routing Layers.
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal1' , color=toRGB('Blue' ), pattern=toHexa('slash.8' ), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal2' , color=toRGB('Aqua' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metcap' , color=toRGB('DarkTurquoise'), pattern=toHexa('poids2.8'), border=2, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal3' , color=toRGB('LightPink' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal4' , color=toRGB('Green' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal5' , color=toRGB('Yellow' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal6' , color=toRGB('Violet' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal7' , color=toRGB('Red' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal8' , color=toRGB('Blue' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal9' , color=toRGB('Blue' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Routing Layer', name='metal10', color=toRGB('Blue' ), pattern=toHexa('poids4.8'), border=1, threshold=0.0*scale )
|
||||
|
||||
|
||||
# Cuts (VIA holes).
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut0', color=toRGB('0,150,150'), threshold=0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut1', color=toRGB('Aqua' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut2', color=toRGB('LightPink'), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut3', color=toRGB('Green' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut4', color=toRGB('Yellow' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut5', color=toRGB('Violet' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut6', color=toRGB('Red' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut7', color=toRGB('Blue' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut8', color=toRGB('Blue' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut9', color=toRGB('Blue' ), threshold=0.0*scale )
|
||||
|
||||
# MIM6.
|
||||
style.addDrawingStyle( group='MIM6', name='metbot_r', color=toRGB('Aqua' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='MIM6', name='metal7' , color=toRGB('Green'), pattern=toHexa('light_antihash2.8'), threshold=0.80*scale )
|
||||
|
||||
# Blockages.
|
||||
style.addDrawingStyle( group='Blockages', name='blockage1' , color=toRGB('Blue' ), pattern=toHexa('light_antislash0.8'), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage2' , color=toRGB('Aqua' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage3' , color=toRGB('LightPink'), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage4' , color=toRGB('Green' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage5' , color=toRGB('Yellow' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage6' , color=toRGB('Violet' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage7' , color=toRGB('Red' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage8' , color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage9' , color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage10', color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
|
||||
# Knick & Kite.
|
||||
style.addDrawingStyle( group='Knik & Kite', name='SPL1' , color=toRGB('Red' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='AutoLayer' , color=toRGB('Magenta' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalh' , color=toRGB('128,255,200'), pattern=toHexa('antislash2.32' ), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalv' , color=toRGB('200,200,255'), pattern=toHexa('light_antihash1.8'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gcut' , color=toRGB('255,255,190'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::Edge' , color=toRGB('255,255,190'), pattern='0000000000000000', border=4, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::GCell', color=toRGB('255,255,190'), pattern='0000000000000000', border=2, threshold=0.10*scale )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: Alliance.Classic [black]
|
||||
|
||||
style = Viewer.DisplayStyle( 'Alliance.Classic [black]' )
|
||||
style.setDescription( 'Alliance Classic Look - black background' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
# Viewer.
|
||||
style.addDrawingStyle( group='Viewer', name='fallback' , color=toRGB('Gray238' ), border=1, pattern='55AA55AA55AA55AA' )
|
||||
style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('Gray50' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='foreground' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='rubber' , color=toRGB('192,0,192' ), border=4, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='phantom' , color=toRGB('Seashell4' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='boundaries' , color=toRGB('208,199,192'), border=1, pattern='0000000000000000', threshold=0 )
|
||||
style.addDrawingStyle( group='Viewer', name='marker' , color=toRGB('80,250,80' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionDraw' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionFill' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('White' ), border=1, threshold=2.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('White' ), border=2, threshold=6.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='ghost' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('White' ), border=1, threshold= 0.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.instance' , color=toRGB('White' ), border=1, threshold=400.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.reference', color=toRGB('White' ), border=1, threshold=200.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='undef' , color=toRGB('Violet' ), border=0, pattern='2244118822441188' )
|
||||
|
||||
# Active Layers.
|
||||
style.addDrawingStyle( group='Active Layers', name='nWell' , color=toRGB('Tan' ), pattern=toHexa('urgo.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='pWell' , color=toRGB('LightYellow'), pattern=toHexa('urgo.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='nImplant', color=toRGB('LawnGreen' ), pattern=toHexa('antihash0.8'), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='pImplant', color=toRGB('Yellow' ), pattern=toHexa('antihash0.8'), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='active' , color=toRGB('White' ), pattern=toHexa('antihash1.8'), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='poly' , color=toRGB('Red' ), pattern=toHexa('poids2.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='poly2' , color=toRGB('Orange' ), pattern=toHexa('poids2.8' ), border=1, threshold=0.00*scale )
|
||||
|
||||
# Routing Layers.
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal1' , color=toRGB('Blue' ), pattern=toHexa('slash.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal2' , color=toRGB('Aqua' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metcap' , color=toRGB('DarkTurquoise'), pattern=toHexa('poids2.8' ), border=2, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal3' , color=toRGB('LightPink' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal4' , color=toRGB('Green' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal5' , color=toRGB('Yellow' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal6' , color=toRGB('Violet' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal7' , color=toRGB('Red' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal8' , color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal9' , color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal10', color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), border=1, threshold=0.00*scale )
|
||||
|
||||
# Cuts (VIA holes).
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut0', color=toRGB('0,150,150'), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut1', color=toRGB('Aqua' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut2', color=toRGB('LightPink'), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut3', color=toRGB('Green' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut4', color=toRGB('Yellow' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut5', color=toRGB('Violet' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut6', color=toRGB('Red' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut7', color=toRGB('Blue' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut8', color=toRGB('Blue' ), threshold=0.0*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut9', color=toRGB('Blue' ), threshold=0.0*scale )
|
||||
|
||||
# MIM6.
|
||||
style.addDrawingStyle( group='MIMI6', name='metbot_r', color=toRGB('Aqua' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='MIMI6', name='metal7' , color=toRGB('Green'), pattern=toHexa('light_antihash2.8'), threshold=0.80*scale )
|
||||
|
||||
# Blockages.
|
||||
style.addDrawingStyle( group='Blockages', name='blockage1' , color=toRGB('Blue' ), pattern=toHexa('light_antislash0.8'), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage2' , color=toRGB('Aqua' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage3' , color=toRGB('LightPink'), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage4' , color=toRGB('Green' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage5' , color=toRGB('Yellow' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage6' , color=toRGB('Violet' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage7' , color=toRGB('Red' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage8' , color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage9' , color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage10', color=toRGB('Blue' ), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=4 )
|
||||
|
||||
# Knick & Kite.
|
||||
style.addDrawingStyle( group='Knik & Kite', name='SPL1' , color=toRGB('Red' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='AutoLayer' , color=toRGB('Magenta' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalh' , color=toRGB('128,255,200'), pattern=toHexa('antislash2.32' ), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalv' , color=toRGB('200,200,255'), pattern=toHexa('light_antihash1.8'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gcut' , color=toRGB('255,255,190'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::Edge' , color=toRGB('255,255,190'), pattern='0000000000000000' , border=4, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::GCell', color=toRGB('255,255,190'), pattern='0000000000000000' , border=2, threshold=0.10*scale )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: Alliance.Classic [white].
|
||||
|
||||
style = Viewer.DisplayStyle( 'Alliance.Classic [white]' )
|
||||
style.inheritFrom( 'Alliance.Classic [black]' )
|
||||
style.setDescription( 'Alliance Classic Look - white background' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
# Group: Viewer.
|
||||
style.addDrawingStyle( group='Viewer', name='fallback' , color=toRGB('Black'), border=1, pattern='55AA55AA55AA55AA' )
|
||||
style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('White'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='foreground' , color=toRGB('Black'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionDraw' , color=toRGB('Black'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionFill' , color=toRGB('Black'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('Black'), border=1, threshold=6.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('Black'), border=1, threshold=6.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='ghost' , color=toRGB('Black'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('Black'), border=1, threshold=0.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.instance' , color=toRGB('Black'), border=1, threshold=4.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.reference', color=toRGB('Black'), border=1, threshold=20.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='undef' , color=toRGB('Black'), border=0, pattern='2244118822441188' )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: Layout Design [black]
|
||||
|
||||
style = Viewer.DisplayStyle( 'Layout Design [black]' )
|
||||
style.inheritFrom( 'Alliance.Classic [black]' )
|
||||
style.setDescription( 'Alliance Classic Look - white background' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
# Active Layers.
|
||||
style.addDrawingStyle( group='Active Layers', name='nWell' , color=toRGB('Tan' ), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
style.addDrawingStyle( group='Active Layers', name='pWell' , color=toRGB('LightYellow'), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
style.addDrawingStyle( group='Active Layers', name='nImplant', color=toRGB('LawnGreen' ), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
style.addDrawingStyle( group='Active Layers', name='pImplant', color=toRGB('Yellow' ), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
style.addDrawingStyle( group='Active Layers', name='active' , color=toRGB('White' ), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
style.addDrawingStyle( group='Active Layers', name='poly' , color=toRGB('Red' ), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
|
||||
# Routing Layers.
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal1' , color=toRGB('Blue' ), pattern='0000000000000000', threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal2' , color=toRGB('Aqua' ), pattern='0000000000000000', threshold=0.40*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal3' , color=toRGB('LightPink'), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal4' , color=toRGB('Green' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal5' , color=toRGB('Yellow' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal6' , color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal7' , color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal8' , color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal9' , color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal10', color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.02*scale, border=2 )
|
||||
|
||||
# Cuts (VIA holes).
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut0', color=toRGB('0,150,150'), pattern=toHexa('poids4.8'), threshold=1.50*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut1', color=toRGB('Aqua' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut2', color=toRGB('LightPink'), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut3', color=toRGB('Green' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut4', color=toRGB('Yellow' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut5', color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut6', color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut7', color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut8', color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut9', color=toRGB('Violet' ), pattern='0000000000000000', threshold=0.80*scale, border=1 )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: Layout Design [white]
|
||||
|
||||
style = Viewer.DisplayStyle( 'Layout Design [white]' )
|
||||
style.inheritFrom( 'Layout Design [black]' )
|
||||
style.setDescription( 'Layout Design Look - white background' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
|
||||
# Group: Viewer.
|
||||
style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('White'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('Black'), border=1, threshold=2.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('Black'), border=1, threshold=2.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('Black'), border=1, threshold=0.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.reference', color=toRGB('Black'), border=1, threshold=20.0*scale )
|
||||
|
||||
# Group: Active Layers.
|
||||
style.addDrawingStyle( group='Active Layers', name='active', color=toRGB('175,175,175'), pattern='0000000000000000', threshold=1.50*scale, border=2 )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Style: For Printers [white]
|
||||
|
||||
style = Viewer.DisplayStyle( 'For Printers' )
|
||||
style.setDescription( 'For Printers' )
|
||||
style.setDarkening ( Viewer.DisplayStyle.HSVr(1.0, 3.0, 2.5) )
|
||||
|
||||
# Group: Viewer.
|
||||
style.addDrawingStyle( group='Viewer', name='fallback' , color=toRGB('Gray238' ), border=1, pattern='55AA55AA55AA55AA' )
|
||||
style.addDrawingStyle( group='Viewer', name='background' , color=toRGB('White' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='foreground' , color=toRGB('Black' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='rubber' , color=toRGB('192,0,192'), border=4, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='phantom' , color=toRGB('Seashell4'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='boundaries' , color=toRGB('Black' ), border=1, pattern='0000000000000000', threshold=0 )
|
||||
style.addDrawingStyle( group='Viewer', name='marker' , color=toRGB('80,250,80'), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionDraw' , color=toRGB('Black' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='selectionFill' , color=toRGB('Black' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='grid' , color=toRGB('Black' ), border=1, threshold=2.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='spot' , color=toRGB('Black' ), border=2, threshold=6.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='ghost' , color=toRGB('Black' ), border=1 )
|
||||
style.addDrawingStyle( group='Viewer', name='text.ruler' , color=toRGB('Black' ), border=1, threshold=0.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.instance' , color=toRGB('Black' ), border=1, threshold=4.0 *scale )
|
||||
style.addDrawingStyle( group='Viewer', name='text.reference' , color=toRGB('Black' ), border=1, threshold=20.0*scale )
|
||||
style.addDrawingStyle( group='Viewer', name='undef' , color=toRGB('Violet' ), border=0, pattern='2244118822441188' )
|
||||
style.addDrawingStyle( group='Viewer', name='mauka.container', color=toRGB('Magenta4' ), border=4, pattern='0000000000000000', goMatched=False )
|
||||
|
||||
# Group: Active Layers.
|
||||
style.addDrawingStyle( group='Active Layers', name='nWell' , color=toRGB('Tan' ), pattern=toHexa('antipoids2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='pWell' , color=toRGB('LightYellow'), pattern=toHexa('antipoids2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='nImplant', color=toRGB('LawnGreen' ), pattern=toHexa('diffusion.32' ), border=0, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='pImplant', color=toRGB('Yellow' ), pattern=toHexa('diffusion.32' ), border=0, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='active' , color=toRGB('White' ), pattern=toHexa('active.32' ), border=0, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='poly' , color=toRGB('Red' ), pattern=toHexa('antipoids2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Active Layers', name='poly2' , color=toRGB('Orange' ), pattern=toHexa('antipoids2.32'), border=1, threshold=0.02*scale )
|
||||
|
||||
# Group: Routing Layers.
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal1' , color=toRGB('Blue' ), pattern=toHexa('slash.32' ), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal2' , color=toRGB('Aqua' ), pattern=toHexa('antislash2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metcap' , color=toRGB('DarkTurquoise'), pattern=toHexa('poids2.32' ), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal3' , color=toRGB('LightPink' ), pattern=toHexa('antislash3.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal4' , color=toRGB('Green' ), pattern=toHexa('antislash4.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal5' , color=toRGB('Yellow' ), pattern=toHexa('antislash5.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal6' , color=toRGB('Violet' ), pattern=toHexa('antislash2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal7' , color=toRGB('Violet' ), pattern=toHexa('antislash2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal8' , color=toRGB('Violet' ), pattern=toHexa('antislash2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal9' , color=toRGB('Violet' ), pattern=toHexa('antislash2.32'), border=1, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Routing Layers', name='metal10', color=toRGB('Violet' ), pattern=toHexa('antislash2.32'), border=1, threshold=0.02*scale )
|
||||
|
||||
# Group: Cuts (VIA holes)
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut0', color=toRGB('Blue' ), pattern=toHexa('poids2.8' ), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut1', color=toRGB('Aqua' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut2', color=toRGB('LightPink'), pattern=toHexa('poids2.8' ), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut3', color=toRGB('Green' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut4', color=toRGB('Yellow' ), pattern=toHexa('poids2.8' ), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut5', color=toRGB('Violet' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut6', color=toRGB('Violet' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut7', color=toRGB('Violet' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut8', color=toRGB('Violet' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
style.addDrawingStyle( group='Cuts (VIA holes)', name='cut9', color=toRGB('Violet' ), pattern=toHexa('antipoids2.8'), border=2, threshold=0.02*scale )
|
||||
|
||||
# Group: MIM6.
|
||||
style.addDrawingStyle( group='MIM6', name='metbot_r', color=toRGB('Aqua' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='MIM6', name='cut6' , color=toRGB('LightPink'), pattern=toHexa('light_antihash1.8'), threshold=0.80*scale )
|
||||
style.addDrawingStyle( group='MIM6', name='metal7' , color=toRGB('Green' ), pattern=toHexa('light_antihash2.8'), threshold=0.80*scale )
|
||||
|
||||
# Group: Blockages.
|
||||
style.addDrawingStyle( group='Blockages', name='blockage1' , color=toRGB('Blue' ), pattern='006070381c0e0703' , threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage2' , color=toRGB('Aqua' ), pattern='8103060c183060c0' , threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage3' , color=toRGB('LightPink'), pattern=toHexa('poids4.8' ), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage4' , color=toRGB('Green' ), pattern=toHexa('light_antihash2.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage5' , color=toRGB('Yellow' ), pattern='1144114411441144' , threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage6' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage7' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage8' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage9' , color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
style.addDrawingStyle( group='Blockages', name='blockage10', color=toRGB('Violet' ), pattern=toHexa('light_antihash0.8'), threshold=0.80*scale, border=2 )
|
||||
|
||||
# Group: Knik & Kite.
|
||||
style.addDrawingStyle( group='Knik & Kite', name='SPL1' , color=toRGB('Red' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='AutoLayer' , color=toRGB('Magenta' ) )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalh' , color=toRGB('128,255,200'), pattern=toHexa('light_antihash0.8') , border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gmetalv' , color=toRGB('200,200,255'), pattern=toHexa('light_antihash1.8') , border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='gcut' , color=toRGB('255,255,190'), border=1 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::Edge' , color=toRGB('255,255,190'), pattern='0000000000000000', border=2 )
|
||||
style.addDrawingStyle( group='Knik & Kite', name='Anabatic::GCell', color=toRGB('Black' ), pattern='0000000000000000', border=2, threshold=0.80*scale )
|
||||
|
||||
Viewer.Graphics.addStyle( style )
|
||||
|
||||
|
||||
Viewer.Graphics.setStyle( 'Alliance.Classic [black]' )
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/etesian.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
|
||||
|
||||
param = Cfg.getParamPercentage( 'etesian.aspectRatio' )
|
||||
param.setPercentage( 100 )
|
||||
param.setMin ( 10 )
|
||||
param.setMax ( 1000 )
|
||||
|
||||
Cfg.getParamPercentage( 'etesian.spaceMargin' ).setPercentage( 5 )
|
||||
Cfg.getParamBool ( 'etesian.uniformDensity' ).setBool ( False )
|
||||
Cfg.getParamBool ( 'etesian.routingDriven' ).setBool ( False )
|
||||
Cfg.getParamString ( 'etesian.feedNames' ).setString ( 'tie_x0,rowend_x0' )
|
||||
Cfg.getParamString ( 'etesian.cell.zero' ).setString ( 'zero_x0' )
|
||||
Cfg.getParamString ( 'etesian.cell.one' ).setString ( 'one_x0' )
|
||||
Cfg.getParamString ( 'etesian.bloat' ).setString ( 'disabled' )
|
||||
|
||||
param = Cfg.getParamEnumerate( 'etesian.effort' )
|
||||
param.setInt( 2 )
|
||||
param.addValue( 'Fast' , 1 )
|
||||
param.addValue( 'Standard', 2 )
|
||||
param.addValue( 'High' , 3 )
|
||||
param.addValue( 'Extreme' , 4 )
|
||||
|
||||
param = Cfg.getParamEnumerate( 'etesian.graphics' )
|
||||
param.setInt( 2 )
|
||||
param.addValue( 'Show every step' , 1 )
|
||||
param.addValue( 'Show lower bound', 2 )
|
||||
param.addValue( 'Show result only', 3 )
|
||||
|
||||
layout = Cfg.Configuration.get().getLayout()
|
||||
layout.addTab ( 'Etesian', 'etesian' )
|
||||
layout.addTitle ( 'Etesian', 'Placement area' )
|
||||
layout.addParameter( 'Etesian', 'etesian.aspectRatio' , 'Aspect Ratio, X/Y (%)', 0 )
|
||||
layout.addParameter( 'Etesian', 'etesian.spaceMargin' , 'Space Margin' , 1 )
|
||||
layout.addRule ( 'Etesian' )
|
||||
layout.addTitle ( 'Etesian', 'Etesian - Placer')
|
||||
layout.addParameter( 'Etesian', 'etesian.uniformDensity', 'Uniform density' , 0 )
|
||||
layout.addParameter( 'Etesian', 'etesian.routingDriven' , 'Routing driven' , 0 )
|
||||
layout.addParameter( 'Etesian', 'etesian.effort' , 'Placement effort' , 1 )
|
||||
layout.addParameter( 'Etesian', 'etesian.graphics' , 'Placement view' , 1 )
|
||||
layout.addRule ( 'Etesian' )
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/kite.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
|
||||
|
||||
layout = Cfg.Configuration.get().getLayout()
|
||||
|
||||
# Kite Layout.
|
||||
layout.addTab ( 'Kite', 'kite' )
|
||||
layout.addTitle ( 'Kite', 'Katabatic - Routing Database' )
|
||||
layout.addParameter( 'Kite', 'katabatic.saturateRatio' , 'Saturate Ratio (%)' , 0, 1 )
|
||||
layout.addParameter( 'Kite', 'katabatic.saturateRp' , 'Saturate RoutingPad' , 0, 1 )
|
||||
layout.addParameter( 'Kite', 'katabatic.globalLengthThreshold', 'Global Length Threshold', 0, 1 )
|
||||
layout.addParameter( 'Kite', 'katabatic.topRoutingLayer' , 'Top Routing Layer' , 0, 1 )
|
||||
layout.addParameter( 'Kite', 'anabatic.gcell.displayMode' , 'GCell Display Mode' , 1, 1 )
|
||||
layout.addRule ( 'Kite' )
|
||||
layout.addTitle ( 'Kite', 'Kite - Detailed Router' )
|
||||
layout.addParameter( 'Kite', 'kite.hTracksReservedLocal', 'Vert. Locally Reserved Tracks', 0 )
|
||||
layout.addParameter( 'Kite', 'kite.vTracksReservedLocal', 'Hor. Locally Reserved Tracks' , 0 )
|
||||
layout.addParameter( 'Kite', 'kite.eventsLimit' , 'Events Limit' , 0 )
|
||||
layout.addParameter( 'Kite', 'kite.ripupCost' , 'Ripup Cost' , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
|
||||
layout.addSection ( 'Kite', 'Ripup Limits', 1 )
|
||||
layout.addParameter( 'Kite', 'kite.strapRipupLimit' , 'Straps' , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
|
||||
layout.addParameter( 'Kite', 'kite.localRipupLimit' , 'Locals' , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
|
||||
layout.addParameter( 'Kite', 'kite.globalRipupLimit' , 'Globals' , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
|
||||
layout.addParameter( 'Kite', 'kite.longGlobalRipupLimit', 'Long Globals', 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
|
||||
layout.addRule ( 'Kite' )
|
|
@ -0,0 +1,100 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/misc.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
|
||||
|
||||
Cfg.getParamBool( 'misc.catchCore' ).setBool( False )
|
||||
Cfg.getParamBool( 'misc.info' ).setBool( False )
|
||||
Cfg.getParamBool( 'misc.bug' ).setBool( False )
|
||||
Cfg.getParamBool( 'misc.logMode' ).setBool( False )
|
||||
Cfg.getParamBool( 'misc.verboseLevel1').setBool( True )
|
||||
Cfg.getParamBool( 'misc.verboseLevel2').setBool( True )
|
||||
|
||||
param = Cfg.getParamInt( 'misc.minTraceLevel' )
|
||||
param.setInt( 100000 )
|
||||
param.setMin( 0 )
|
||||
|
||||
param = Cfg.getParamInt( 'misc.maxTraceLevel' )
|
||||
param.setInt( 0 )
|
||||
param.setMin( 0 )
|
||||
|
||||
param = Cfg.getParamInt( 'viewer.printer.DPI' )
|
||||
param.setInt( 150 )
|
||||
param.setMin( 100 )
|
||||
|
||||
param = Cfg.getParamEnumerate( 'viewer.printer.mode' )
|
||||
param.addValue( 'Cell mode' , 1 )
|
||||
param.addValue( 'Design mode', 2 )
|
||||
param.setInt ( 1 )
|
||||
|
||||
# Those enumerated values *must* match QPrinter::Orientation.
|
||||
param = Cfg.getParamEnumerate( 'viewer.printer.orientation' )
|
||||
param.addValue( 'Portrait' , 0 )
|
||||
param.addValue( 'Landscape', 1 )
|
||||
param.setInt ( 0 )
|
||||
|
||||
# Those enumerated values *must* match QPrinter::PaperSize.
|
||||
param = Cfg.getParamEnumerate( 'viewer.printer.paper' )
|
||||
param.addValue( "A4" , 0 )
|
||||
param.addValue( "B5" , 1 )
|
||||
param.addValue( "Letter" , 2 )
|
||||
param.addValue( "Legal" , 3 )
|
||||
param.addValue( "Executive", 4 )
|
||||
param.addValue( "A0" , 5 )
|
||||
param.addValue( "A1" , 6 )
|
||||
param.addValue( "A2" , 7 )
|
||||
param.addValue( "A3" , 8 )
|
||||
param.addValue( "A5" , 9 )
|
||||
param.addValue( "A6" , 10 )
|
||||
param.addValue( "A7" , 11 )
|
||||
param.addValue( "A8" , 12 )
|
||||
param.addValue( "A9" , 13 )
|
||||
param.addValue( "B0" , 14 )
|
||||
param.addValue( "B1" , 15 )
|
||||
param.addValue( "B10" , 16 )
|
||||
param.addValue( "B2" , 17 )
|
||||
param.addValue( "B3" , 18 )
|
||||
param.addValue( "B4" , 19 )
|
||||
param.addValue( "B6" , 20 )
|
||||
param.addValue( "B7" , 21 )
|
||||
param.addValue( "B8" , 22 )
|
||||
param.addValue( "B9" , 23 )
|
||||
param.addValue( "C5E" , 24 )
|
||||
param.addValue( "Comm10E" , 25 )
|
||||
param.addValue( "DLE" , 26 )
|
||||
param.addValue( "Folio" , 27 )
|
||||
param.addValue( "Ledger" , 28 )
|
||||
param.addValue( "Tabloid" , 29 )
|
||||
param.addValue( "Custom" , 30 )
|
||||
param.setInt ( 0 )
|
||||
|
||||
layout = Cfg.Configuration.get().getLayout()
|
||||
layout.addTab ( 'misc', 'Misc.' )
|
||||
layout.addTitle ( 'misc', 'Miscellaneous' )
|
||||
layout.addParameter( 'misc', 'misc.catchCore' , 'Catch Core Dumps' , 1 )
|
||||
layout.addParameter( 'misc', 'misc.verboseLevel1' , 'Verbose' , 0 )
|
||||
layout.addParameter( 'misc', 'misc.verboseLevel2' , 'Very Verbose' , 0 )
|
||||
layout.addParameter( 'misc', 'misc.info' , 'Show Info' , 0 )
|
||||
layout.addParameter( 'misc', 'misc.logMode' , 'Output is a TTY' , 0 )
|
||||
layout.addParameter( 'misc', 'misc.minTraceLevel' , 'Min. Trace Level' , 1 )
|
||||
layout.addParameter( 'misc', 'misc.maxTraceLevel' , 'Max. Trace Level' , 1 )
|
||||
layout.addTitle ( 'misc', 'Print/Snapshot Parameters' )
|
||||
layout.addParameter( 'misc', 'viewer.printer.mode' , 'Printer/Snapshot Mode', 1 )
|
||||
layout.addParameter( 'misc', 'viewer.printer.paper' , 'Paper Size' , 0 )
|
||||
layout.addParameter( 'misc', 'viewer.printer.orientation', 'Orientation' , 0 )
|
||||
layout.addParameter( 'misc', 'viewer.printer.DPI' , 'DPI' , 0 )
|
||||
|
||||
|
|
@ -0,0 +1,784 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/patterns.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import sys
|
||||
import math
|
||||
import helpers
|
||||
from helpers.io import ErrorMessage
|
||||
from helpers.io import WarningMessage
|
||||
|
||||
|
||||
class Pattern ( object ):
|
||||
|
||||
hexaToPatternLUT = { '0':' '
|
||||
, '1':' X'
|
||||
, '2':' X '
|
||||
, '3':' XX'
|
||||
, '4':' X '
|
||||
, '5':' X X'
|
||||
, '6':' XX '
|
||||
, '7':' XXX'
|
||||
, '8':'X '
|
||||
, '9':'X X'
|
||||
, 'a':'X X '
|
||||
, 'b':'X XX'
|
||||
, 'c':'XX '
|
||||
, 'd':'XX X'
|
||||
, 'e':'XXX '
|
||||
, 'f':'XXXX'}
|
||||
|
||||
def __init__ ( self, name='noname', bits=[], hexa='' ):
|
||||
self._name = name
|
||||
self._bits = []
|
||||
self._hexa = ''
|
||||
self._side = 0
|
||||
|
||||
if bits: self._setFromBits(bits)
|
||||
if hexa: self._setFromHexa(hexa)
|
||||
return
|
||||
|
||||
def empty ( self ):
|
||||
if not self._bits and not self._hexa: return True
|
||||
return False
|
||||
|
||||
def _setName ( self, name ): self._name = name
|
||||
def _getName ( self ): return self._name
|
||||
|
||||
def _toHexa ( self ):
|
||||
hexasLSB = []
|
||||
for line in self._bits:
|
||||
byte = 0
|
||||
for i in range(len(line)):
|
||||
if i != 0 and i%4 == 0:
|
||||
hexasLSB += [ hex(byte)[2:] ]
|
||||
byte = 0
|
||||
byte = byte << 1
|
||||
if line[i] != ' ': byte += 1
|
||||
hexasLSB += [ hex(byte)[2:] ]
|
||||
|
||||
# Convert in MSB mode. Invert the bytes by pairs.
|
||||
self._hexa = ''
|
||||
for i in range(len(hexasLSB)/2):
|
||||
self._hexa += hexasLSB[i*2+1] + hexasLSB[i*2]
|
||||
return self._hexa
|
||||
|
||||
def _fromHexa ( self ):
|
||||
self._bits = []
|
||||
|
||||
side = math.sqrt(4*len(self._hexa))
|
||||
if pow(side,2) != 4*len(self._hexa):
|
||||
print '[ERROR] The pattern is not square (%d self._bits).' % (4*len(self._hexa))
|
||||
return None
|
||||
|
||||
side /= 4
|
||||
|
||||
# Convert from MSB mode. Invert the bytes by pairs.
|
||||
hexasLSB = ''
|
||||
for i in range(len(self._hexa)/2):
|
||||
hexasLSB += self._hexa[i*2+1] + self._hexa[i*2]
|
||||
|
||||
line = ''
|
||||
for i in range(len(hexasLSB)):
|
||||
if i != 0 and i%side == 0:
|
||||
self._bits += [ line ]
|
||||
line = ''
|
||||
line += Pattern.hexaToPatternLUT[hexasLSB[i].lower()]
|
||||
self._bits += [ line ]
|
||||
#self._bits.reverse()
|
||||
return self._bits
|
||||
|
||||
def _setFromHexa ( self, hexa ):
|
||||
self._hexa = hexa
|
||||
self._side = math.sqrt(4*len(self._hexa))
|
||||
|
||||
if pow(self._side,2) != 4*len(self._hexa):
|
||||
raise ErrorMessage( 1, 'The pattern is not square (%d bits).'
|
||||
% (4*len(self._hexa)) )
|
||||
return
|
||||
|
||||
self._fromHexa()
|
||||
return
|
||||
|
||||
def _setFromBits ( self, bits ):
|
||||
self._bits = bits
|
||||
self._side = len(bits)
|
||||
|
||||
for line in bits:
|
||||
if self._side != len(line):
|
||||
raise ErrorMessage( 1, 'The pattern is not square (%dx%d bits).'
|
||||
% (len(line),len(self._bits)) )
|
||||
|
||||
self._toHexa()
|
||||
return
|
||||
|
||||
def _getHexa ( self ): return self._hexa
|
||||
def _getBits ( self ): return self._bits
|
||||
|
||||
def printBits ( self ):
|
||||
s = ''
|
||||
side = len(self._bits[0])
|
||||
|
||||
s += '+%s+\n' % ('-'*side)
|
||||
for line in self._bits:
|
||||
s += '|%s|\n' % line
|
||||
s += '+%s+' % ('-'*side)
|
||||
return s
|
||||
|
||||
def printHexa ( self ):
|
||||
return self._hexa
|
||||
|
||||
def __str__ ( self ):
|
||||
return self._hexa
|
||||
|
||||
hexa = property(_getName,_setName)
|
||||
hexa = property(_getHexa,_setFromHexa)
|
||||
bits = property(_getBits,_setFromBits)
|
||||
|
||||
|
||||
LUT = {}
|
||||
|
||||
|
||||
def add ( **keywords ):
|
||||
global LUT
|
||||
|
||||
try:
|
||||
if not keywords.has_key('name'):
|
||||
raise ErrorMessage(1,['patterns.add(): Malformed pattern, missing "name" argument.', str(keywords) ])
|
||||
|
||||
if keywords.has_key('bits') and keywords.has_key('hexa'):
|
||||
w = WarningMessage( 'patterns.add(): Pattern "%s" has both bits & hexa, ignoring hexa.' % keywords['name'] )
|
||||
print w
|
||||
del keywords['hexa']
|
||||
|
||||
LUT[ keywords['name'] ] = Pattern( **keywords )
|
||||
|
||||
except Exception, e:
|
||||
helpers.io.catch( e )
|
||||
|
||||
return
|
||||
|
||||
|
||||
def toHexa ( key ):
|
||||
global LUT
|
||||
|
||||
if isinstance(key,int) or isinstance(key,long) or not LUT.has_key(key): return key
|
||||
return LUT[key].hexa
|
||||
|
||||
|
||||
add( name='crux.8'
|
||||
, bits=[ ' '
|
||||
, ' X '
|
||||
, ' X '
|
||||
, ' XXXXX '
|
||||
, ' X '
|
||||
, ' X '
|
||||
, ' '
|
||||
, ' ' ] )
|
||||
|
||||
add( name='slash.8'
|
||||
, bits=[ ' X X'
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X'
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X ' ] )
|
||||
|
||||
add( name='hash.8'
|
||||
, bits=[ 'XXX XXX '
|
||||
, 'XX XXX X'
|
||||
, 'X XXX XX'
|
||||
, ' XXX XXX'
|
||||
, 'XXX XXX '
|
||||
, 'XX XXX X'
|
||||
, 'X XXX XX'
|
||||
, ' XXX XXX' ] )
|
||||
|
||||
add( name='urgo.8'
|
||||
, bits=[ 'XXX XXXX' # feffffffefffffff
|
||||
, 'XXXXXXXX'
|
||||
, 'XXXXXXXX'
|
||||
, 'XXXXXXXX'
|
||||
, 'XXXXXXX '
|
||||
, 'XXXXXXXX'
|
||||
, 'XXXXXXXX'
|
||||
, 'XXXXXXXX' ] )
|
||||
|
||||
add( name='antihash0.8'
|
||||
, bits=[ ' XXX XXX' # 77bbddee77bbddee
|
||||
, 'X XXX XX'
|
||||
, 'XX XXX X'
|
||||
, 'XXX XXX '
|
||||
, ' XXX XXX'
|
||||
, 'X XXX XX'
|
||||
, 'XX XXX X'
|
||||
, 'XXX XXX ' ] )
|
||||
|
||||
add( name='antihash1.8'
|
||||
, bits=[ 'X XXX XX' # bbddee77bbddee77
|
||||
, 'XX XXX X'
|
||||
, 'XXX XXX '
|
||||
, ' XXX XXX'
|
||||
, 'X XXX XX'
|
||||
, 'XX XXX X'
|
||||
, 'XXX XXX '
|
||||
, ' XXX XXX' ] )
|
||||
|
||||
add( name='poids2.8'
|
||||
, bits=[ 'X X X X ' # aa55aa55aa55aa55
|
||||
, ' X X X X'
|
||||
, 'X X X X '
|
||||
, ' X X X X'
|
||||
, 'X X X X '
|
||||
, ' X X X X'
|
||||
, 'X X X X '
|
||||
, ' X X X X' ] )
|
||||
|
||||
add( name='poids4.8'
|
||||
, bits=[ 'X X ' # 8800220088002200
|
||||
, ' '
|
||||
, ' X X '
|
||||
, ' '
|
||||
, 'X X '
|
||||
, ' '
|
||||
, ' X X '
|
||||
, ' ' ] )
|
||||
|
||||
add( name='antipoids2.8'
|
||||
, bits=[ ' # # # #' # 55aa55aa55aa55aa
|
||||
, '# # # # '
|
||||
, ' # # # #'
|
||||
, '# # # # '
|
||||
, ' # # # #'
|
||||
, '# # # # '
|
||||
, ' # # # #'
|
||||
, '# # # # ' ] )
|
||||
|
||||
add( name='light_antihash0.8'
|
||||
, bits=[ 'X X ' # 8822882288228822
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X ' ] )
|
||||
|
||||
add( name='light_antihash1.8'
|
||||
, bits=[ ' X X ' # 4411441144114411
|
||||
, ' X X'
|
||||
, ' X X '
|
||||
, ' X X'
|
||||
, ' X X '
|
||||
, ' X X'
|
||||
, ' X X '
|
||||
, ' X X' ] )
|
||||
|
||||
add( name='light_antihash2.8'
|
||||
, bits=[ ' X X ' # 2288228822882288
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, 'X X ' ] )
|
||||
|
||||
add( name='light_antislash0.8'
|
||||
, bits=[ 'X X ' # 8844221188442211
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X'
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X' ] )
|
||||
|
||||
add( name='urgo.32'
|
||||
, bits=[ 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
|
||||
, ' XXXXXXXXXXXXXXXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXXXXXXXXXXXXXXX '
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX' ] )
|
||||
|
||||
add( name='slash.32'
|
||||
, bits=[ ' X X'
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X'
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X ' ] )
|
||||
|
||||
add( name='antihash0.32'
|
||||
, bits=[ ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
|
||||
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
|
||||
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
|
||||
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX'
|
||||
, 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
|
||||
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
|
||||
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
|
||||
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
|
||||
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
|
||||
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
|
||||
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
|
||||
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
|
||||
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
|
||||
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
|
||||
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
|
||||
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX'
|
||||
, 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
|
||||
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
|
||||
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
|
||||
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
|
||||
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
|
||||
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
|
||||
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
|
||||
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
|
||||
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ' ] )
|
||||
|
||||
add( name='antihash1.32'
|
||||
, bits=[ 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
|
||||
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
|
||||
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
|
||||
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
|
||||
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
|
||||
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
|
||||
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
|
||||
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
|
||||
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
|
||||
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
|
||||
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
|
||||
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX'
|
||||
, 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
|
||||
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
|
||||
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
|
||||
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
|
||||
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
|
||||
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
|
||||
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
|
||||
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
|
||||
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
|
||||
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
|
||||
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
|
||||
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX' ] )
|
||||
|
||||
add( name='poids2.32'
|
||||
, bits=[ ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' ' ] )
|
||||
|
||||
add( name='poids4.32'
|
||||
, bits=[ ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX '
|
||||
, ' XX XX '
|
||||
, ' ' ] )
|
||||
|
||||
add( name='antipoids2.32'
|
||||
, bits=[ ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' '
|
||||
, ' '
|
||||
, ' XX XX XX XX '
|
||||
, ' XX XX XX XX '
|
||||
, ' ' ] )
|
||||
|
||||
add( name='antislash.32'
|
||||
, bits=[ 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X'
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X' ] )
|
||||
|
||||
add( name='antislash2.32'
|
||||
, bits=[ 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X ' ] )
|
||||
|
||||
add( name='antislash3.32'
|
||||
, bits=[ ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X ' ] )
|
||||
|
||||
add( name='antislash4.32'
|
||||
, bits=[ ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X ' ] )
|
||||
|
||||
add( name='antislash5.32'
|
||||
, bits=[ ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, ' X X '
|
||||
, 'X X ' ] )
|
||||
|
||||
add( name='diffusion.32'
|
||||
, bits=[ 'XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX'
|
||||
, 'X XXXXXXXXXX XXXXXXXXX'
|
||||
, 'XX XXXXXXXXXX XXXXXXXX'
|
||||
, 'XXX XXXXXXXXXX XXXXXXX'
|
||||
, 'XXXX XXXXXXXXXX XXXXXX'
|
||||
, 'XXXXX XXXXXXXXXX XXXXX'
|
||||
, 'XXXXXX XXXXXXXXXX XXXX'
|
||||
, 'XXXXXXX XXXXXXXXXX XXX'
|
||||
, 'XXXXXXXX XXXXXXXXXX XX'
|
||||
, 'XXXXXXXXX XXXXXXXXXX X'
|
||||
, 'XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX '
|
||||
, ' XXXXXXXXXX XXXXXXXXXX'
|
||||
, 'X XXXXXXXXXX XXXXXXXXX'
|
||||
, 'XX XXXXXXXXXX XXXXXXXX'
|
||||
, 'XXX XXXXXXXXXX XXXXXXX'
|
||||
, 'XXXX XXXXXXXXXX XXXXXX'
|
||||
, 'XXXXX XXXXXXXXXX XXXXX'
|
||||
, 'XXXXXX XXXXXXXXXX XXXX'
|
||||
, 'XXXXXXX XXXXXXXXXX XXX'
|
||||
, 'XXXXXXXX XXXXXXXXXX XX'
|
||||
, 'XXXXXXXXX XXXXXXXXXX X' ] )
|
||||
|
||||
add( name='active.32'
|
||||
, bits=[ ' XXXXXXXXXXXXX XXXXXXXXXXXXX'
|
||||
, 'X XXXXXXXXXXXXX XXXXXXXXXXXX'
|
||||
, 'XX XXXXXXXXXXXXX XXXXXXXXXXX'
|
||||
, 'XXX XXXXXXXXXXXXX XXXXXXXXXX'
|
||||
, 'XXXX XXXXXXXXXXXXX XXXXXXXXX'
|
||||
, 'XXXXX XXXXXXXXXXXXX XXXXXXXX'
|
||||
, 'XXXXXX XXXXXXXXXXXXX XXXXXXX'
|
||||
, 'XXXXXXX XXXXXXXXXXXXX XXXXXX'
|
||||
, 'XXXXXXXX XXXXXXXXXXXXX XXXXX'
|
||||
, 'XXXXXXXXX XXXXXXXXXXXXX XXXX'
|
||||
, 'XXXXXXXXXX XXXXXXXXXXXXX XXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXX XX'
|
||||
, 'XXXXXXXXXXXX XXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX'
|
||||
, 'X XXXXXXXXXXXXX XXXXXXXXXXXX'
|
||||
, 'XX XXXXXXXXXXXXX XXXXXXXXXXX'
|
||||
, 'XXX XXXXXXXXXXXXX XXXXXXXXXX'
|
||||
, 'XXXX XXXXXXXXXXXXX XXXXXXXXX'
|
||||
, 'XXXXX XXXXXXXXXXXXX XXXXXXXX'
|
||||
, 'XXXXXX XXXXXXXXXXXXX XXXXXXX'
|
||||
, 'XXXXXXX XXXXXXXXXXXXX XXXXXX'
|
||||
, 'XXXXXXXX XXXXXXXXXXXXX XXXXX'
|
||||
, 'XXXXXXXXX XXXXXXXXXXXXX XXXX'
|
||||
, 'XXXXXXXXXX XXXXXXXXXXXXX XXX'
|
||||
, 'XXXXXXXXXXX XXXXXXXXXXXXX XX'
|
||||
, 'XXXXXXXXXXXX XXXXXXXXXXXXX X'
|
||||
, 'XXXXXXXXXXXXX XXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX '
|
||||
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX ' ] )
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/stratus1.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
|
||||
layout = Cfg.Configuration.get().getLayout()
|
||||
layout.addTab ( 'stratus1', 'Stratus1' )
|
||||
layout.addTitle ( 'stratus1', 'Stratus1 - Netlist & Layout Capture' )
|
||||
layout.addParameter( 'stratus1', 'stratus1.mappingName', 'Virtual Library Translation', 0, 2 )
|
||||
layout.addParameter( 'stratus1', 'stratus1.format' , 'Netlist Format (vst, vhd)' , 0, 2 )
|
||||
layout.addParameter( 'stratus1', 'stratus1.simulator' , 'Simulator' , 0, 2 )
|
|
@ -0,0 +1,357 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/technology.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from helpers import l, u, n
|
||||
from Hurricane import DataBase
|
||||
from Hurricane import Technology
|
||||
from Hurricane import Layer
|
||||
from Hurricane import BasicLayer
|
||||
from Hurricane import DiffusionLayer
|
||||
from Hurricane import TransistorLayer
|
||||
from Hurricane import RegularLayer
|
||||
from Hurricane import ContactLayer
|
||||
from Hurricane import ViaLayer
|
||||
|
||||
|
||||
tech = DataBase.getDB().getTechnology()
|
||||
|
||||
|
||||
def createBL ( layerName, material ):
|
||||
global tech
|
||||
return BasicLayer.create( tech, layerName, BasicLayer.Material(material) )
|
||||
|
||||
|
||||
nWell = createBL( 'nWell' , BasicLayer.Material.nWell ) # Non-Routing Layers.
|
||||
pWell = createBL( 'pWell' , BasicLayer.Material.pWell )
|
||||
nImplant = createBL( 'nImplant' , BasicLayer.Material.nImplant )
|
||||
pImplant = createBL( 'pImplant' , BasicLayer.Material.pImplant )
|
||||
active = createBL( 'active' , BasicLayer.Material.active )
|
||||
poly = createBL( 'poly' , BasicLayer.Material.poly )
|
||||
poly2 = createBL( 'poly2' , BasicLayer.Material.poly )
|
||||
cut0 = createBL( 'cut0' , BasicLayer.Material.cut ) # Routing Layers & VIA Cuts.
|
||||
metal1 = createBL( 'metal1' , BasicLayer.Material.metal ) # WARNING: order *is* meaningful.
|
||||
cut1 = createBL( 'cut1' , BasicLayer.Material.cut )
|
||||
metal2 = createBL( 'metal2' , BasicLayer.Material.metal )
|
||||
metcap = createBL( 'metcap' , BasicLayer.Material.other )
|
||||
cut2 = createBL( 'cut2' , BasicLayer.Material.cut )
|
||||
metal3 = createBL( 'metal3' , BasicLayer.Material.metal )
|
||||
cut3 = createBL( 'cut3' , BasicLayer.Material.cut )
|
||||
metal4 = createBL( 'metal4' , BasicLayer.Material.metal )
|
||||
cut4 = createBL( 'cut4' , BasicLayer.Material.cut )
|
||||
metal5 = createBL( 'metal5' , BasicLayer.Material.metal )
|
||||
cut5 = createBL( 'cut5' , BasicLayer.Material.cut )
|
||||
metal6 = createBL( 'metal6' , BasicLayer.Material.metal )
|
||||
cut6 = createBL( 'cut6' , BasicLayer.Material.cut )
|
||||
metal7 = createBL( 'metal7' , BasicLayer.Material.metal )
|
||||
cut7 = createBL( 'cut7' , BasicLayer.Material.cut )
|
||||
metal8 = createBL( 'metal8' , BasicLayer.Material.metal )
|
||||
cut8 = createBL( 'cut8' , BasicLayer.Material.cut )
|
||||
metal9 = createBL( 'metal9' , BasicLayer.Material.metal )
|
||||
cut9 = createBL( 'cut9' , BasicLayer.Material.cut )
|
||||
metal10 = createBL( 'metal10' , BasicLayer.Material.metal )
|
||||
|
||||
blockage1 = createBL( 'blockage1' , BasicLayer.Material.blockage )
|
||||
blockage2 = createBL( 'blockage2' , BasicLayer.Material.blockage )
|
||||
blockage3 = createBL( 'blockage3' , BasicLayer.Material.blockage )
|
||||
blockage4 = createBL( 'blockage4' , BasicLayer.Material.blockage )
|
||||
blockage5 = createBL( 'blockage5' , BasicLayer.Material.blockage )
|
||||
blockage6 = createBL( 'blockage6' , BasicLayer.Material.blockage )
|
||||
blockage7 = createBL( 'blockage7' , BasicLayer.Material.blockage )
|
||||
blockage8 = createBL( 'blockage8' , BasicLayer.Material.blockage )
|
||||
blockage9 = createBL( 'blockage9' , BasicLayer.Material.blockage )
|
||||
blockage10 = createBL( 'blockage10', BasicLayer.Material.blockage )
|
||||
|
||||
metal1 .setBlockageLayer( blockage1 )
|
||||
metal2 .setBlockageLayer( blockage2 )
|
||||
metal3 .setBlockageLayer( blockage3 )
|
||||
metal4 .setBlockageLayer( blockage4 )
|
||||
metal5 .setBlockageLayer( blockage5 )
|
||||
metal6 .setBlockageLayer( blockage6 )
|
||||
metal7 .setBlockageLayer( blockage7 )
|
||||
metal8 .setBlockageLayer( blockage8 )
|
||||
metal9 .setBlockageLayer( blockage9 )
|
||||
metal10.setBlockageLayer( blockage10 )
|
||||
|
||||
textCell = createBL( 'text.cell' , BasicLayer.Material.other ) # Misc. non-physical layers.
|
||||
textInst = createBL( 'text.instance', BasicLayer.Material.other ) # Used by the software for visualization
|
||||
SPL1 = createBL( 'SPL1' , BasicLayer.Material.other ) # purposes only.
|
||||
AutoLayer = createBL( 'AutoLayer' , BasicLayer.Material.other )
|
||||
gmetalh = createBL( 'gmetalh' , BasicLayer.Material.metal ) # Special BasicLayers for Knik & Kite Routers.
|
||||
gcut = createBL( 'gcut' , BasicLayer.Material.cut ) # *Must be after all others*
|
||||
gmetalv = createBL( 'gmetalv' , BasicLayer.Material.metal )
|
||||
|
||||
# VIAs for real technologies.
|
||||
ViaLayer.create( tech, 'via12' , metal1, cut1, metal2 )
|
||||
ViaLayer.create( tech, 'via23' , metal2, cut2, metal3 )
|
||||
ViaLayer.create( tech, 'via34' , metal3, cut3, metal4 )
|
||||
ViaLayer.create( tech, 'via45' , metal4, cut4, metal5 )
|
||||
ViaLayer.create( tech, 'via56' , metal5, cut5, metal6 )
|
||||
ViaLayer.create( tech, 'via67' , metal6, cut6, metal7 )
|
||||
ViaLayer.create( tech, 'via78' , metal7, cut7, metal8 )
|
||||
ViaLayer.create( tech, 'via89' , metal8, cut8, metal9 )
|
||||
ViaLayer.create( tech, 'via910', metal9, cut9, metal10 )
|
||||
|
||||
# Composite/Symbolic layers.
|
||||
NWELL = RegularLayer .create( tech, 'NWELL' , nWell )
|
||||
PWELL = RegularLayer .create( tech, 'PWELL' , pWell )
|
||||
NTIE = DiffusionLayer .create( tech, 'NTIE' , nImplant , active, nWell)
|
||||
PTIE = DiffusionLayer .create( tech, 'PTIE' , pImplant , active, pWell)
|
||||
NDIF = DiffusionLayer .create( tech, 'NDIF' , nImplant , active, None )
|
||||
PDIF = DiffusionLayer .create( tech, 'PDIF' , pImplant , active, None )
|
||||
GATE = DiffusionLayer .create( tech, 'GATE' , poly , active, None )
|
||||
NTRANS = TransistorLayer.create( tech, 'NTRANS' , nImplant , active, poly, None )
|
||||
PTRANS = TransistorLayer.create( tech, 'PTRANS' , pImplant , active, poly, nWell )
|
||||
POLY = RegularLayer .create( tech, 'POLY' , poly )
|
||||
POLY2 = RegularLayer .create( tech, 'POLY2' , poly2 )
|
||||
METAL1 = RegularLayer .create( tech, 'METAL1' , metal1 )
|
||||
METAL2 = RegularLayer .create( tech, 'METAL2' , metal2 )
|
||||
metcapdum = RegularLayer .create( tech, 'metcapdum' , metcap )
|
||||
metbot = RegularLayer .create( tech, 'metbot' , metal2 )
|
||||
METAL3 = RegularLayer .create( tech, 'METAL3' , metal3 )
|
||||
METAL4 = RegularLayer .create( tech, 'METAL4' , metal4 )
|
||||
METAL5 = RegularLayer .create( tech, 'METAL5' , metal5 )
|
||||
METAL6 = RegularLayer .create( tech, 'METAL6' , metal6 )
|
||||
METAL7 = RegularLayer .create( tech, 'METAL7' , metal7 )
|
||||
METAL8 = RegularLayer .create( tech, 'METAL8' , metal8 )
|
||||
METAL9 = RegularLayer .create( tech, 'METAL9' , metal9 )
|
||||
METAL10 = RegularLayer .create( tech, 'METAL10' , metal10 )
|
||||
CONT_BODY_N = ContactLayer .create( tech, 'CONT_BODY_N', nImplant , active, cut0, metal1, nWell )
|
||||
CONT_BODY_P = ContactLayer .create( tech, 'CONT_BODY_P', pImplant , active, cut0, metal1, pWell )
|
||||
CONT_DIF_N = ContactLayer .create( tech, 'CONT_DIF_N' , nImplant , active, cut0, metal1, None )
|
||||
CONT_DIF_P = ContactLayer .create( tech, 'CONT_DIF_P' , pImplant , active, cut0, metal1, None )
|
||||
CONT_POLY = ViaLayer .create( tech, 'CONT_POLY' , poly, cut0, metal1 )
|
||||
|
||||
# VIAs for symbolic technologies.
|
||||
VIA12 = ViaLayer .create( tech, 'VIA12' , metal1, cut1, metal2 )
|
||||
VIA23 = ViaLayer .create( tech, 'VIA23' , metal2, cut2, metal3 )
|
||||
VIA23cap = ViaLayer .create( tech, 'VIA23cap' , metcap, cut2, metal3 )
|
||||
VIA34 = ViaLayer .create( tech, 'VIA34' , metal3, cut3, metal4 )
|
||||
VIA45 = ViaLayer .create( tech, 'VIA45' , metal4, cut4, metal5 )
|
||||
VIA56 = ViaLayer .create( tech, 'VIA56' , metal5, cut5, metal6 )
|
||||
VIA67 = ViaLayer .create( tech, 'VIA67' , metal6, cut6, metal7 )
|
||||
VIA78 = ViaLayer .create( tech, 'VIA78' , metal7, cut7, metal8 )
|
||||
VIA89 = ViaLayer .create( tech, 'VIA89' , metal8, cut8, metal9 )
|
||||
VIA910 = ViaLayer .create( tech, 'VIA910' , metal9, cut9, metal10 )
|
||||
BLOCKAGE1 = RegularLayer.create( tech, 'BLOCKAGE1' , blockage1 )
|
||||
BLOCKAGE2 = RegularLayer.create( tech, 'BLOCKAGE2' , blockage2 )
|
||||
BLOCKAGE3 = RegularLayer.create( tech, 'BLOCKAGE3' , blockage3 )
|
||||
BLOCKAGE4 = RegularLayer.create( tech, 'BLOCKAGE4' , blockage4 )
|
||||
BLOCKAGE5 = RegularLayer.create( tech, 'BLOCKAGE5' , blockage5 )
|
||||
BLOCKAGE6 = RegularLayer.create( tech, 'BLOCKAGE6' , blockage6 )
|
||||
BLOCKAGE7 = RegularLayer.create( tech, 'BLOCKAGE7' , blockage7 )
|
||||
BLOCKAGE8 = RegularLayer.create( tech, 'BLOCKAGE8' , blockage8 )
|
||||
BLOCKAGE9 = RegularLayer.create( tech, 'BLOCKAGE9' , blockage9 )
|
||||
BLOCKAGE10 = RegularLayer.create( tech, 'BLOCKAGE10', blockage10 )
|
||||
gcontact = ViaLayer .create( tech, 'gcontact' , gmetalh , gcut, gmetalv )
|
||||
|
||||
tech.setSymbolicLayer( POLY .getName() )
|
||||
tech.setSymbolicLayer( POLY2 .getName() )
|
||||
tech.setSymbolicLayer( METAL1 .getName() )
|
||||
tech.setSymbolicLayer( METAL2 .getName() )
|
||||
tech.setSymbolicLayer( METAL3 .getName() )
|
||||
tech.setSymbolicLayer( METAL4 .getName() )
|
||||
tech.setSymbolicLayer( METAL5 .getName() )
|
||||
tech.setSymbolicLayer( METAL6 .getName() )
|
||||
tech.setSymbolicLayer( METAL7 .getName() )
|
||||
tech.setSymbolicLayer( METAL8 .getName() )
|
||||
tech.setSymbolicLayer( METAL9 .getName() )
|
||||
tech.setSymbolicLayer( METAL10 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE1 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE2 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE3 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE4 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE5 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE6 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE7 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE8 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE9 .getName() )
|
||||
tech.setSymbolicLayer( BLOCKAGE10.getName() )
|
||||
tech.setSymbolicLayer( VIA12 .getName() )
|
||||
tech.setSymbolicLayer( VIA23 .getName() )
|
||||
tech.setSymbolicLayer( VIA34 .getName() )
|
||||
tech.setSymbolicLayer( VIA45 .getName() )
|
||||
tech.setSymbolicLayer( VIA56 .getName() )
|
||||
tech.setSymbolicLayer( VIA67 .getName() )
|
||||
tech.setSymbolicLayer( VIA78 .getName() )
|
||||
tech.setSymbolicLayer( VIA89 .getName() )
|
||||
tech.setSymbolicLayer( VIA910 .getName() )
|
||||
tech.setSymbolicLayer( gcut .getName() )
|
||||
tech.setSymbolicLayer( gmetalh .getName() )
|
||||
tech.setSymbolicLayer( gmetalv .getName() )
|
||||
tech.setSymbolicLayer( gcontact .getName() )
|
||||
|
||||
NWELL.setExtentionCap( nWell, l(0.0) )
|
||||
PWELL.setExtentionCap( pWell, l(0.0) )
|
||||
|
||||
NTIE.setMinimalSize ( l(3.0) )
|
||||
NTIE.setExtentionCap ( nWell , l(1.5) )
|
||||
NTIE.setExtentionWidth( nWell , l(0.5) )
|
||||
NTIE.setExtentionCap ( nImplant, l(1.0) )
|
||||
NTIE.setExtentionWidth( nImplant, l(0.5) )
|
||||
NTIE.setExtentionCap ( active , l(0.5) )
|
||||
NTIE.setExtentionWidth( active , l(0.0) )
|
||||
|
||||
PTIE.setMinimalSize ( l(3.0) )
|
||||
PTIE.setExtentionCap ( nWell , l(1.5) )
|
||||
PTIE.setExtentionWidth( nWell , l(0.5) )
|
||||
PTIE.setExtentionCap ( nImplant, l(1.0) )
|
||||
PTIE.setExtentionWidth( nImplant, l(0.5) )
|
||||
PTIE.setExtentionCap ( active , l(0.5) )
|
||||
PTIE.setExtentionWidth( active , l(0.0) )
|
||||
|
||||
NDIF.setMinimalSize ( l(3.0) )
|
||||
NDIF.setExtentionCap ( nImplant, l(1.0) )
|
||||
NDIF.setExtentionWidth( nImplant, l(0.5) )
|
||||
NDIF.setExtentionCap ( active , l(0.5) )
|
||||
NDIF.setExtentionWidth( active , l(0.0) )
|
||||
|
||||
PDIF.setMinimalSize ( l(3.0) )
|
||||
PDIF.setExtentionCap ( pImplant, l(1.0) )
|
||||
PDIF.setExtentionWidth( pImplant, l(0.5) )
|
||||
PDIF.setExtentionCap ( active , l(0.5) )
|
||||
PDIF.setExtentionWidth( active , l(0.0) )
|
||||
|
||||
GATE.setMinimalSize ( l(1.0) )
|
||||
GATE.setExtentionCap ( poly , l(1.5) )
|
||||
|
||||
NTRANS.setMinimalSize ( l( 1.0) )
|
||||
NTRANS.setExtentionCap ( nImplant, l(-1.0) )
|
||||
NTRANS.setExtentionWidth( nImplant, l( 2.5) )
|
||||
NTRANS.setExtentionCap ( active , l(-1.5) )
|
||||
NTRANS.setExtentionWidth( active , l( 2.0) )
|
||||
|
||||
PTRANS.setMinimalSize ( l( 1.0) )
|
||||
PTRANS.setExtentionCap ( nWell , l(-1.0) )
|
||||
PTRANS.setExtentionWidth( nWell , l( 4.5) )
|
||||
PTRANS.setExtentionCap ( pImplant, l(-1.0) )
|
||||
PTRANS.setExtentionWidth( pImplant, l( 4.0) )
|
||||
PTRANS.setExtentionCap ( active , l(-1.5) )
|
||||
PTRANS.setExtentionWidth( active , l( 3.0) )
|
||||
|
||||
POLY .setMinimalSize ( l(1.0) )
|
||||
POLY .setExtentionCap ( poly , l(0.5) )
|
||||
POLY2.setMinimalSize ( l(1.0) )
|
||||
POLY2.setExtentionCap ( poly , l(0.5) )
|
||||
|
||||
METAL1 .setMinimalSize ( l(1.0) )
|
||||
METAL1 .setExtentionCap ( metal1 , l(0.5) )
|
||||
METAL2 .setMinimalSize ( l(1.0) )
|
||||
METAL2 .setExtentionCap ( metal2 , l(1.0) )
|
||||
METAL3 .setMinimalSize ( l(1.0) )
|
||||
METAL3 .setExtentionCap ( metal3 , l(1.0) )
|
||||
METAL4 .setMinimalSize ( l(1.0) )
|
||||
METAL4 .setExtentionCap ( metal4 , l(1.0) )
|
||||
METAL4 .setMinimalSpacing( l(3.0) )
|
||||
METAL5 .setMinimalSize ( l(2.0) )
|
||||
METAL5 .setExtentionCap ( metal5 , l(1.0) )
|
||||
METAL6 .setMinimalSize ( l(2.0) )
|
||||
METAL6 .setExtentionCap ( metal6 , l(1.0) )
|
||||
METAL7 .setMinimalSize ( l(2.0) )
|
||||
METAL7 .setExtentionCap ( metal7 , l(1.0) )
|
||||
METAL8 .setMinimalSize ( l(2.0) )
|
||||
METAL8 .setExtentionCap ( metal8 , l(1.0) )
|
||||
METAL9 .setMinimalSize ( l(2.0) )
|
||||
METAL9 .setExtentionCap ( metal9 , l(1.0) )
|
||||
METAL10.setMinimalSize ( l(2.0) )
|
||||
METAL10.setExtentionCap ( metal10 , l(1.0) )
|
||||
|
||||
# Contacts (i.e. Active <--> Metal) (symbolic).
|
||||
CONT_BODY_N.setMinimalSize( l( 1.0) )
|
||||
CONT_BODY_N.setEnclosure ( nWell , l( 1.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_BODY_N.setEnclosure ( nImplant, l( 1.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_BODY_N.setEnclosure ( active , l( 1.0), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_BODY_N.setEnclosure ( metal1 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
|
||||
CONT_BODY_P.setMinimalSize( l( 1.0) )
|
||||
CONT_BODY_P.setEnclosure ( pWell , l( 1.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_BODY_P.setEnclosure ( pImplant, l( 1.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_BODY_P.setEnclosure ( active , l( 1.0), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_BODY_P.setEnclosure ( metal1 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
|
||||
CONT_DIF_N.setMinimalSize( l( 1.0) )
|
||||
CONT_DIF_N.setEnclosure ( nImplant, l( 1.0), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_DIF_N.setEnclosure ( active , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_DIF_N.setEnclosure ( metal1 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
|
||||
CONT_DIF_P.setMinimalSize( l( 1.0) )
|
||||
CONT_DIF_P.setEnclosure ( pImplant, l( 1.0), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_DIF_P.setEnclosure ( active , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_DIF_P.setEnclosure ( metal1 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
|
||||
CONT_POLY.setMinimalSize( l( 1.0) )
|
||||
CONT_POLY.setEnclosure ( poly , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
CONT_POLY.setEnclosure ( metal1 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
|
||||
# VIAs (i.e. Metal <--> Metal) (symbolic).
|
||||
VIA12 .setMinimalSize ( l( 1.0) )
|
||||
VIA12 .setEnclosure ( metal1 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA12 .setEnclosure ( metal2 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA12 .setMinimalSpacing( l( 4.0) )
|
||||
VIA23 .setMinimalSize ( l( 1.0) )
|
||||
VIA23 .setEnclosure ( metal2 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA23 .setEnclosure ( metal3 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA23 .setMinimalSpacing( l( 4.0) )
|
||||
VIA34 .setMinimalSize ( l( 1.0) )
|
||||
VIA34 .setEnclosure ( metal3 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA34 .setEnclosure ( metal4 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA34 .setMinimalSpacing( l( 4.0) )
|
||||
VIA45 .setMinimalSize ( l( 1.0) )
|
||||
VIA45 .setEnclosure ( metal4 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA45 .setEnclosure ( metal5 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA45 .setMinimalSpacing( l( 4.0) )
|
||||
VIA56 .setMinimalSize ( l( 1.0) )
|
||||
VIA56 .setEnclosure ( metal5 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA56 .setEnclosure ( metal6 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA56 .setMinimalSpacing( l( 4.0) )
|
||||
VIA67 .setMinimalSize ( l( 1.0) )
|
||||
VIA67 .setEnclosure ( metal6 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA67 .setEnclosure ( metal7 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA67 .setMinimalSpacing( l( 4.0) )
|
||||
VIA78 .setMinimalSpacing( l( 4.0) )
|
||||
VIA78 .setMinimalSize ( l( 1.0) )
|
||||
VIA78 .setEnclosure ( metal7 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA78 .setEnclosure ( metal8 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA78 .setMinimalSpacing( l( 4.0) )
|
||||
VIA89 .setMinimalSize ( l( 1.0) )
|
||||
VIA89 .setEnclosure ( metal8 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA89 .setEnclosure ( metal9 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA89 .setMinimalSpacing( l( 4.0) )
|
||||
VIA910.setMinimalSize ( l( 1.0) )
|
||||
VIA910.setEnclosure ( metal9 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA910.setEnclosure ( metal10 , l( 0.5), Layer.EnclosureH|Layer.EnclosureV )
|
||||
VIA910.setMinimalSpacing( l( 4.0) )
|
||||
|
||||
# Blockages (symbolic).
|
||||
BLOCKAGE1 .setMinimalSize ( l( 1.0) )
|
||||
BLOCKAGE1 .setExtentionCap( blockage1 , l( 0.5) )
|
||||
BLOCKAGE2 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE2 .setExtentionCap( blockage2 , l( 0.5) )
|
||||
BLOCKAGE3 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE3 .setExtentionCap( blockage3 , l( 0.5) )
|
||||
BLOCKAGE4 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE4 .setExtentionCap( blockage4 , l( 0.5) )
|
||||
BLOCKAGE5 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE5 .setExtentionCap( blockage5 , l( 1.0) )
|
||||
BLOCKAGE6 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE6 .setExtentionCap( blockage6 , l( 1.0) )
|
||||
BLOCKAGE7 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE7 .setExtentionCap( blockage7 , l( 1.0) )
|
||||
BLOCKAGE8 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE8 .setExtentionCap( blockage8 , l( 1.0) )
|
||||
BLOCKAGE9 .setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE9 .setExtentionCap( blockage9 , l( 1.0) )
|
||||
BLOCKAGE10.setMinimalSize ( l( 2.0) )
|
||||
BLOCKAGE10.setExtentionCap( blockage10, l( 1.0) )
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/node180/scn6m_deep_09/__init__.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
from Hurricane import DataBase
|
||||
from CRL import System
|
||||
|
||||
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
|
||||
|
||||
DataBase.create()
|
||||
System.get()
|
||||
|
||||
import node180.scn6m_deep_09.misc
|
||||
import node180.scn6m_deep_09.technology
|
||||
import node180.scn6m_deep_09.display
|
||||
import node180.scn6m_deep_09.analog
|
||||
import node180.scn6m_deep_09.alliance
|
||||
import node180.scn6m_deep_09.etesian
|
||||
import node180.scn6m_deep_09.kite
|
||||
import node180.scn6m_deep_09.plugins
|
||||
import node180.scn6m_deep_09.stratus1
|
||||
import node180.scn6m_deep_09.devices
|
||||
import node180.scn6m_deep_09.dtr_scn6m_deep_09
|
||||
|
||||
Cfg.Configuration.popDefaultPriority()
|
|
@ -0,0 +1,49 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/node180.scn6m_deep_09/alliance.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import os
|
||||
import os.path
|
||||
from CRL import Environment
|
||||
from CRL import AllianceFramework
|
||||
|
||||
|
||||
allianceTop = None
|
||||
if os.environ.has_key('ALLIANCE_TOP'):
|
||||
allianceTop = os.environ['ALLIANCE_TOP']
|
||||
if not os.path.isdir(allianceTop):
|
||||
allianceTop = None
|
||||
|
||||
if not allianceTop: allianceTop = '/soc/alliance'
|
||||
|
||||
cellsTop = allianceTop+'/cells'
|
||||
|
||||
af = AllianceFramework.get()
|
||||
env = af.getEnvironment()
|
||||
|
||||
env.setSCALE_X ( 100 )
|
||||
env.setCATALOG ( 'CATAL' )
|
||||
env.setIN_LO ( 'vst' )
|
||||
env.setIN_PH ( 'ap' )
|
||||
env.setOUT_LO ( 'vst' )
|
||||
env.setOUT_PH ( 'ap' )
|
||||
env.setPOWER ( 'vdd' )
|
||||
env.setGROUND ( 'vss' )
|
||||
env.setCLOCK ( '.*ck.*|.*nck.*' )
|
||||
env.setBLOCKAGE ( 'blockage[Nn]et.*' )
|
||||
env.setPad ( '.*_mpx$' )
|
||||
|
||||
env.setWORKING_LIBRARY( '.' )
|
||||
env.addSYSTEM_LIBRARY ( library=cellsTop+'/nsxlib', mode=Environment.Append )
|
||||
env.addSYSTEM_LIBRARY ( library=cellsTop+'/mpxlib', mode=Environment.Append )
|
|
@ -0,0 +1,16 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | Alliance / Hurricane Interface |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/node180.scn6m_deep_09/analog.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#import common.analog
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue