diff --git a/anabatic/src/AutoContact.cpp b/anabatic/src/AutoContact.cpp index 1ae6a1d8..c2a6f973 100644 --- a/anabatic/src/AutoContact.cpp +++ b/anabatic/src/AutoContact.cpp @@ -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(); diff --git a/anabatic/src/AutoSegment.cpp b/anabatic/src/AutoSegment.cpp index 3b3b324a..59727746 100644 --- a/anabatic/src/AutoSegment.cpp +++ b/anabatic/src/AutoSegment.cpp @@ -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); diff --git a/anabatic/src/Dijkstra.cpp b/anabatic/src/Dijkstra.cpp index 2cfe0373..51635ccd 100644 --- a/anabatic/src/Dijkstra.cpp +++ b/anabatic/src/Dijkstra.cpp @@ -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" diff --git a/anabatic/src/anabatic/AutoContact.h b/anabatic/src/anabatic/AutoContact.h index 6c85299d..d3d044a9 100644 --- a/anabatic/src/anabatic/AutoContact.h +++ b/anabatic/src/anabatic/AutoContact.h @@ -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; diff --git a/bootstrap/coriolisEnv.py b/bootstrap/coriolisEnv.py index dea6d07e..098e2003 100755 --- a/bootstrap/coriolisEnv.py +++ b/bootstrap/coriolisEnv.py @@ -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;' diff --git a/crlcore/doc/crlcore/html/AcmSigda_8h_source.html b/crlcore/doc/crlcore/html/AcmSigda_8h_source.html index d8b0635a..404b45ba 100644 --- a/crlcore/doc/crlcore/html/AcmSigda_8h_source.html +++ b/crlcore/doc/crlcore/html/AcmSigda_8h_source.html @@ -54,7 +54,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/AllianceFramework_8h_source.html b/crlcore/doc/crlcore/html/AllianceFramework_8h_source.html index bd55ab71..f90d5ca5 100644 --- a/crlcore/doc/crlcore/html/AllianceFramework_8h_source.html +++ b/crlcore/doc/crlcore/html/AllianceFramework_8h_source.html @@ -44,7 +44,7 @@ $(function() {
AllianceFramework.h
-
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/AllianceFramework.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_ALLIANCE_FRAMEWORK_H
18 #define CRL_ALLIANCE_FRAMEWORK_H
19 
20 #include <map>
21 #include <limits>
22 #include "hurricane/Cell.h"
23 #include "crlcore/Environment.h"
24 #include "crlcore/AllianceLibrary.h"
25 #include "crlcore/Catalog.h"
26 #include "crlcore/ParsersDrivers.h"
27 
28 
29 namespace CRL {
30 
31  using Hurricane::Observable;
32  using Hurricane::BaseObserver;
35  using Hurricane::DbU;
36  using Hurricane::Cell;
37  using Hurricane::Net;
38  class RoutingGauge;
39  class CellGauge;
40 
41 
43  public:
44  enum FunctionsFlags { NoFlags = 0
45  , NoPythonInit = (1<<0)
46  };
48  , IgnoreFeeds = (1<<1)
49  };
50  enum LibraryFlags { CreateLibrary = (1<<0)
51  , AppendLibrary = (1<<1)
52  , HasCatalog = (1<<2)
53  };
54  enum NotifyFlags { AddedLibrary = (1<<0)
55  , RemovedLibrary = (1<<1)
56  , ConfigChanged = (1<<2)
57  };
58  public:
59  // Constructors.
60  static AllianceFramework* create ( unsigned long flags=NoFlags );
61  // Destructors.
62  void destroy ();
63  // Accessors.
64  static AllianceFramework* get ();
65  string getPrint () const;
66  // Predicates.
67  Catalog::State* isInCatalog ( const Name& );
68  Catalog::State* isInCatalog ( string );
69  inline bool isPOWER ( const char* name );
70  inline bool isPOWER ( const string& name );
71  inline bool isPOWER ( const Name& name );
72  inline bool isGROUND ( const char* name );
73  inline bool isGROUND ( const string& name );
74  inline bool isGROUND ( const Name& name );
75  inline bool isCLOCK ( const char* name );
76  inline bool isCLOCK ( const string& name );
77  inline bool isCLOCK ( const Name& name );
78  inline bool isBLOCKAGE ( const char* name );
79  inline bool isBLOCKAGE ( const string& name );
80  inline bool isBLOCKAGE ( const Name& name );
81  inline bool isBLOCKAGE ( const Net* net );
82  inline bool isPad ( const char* name );
83  inline bool isPad ( const string& name );
84  inline bool isPad ( const Name& name );
85  inline bool isPad ( const Cell* );
86  // Accessors.
87  inline Environment* getEnvironment ();
88  inline Catalog* getCatalog ();
89  inline const Name& getParentLibraryName () const;
90  inline Library* getParentLibrary ();
91  Library* getLibrary ( unsigned int index );
92  Library* getLibrary ( const Name& libName );
93  AllianceLibrary* getAllianceLibrary ( unsigned int index );
94  AllianceLibrary* getAllianceLibrary ( const Name& libName, unsigned int flags );
95  AllianceLibrary* getAllianceLibrary ( Library* );
96  AllianceLibrary* createLibrary ( const string& path, unsigned int flags, string libName="" );
97  inline const AllianceLibraries& getAllianceLibraries () const;
98  void saveLibrary ( Library* );
99  void saveLibrary ( AllianceLibrary* );
100  RoutingGauge* getRoutingGauge ( const Name& name="" );
101  CellGauge* getCellGauge ( const Name& name="" );
102  CellGauge* matchCellGauge ( DbU::Unit width, DbU::Unit height ) const;
103  CellGauge* matchCellGaugeByHeight ( DbU::Unit height ) const;
104  inline const Name getDefaultCGPinLayerName () const;
105  // Modifiers.
106  RoutingGauge* setRoutingGauge ( const Name& name="" );
107  CellGauge* setCellGauge ( const Name& name="" );
108  void addRoutingGauge ( RoutingGauge* );
109  void addCellGauge ( CellGauge* );
110  void addObserver ( BaseObserver* );
111  void removeObserver ( BaseObserver* );
112  void notify ( unsigned int flags );
113  // Cell Management.
114  Cell* cellLoader ( const string& rpath );
115  Cell* getCell ( const string& name
116  , unsigned int mode
117  , unsigned int depth=(unsigned int)-1 );
118  Cell* createCell ( const string& name, AllianceLibrary* library=NULL );
119  void saveCell ( Cell* , unsigned int mode );
120  unsigned int loadLibraryCells ( Library* );
121  unsigned int loadLibraryCells ( const Name& );
122  static size_t getInstancesCount ( Cell*, unsigned int flags );
123  // Hurricane Managment.
124  void toJson ( JsonWriter* ) const;
125  inline string _getTypeName () const;
126  string _getString () const;
127  Record* _getRecord () const;
128 
129  // Internals - Attributes.
130  protected:
131  static const Name _parentLibraryName;
132  static AllianceFramework* _singleton;
133  Observable _observers;
134  Environment _environment;
135  ParsersMap _parsers;
136  DriversMap _drivers;
137  Catalog _catalog;
138  AllianceLibraries _libraries;
139  Library* _parentLibrary;
140  map<Name,RoutingGauge*> _routingGauges;
141  RoutingGauge* _defaultRoutingGauge;
142  map<Name,CellGauge*> _cellGauges;
143  CellGauge* _defaultCellGauge;
144 
145  // Internals - Constructors.
146  AllianceFramework ();
147  AllianceFramework ( const AllianceFramework& );
148  AllianceFramework& operator= ( const AllianceFramework& );
149  // Internals - Destructors.
150  ~AllianceFramework ();
151  // Internals - Methods.
152  bool _readLocate ( const string& file, unsigned int mode, bool isLib=false );
153  bool _writeLocate ( const string& file, unsigned int mode, bool isLib=false );
154  AllianceLibrary* _createLibrary ( const string& path, bool& hasCatalog );
155  void _bindLibraries ();
156  };
157 
158  inline bool AllianceFramework::isPOWER ( const char* name ) { return _environment.isPOWER(name); }
159  inline bool AllianceFramework::isPOWER ( const string& name ) { return isPOWER(name.c_str()); }
160  inline bool AllianceFramework::isPOWER ( const Name& name ) { return isPOWER(getString(name)); }
161  inline bool AllianceFramework::isGROUND ( const char* name ) { return _environment.isGROUND(name); }
162  inline bool AllianceFramework::isGROUND ( const string& name ) { return isGROUND(name.c_str()); }
163  inline bool AllianceFramework::isGROUND ( const Name& name ) { return isGROUND(getString(name)); }
164  inline bool AllianceFramework::isCLOCK ( const char* name ) { return _environment.isCLOCK(name); }
165  inline bool AllianceFramework::isCLOCK ( const string& name ) { return isCLOCK(name.c_str()); }
166  inline bool AllianceFramework::isCLOCK ( const Name& name ) { return isCLOCK(getString(name)); }
167  inline bool AllianceFramework::isBLOCKAGE ( const char* name ) { return _environment.isBLOCKAGE(name); }
168  inline bool AllianceFramework::isBLOCKAGE ( const string& name ) { return isBLOCKAGE(name.c_str()); }
169  inline bool AllianceFramework::isBLOCKAGE ( const Name& name ) { return isBLOCKAGE(getString(name)); }
170  inline bool AllianceFramework::isBLOCKAGE ( const Net* net ) { return isBLOCKAGE(net->getName()); }
171  inline bool AllianceFramework::isPad ( const char* name ) { return _environment.isPad(name); }
172  inline bool AllianceFramework::isPad ( const string& name ) { return isPad(name.c_str()); }
173  inline bool AllianceFramework::isPad ( const Name& name ) { return isPad(getString(name)); }
174  inline bool AllianceFramework::isPad ( const Cell* cell ) { return isPad(cell->getName()); }
175  inline Environment* AllianceFramework::getEnvironment () { return &_environment; }
176  inline Catalog* AllianceFramework::getCatalog () { return &_catalog; }
178  () const { return _parentLibraryName; }
179  inline Library* AllianceFramework::getParentLibrary () { return _parentLibrary; }
180  inline const AllianceLibraries&
181  AllianceFramework::getAllianceLibraries () const { return _libraries; }
182 // TEMPORARY.
184  () const { return "CALU1"; }
185  inline string AllianceFramework::_getTypeName () const { return "AllianceFramework"; }
186 
187 
188  class JsonAllianceFramework : public JsonObject {
189  public:
190  static void initialize ();
191  JsonAllianceFramework( unsigned long );
192  virtual ~JsonAllianceFramework();
193  virtual string getTypeName () const;
194  virtual JsonAllianceFramework* clone ( unsigned long ) const;
195  virtual void toData ( JsonStack& );
196  private:
197  std::string _defaultRoutingGauge;
198  std::string _defaultCellGauge;
199  };
200 
201 
202 } // CRL namespace.
203 
204 
205 INSPECTOR_P_SUPPORT(CRL::AllianceFramework);
206 
207 #endif // CRL_ALLIANCE_FRAMEWORK_H
bool isBLOCKAGE(const char *name) const
+
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/AllianceFramework.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_ALLIANCE_FRAMEWORK_H
18 #define CRL_ALLIANCE_FRAMEWORK_H
19 
20 #include <map>
21 #include <limits>
22 #include "hurricane/Cell.h"
23 #include "crlcore/Environment.h"
24 #include "crlcore/AllianceLibrary.h"
25 #include "crlcore/Catalog.h"
26 #include "crlcore/ParsersDrivers.h"
27 
28 
29 namespace CRL {
30 
31  using Hurricane::Observable;
32  using Hurricane::BaseObserver;
35  using Hurricane::DbU;
36  using Hurricane::Cell;
37  using Hurricane::Net;
38  class RoutingGauge;
39  class CellGauge;
40 
41 
43  public:
44  enum FunctionsFlags { NoFlags = 0
45  , NoPythonInit = (1<<0)
46  };
48  , IgnoreFeeds = (1<<1)
49  };
50  enum LibraryFlags { CreateLibrary = (1<<0)
51  , AppendLibrary = (1<<1)
52  , HasCatalog = (1<<2)
53  };
54  enum NotifyFlags { AddedLibrary = (1<<0)
55  , RemovedLibrary = (1<<1)
56  , ConfigChanged = (1<<2)
57  };
58  public:
59  // Constructors.
60  static AllianceFramework* create ( unsigned long flags=NoFlags );
61  // Destructors.
62  void destroy ();
63  // Accessors.
64  static AllianceFramework* get ();
65  string getPrint () const;
66  // Predicates.
67  Catalog::State* isInCatalog ( const Name& );
68  Catalog::State* isInCatalog ( string );
69  inline bool isPOWER ( const char* name );
70  inline bool isPOWER ( const string& name );
71  inline bool isPOWER ( const Name& name );
72  inline bool isGROUND ( const char* name );
73  inline bool isGROUND ( const string& name );
74  inline bool isGROUND ( const Name& name );
75  inline bool isCLOCK ( const char* name );
76  inline bool isCLOCK ( const string& name );
77  inline bool isCLOCK ( const Name& name );
78  inline bool isBLOCKAGE ( const char* name );
79  inline bool isBLOCKAGE ( const string& name );
80  inline bool isBLOCKAGE ( const Name& name );
81  inline bool isBLOCKAGE ( const Net* net );
82  inline bool isPad ( const char* name );
83  inline bool isPad ( const string& name );
84  inline bool isPad ( const Name& name );
85  inline bool isPad ( const Cell* );
86  // Accessors.
87  inline Environment* getEnvironment ();
88  inline Catalog* getCatalog ();
89  inline const Name& getParentLibraryName () const;
90  inline Library* getParentLibrary ();
91  Library* getLibrary ( unsigned int index );
92  Library* getLibrary ( const Name& libName );
93  AllianceLibrary* getAllianceLibrary ( unsigned int index );
94  AllianceLibrary* getAllianceLibrary ( const Name& libName, unsigned int flags );
95  AllianceLibrary* getAllianceLibrary ( Library* );
96  AllianceLibrary* createLibrary ( const string& path, unsigned int flags, string libName="" );
97  inline const AllianceLibraries& getAllianceLibraries () const;
98  void saveLibrary ( Library* );
99  void saveLibrary ( AllianceLibrary* );
100  RoutingGauge* getRoutingGauge ( const Name& name="" );
101  CellGauge* getCellGauge ( const Name& name="" );
102  CellGauge* matchCellGauge ( DbU::Unit width, DbU::Unit height ) const;
103  CellGauge* matchCellGaugeByHeight ( DbU::Unit height ) const;
104  inline const Name getDefaultCGPinLayerName () const;
105  // Modifiers.
106  RoutingGauge* setRoutingGauge ( const Name& name="" );
107  CellGauge* setCellGauge ( const Name& name="" );
108  void addRoutingGauge ( RoutingGauge* );
109  void addCellGauge ( CellGauge* );
110  void addObserver ( BaseObserver* );
111  void removeObserver ( BaseObserver* );
112  void notify ( unsigned int flags );
113  // Cell Management.
114  Cell* cellLoader ( const string& rpath );
115  Cell* getCell ( const string& name
116  , unsigned int mode
117  , unsigned int depth=(unsigned int)-1 );
118  Cell* createCell ( const string& name, AllianceLibrary* library=NULL );
119  void saveCell ( Cell* , unsigned int mode );
120  void bindLibraries ();
121  unsigned int loadLibraryCells ( Library* );
122  unsigned int loadLibraryCells ( const Name& );
123  static size_t getInstancesCount ( Cell*, unsigned int flags );
124  // Hurricane Managment.
125  void toJson ( JsonWriter* ) const;
126  inline string _getTypeName () const;
127  string _getString () const;
128  Record* _getRecord () const;
129 
130  // Internals - Attributes.
131  protected:
132  static const Name _parentLibraryName;
133  static AllianceFramework* _singleton;
134  Observable _observers;
135  Environment _environment;
136  ParsersMap _parsers;
137  DriversMap _drivers;
138  Catalog _catalog;
139  AllianceLibraries _libraries;
140  Library* _parentLibrary;
141  map<Name,RoutingGauge*> _routingGauges;
142  RoutingGauge* _defaultRoutingGauge;
143  map<Name,CellGauge*> _cellGauges;
144  CellGauge* _defaultCellGauge;
145 
146  // Internals - Constructors.
147  AllianceFramework ();
148  AllianceFramework ( const AllianceFramework& );
149  AllianceFramework& operator= ( const AllianceFramework& );
150  // Internals - Destructors.
151  ~AllianceFramework ();
152  // Internals - Methods.
153  bool _readLocate ( const string& file, unsigned int mode, bool isLib=false );
154  bool _writeLocate ( const string& file, unsigned int mode, bool isLib=false );
155  AllianceLibrary* _createLibrary ( const string& path, bool& hasCatalog );
156  };
157 
158  inline bool AllianceFramework::isPOWER ( const char* name ) { return _environment.isPOWER(name); }
159  inline bool AllianceFramework::isPOWER ( const string& name ) { return isPOWER(name.c_str()); }
160  inline bool AllianceFramework::isPOWER ( const Name& name ) { return isPOWER(getString(name)); }
161  inline bool AllianceFramework::isGROUND ( const char* name ) { return _environment.isGROUND(name); }
162  inline bool AllianceFramework::isGROUND ( const string& name ) { return isGROUND(name.c_str()); }
163  inline bool AllianceFramework::isGROUND ( const Name& name ) { return isGROUND(getString(name)); }
164  inline bool AllianceFramework::isCLOCK ( const char* name ) { return _environment.isCLOCK(name); }
165  inline bool AllianceFramework::isCLOCK ( const string& name ) { return isCLOCK(name.c_str()); }
166  inline bool AllianceFramework::isCLOCK ( const Name& name ) { return isCLOCK(getString(name)); }
167  inline bool AllianceFramework::isBLOCKAGE ( const char* name ) { return _environment.isBLOCKAGE(name); }
168  inline bool AllianceFramework::isBLOCKAGE ( const string& name ) { return isBLOCKAGE(name.c_str()); }
169  inline bool AllianceFramework::isBLOCKAGE ( const Name& name ) { return isBLOCKAGE(getString(name)); }
170  inline bool AllianceFramework::isBLOCKAGE ( const Net* net ) { return isBLOCKAGE(net->getName()); }
171  inline bool AllianceFramework::isPad ( const char* name ) { return _environment.isPad(name); }
172  inline bool AllianceFramework::isPad ( const string& name ) { return isPad(name.c_str()); }
173  inline bool AllianceFramework::isPad ( const Name& name ) { return isPad(getString(name)); }
174  inline bool AllianceFramework::isPad ( const Cell* cell ) { return isPad(cell->getName()); }
175  inline Environment* AllianceFramework::getEnvironment () { return &_environment; }
176  inline Catalog* AllianceFramework::getCatalog () { return &_catalog; }
178  () const { return _parentLibraryName; }
179  inline Library* AllianceFramework::getParentLibrary () { return _parentLibrary; }
180  inline const AllianceLibraries&
181  AllianceFramework::getAllianceLibraries () const { return _libraries; }
182 // TEMPORARY.
184  () const { return "CALU1"; }
185  inline string AllianceFramework::_getTypeName () const { return "AllianceFramework"; }
186 
187 
188  class JsonAllianceFramework : public JsonObject {
189  public:
190  static void initialize ();
191  JsonAllianceFramework( unsigned long );
192  virtual ~JsonAllianceFramework();
193  virtual string getTypeName () const;
194  virtual JsonAllianceFramework* clone ( unsigned long ) const;
195  virtual void toData ( JsonStack& );
196  private:
197  std::string _defaultRoutingGauge;
198  std::string _defaultCellGauge;
199  };
200 
201 
202 } // CRL namespace.
203 
204 
205 INSPECTOR_P_SUPPORT(CRL::AllianceFramework);
206 
207 #endif // CRL_ALLIANCE_FRAMEWORK_H
bool isBLOCKAGE(const char *name) const
Library * getParentLibrary()
Definition: AllianceFramework.h:179
bool isCLOCK(const char *name) const
@@ -92,7 +92,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/AllianceLibrary_8h_source.html b/crlcore/doc/crlcore/html/AllianceLibrary_8h_source.html index 35b6f5a1..5b0345ed 100644 --- a/crlcore/doc/crlcore/html/AllianceLibrary_8h_source.html +++ b/crlcore/doc/crlcore/html/AllianceLibrary_8h_source.html @@ -59,7 +59,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/Banner_8h_source.html b/crlcore/doc/crlcore/html/Banner_8h_source.html index 887fc730..773b9d17 100644 --- a/crlcore/doc/crlcore/html/Banner_8h_source.html +++ b/crlcore/doc/crlcore/html/Banner_8h_source.html @@ -66,7 +66,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/Catalog_8h_source.html b/crlcore/doc/crlcore/html/Catalog_8h_source.html index 3424e139..05565129 100644 --- a/crlcore/doc/crlcore/html/Catalog_8h_source.html +++ b/crlcore/doc/crlcore/html/Catalog_8h_source.html @@ -44,86 +44,86 @@ $(function() {
Catalog.h
-
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/Catalog.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_CATALOG_H
18 #define CRL_CATALOG_H
19 
20 #include <string>
21 #include <map>
22 #include "hurricane/Name.h"
23 #include "hurricane/Property.h"
24 #include "hurricane/Slot.h"
25 
26 namespace Hurricane {
27  class Cell;
28  class Library;
29 }
30 
31 
32 namespace CRL {
33 
34 
35  using std::string;
36  using std::map;
39  using Hurricane::_TName;
40  using Hurricane::Name;
41  using Hurricane::Record;
43  using Hurricane::DBo;
44  using Hurricane::Cell;
45  using Hurricane::Library;
46  using Hurricane::Property;
47 
48 
49  extern const char* MissingStateProperty;
50 
51 
52 // -------------------------------------------------------------------
53 // Class : "CRL::Catalog".
54 
55 
56  class Catalog {
57 
58  public:
59  class State;
60  public:
61  inline Catalog ();
62  ~Catalog ();
63  State* getState ( const Name& name, bool add=false );
64  void mergeState ( const Name& name, const State& other );
65  bool deleteState ( const Name& name );
66  void clear ();
67  bool loadFromFile ( const string& path, Library* library );
68  inline map<Name,State*>* getStates ();
69  string _getPrint () const;
70  inline string _getTypeName () const;
71  string _getString () const;
72  Record* _getRecord () const;
73 
74  public:
75  // Sub-Class: State.
76  class State {
77  public:
78  // Flags Constants.
79  enum Flags { FlattenLeaf = 1 << 0
80  , Feed = 1 << 1
81  , Pad = 1 << 2
82  , GDS = 1 << 3
83  , Delete = 1 << 4
84  , Logical = 1 << 5
85  , Physical = 1 << 6
86  , InMemory = 1 << 7
87  , Foreign = 1 << 8
89  };
90  // Constructors.
91  inline State ();
92  ~State ();
93  // Predicates.
94  inline bool isFlattenLeaf () const;
95  inline bool isFeed () const;
96  inline bool isPad () const;
97  inline bool isGds () const;
98  inline bool isDelete () const;
99  inline bool isPhysical () const;
100  inline bool isLogical () const;
101  inline bool isInMemory () const;
102  // Flags management.
103  inline unsigned int getFlags ( unsigned int mask=(unsigned int)-1 ) const;
104  inline bool setFlags ( unsigned int mask, bool value );
105  inline bool setFlattenLeaf ( bool value );
106  inline bool setFeed ( bool value );
107  inline bool setPad ( bool value );
108  inline bool setGds ( bool value );
109  inline bool setDelete ( bool value );
110  inline bool setPhysical ( bool value );
111  inline bool setLogical ( bool value );
112  inline bool setInMemory ( bool value );
113  // Accessors.
114  inline Cell* getCell () const;
115  inline Library* getLibrary () const;
116  inline unsigned int getDepth () const;
117  // Modifiers.
118  inline void merge ( const State& other );
119  Cell* setCell ( Cell* cell );
120  inline Library* setLibrary ( Library* library );
121  inline void setDepth ( unsigned int depth );
122  // Hurricane Management.
123  void toJson ( JsonWriter* w ) const;
124  inline string _getTypeName () const;
125  string _getString () const;
126  Record* _getRecord () const;
127 
128  private:
129  // Internal - Attributes.
130  unsigned int _flags;
131  unsigned int _depth;
132  Cell* _cell;
133  Library* _library;
134 
135  // Json Property.
136  public:
137  class JsonState : public JsonObject {
138  public:
139  static void initialize ();
140  JsonState ( unsigned long flags );
141  virtual string getTypeName () const;
142  virtual JsonState* clone ( unsigned long ) const;
143  virtual void toData ( JsonStack& );
144  };
145  };
146 
147  private:
148  // Attributes.
149  map<Name,State*> _states;
150 
151  private:
152  Catalog ( const Catalog& );
153  static bool readLine ( const string& s, string& name, State* state );
154 
155  };
156 
157 
158 // -------------------------------------------------------------------
159 // Class : "CRL::CatalogProperty".
160 
161  class CatalogProperty : public PrivateProperty {
162 
163  public:
164  static Name _name;
165  public:
166  static CatalogProperty* create ( Catalog::State* state );
167  static Name getPropertyName ();
168  virtual Name getName () const;
169  inline Catalog::State* getState () const;
170  inline void setState ( Catalog::State* state );
171  virtual void onReleasedBy ( DBo* owner );
172  virtual bool hasJson () const;
173  virtual void toJson ( JsonWriter* w, const DBo* ) const;
174  virtual string _getTypeName () const;
175  virtual string _getString () const;
176  virtual Record* _getRecord () const;
177 
178  protected:
179  // Attributes.
180  Catalog::State* _state;
181 
182  protected:
183  // Constructor.
184  inline CatalogProperty ( Catalog::State* state );
185  };
186 
187 
188 // -------------------------------------------------------------------
189 // Class : "CRL::JsonCatalogProperty".
190 
191  class JsonCatalogProperty : public JsonObject {
192  public:
193  static void initialize ();
194  JsonCatalogProperty ( unsigned long );
195  virtual string getTypeName () const;
196  virtual JsonCatalogProperty* clone ( unsigned long ) const;
197  virtual void toData ( JsonStack& );
198  };
199 
200 
201 // -------------------------------------------------------------------
202 // Inline Functions.
203 
204  inline Catalog::State::State () : _flags(0), _depth(1), _cell(NULL), _library(NULL) { }
205  inline bool Catalog::State::isFlattenLeaf () const { return (_flags&FlattenLeaf)?1:0; }
206  inline bool Catalog::State::isFeed () const { return (_flags&Feed )?1:0; }
207  inline bool Catalog::State::isPad () const { return (_flags&Pad )?1:0; }
208  inline bool Catalog::State::isGds () const { return (_flags&GDS )?1:0; }
209  inline bool Catalog::State::isDelete () const { return (_flags&Delete )?1:0; }
210  inline bool Catalog::State::isPhysical () const { return (_flags&Physical )?1:0; }
211  inline bool Catalog::State::isLogical () const { return (_flags&Logical )?1:0; }
212  inline bool Catalog::State::isInMemory () const { return (_flags&InMemory )?1:0; }
213  inline unsigned int Catalog::State::getFlags ( unsigned int mask ) const { return ( _flags & mask ); }
214  inline bool Catalog::State::setFlags ( unsigned int mask, bool value ) {
215  if (value) { _flags |= mask; }
216  else { _flags &= ~mask; }
217  return ((_flags&mask) ? true : false);
218  }
219  inline bool Catalog::State::setFlattenLeaf ( bool value ) { return setFlags(FlattenLeaf,value); }
220  inline bool Catalog::State::setFeed ( bool value ) { return setFlags(Feed ,value); }
221  inline bool Catalog::State::setPad ( bool value ) { return setFlags(Pad ,value); }
222  inline bool Catalog::State::setGds ( bool value ) { return setFlags(GDS ,value); }
223  inline bool Catalog::State::setDelete ( bool value ) { return setFlags(Delete ,value); }
224  inline bool Catalog::State::setPhysical ( bool value ) { return setFlags(Physical ,value); }
225  inline bool Catalog::State::setLogical ( bool value ) { return setFlags(Logical ,value); }
226  inline bool Catalog::State::setInMemory ( bool value ) { return setFlags(InMemory ,value); }
227  inline Library* Catalog::State::setLibrary ( Library* library ) { return _library = library; }
228  inline void Catalog::State::setDepth ( unsigned int depth ) { _depth = depth; }
229  inline Cell* Catalog::State::getCell () const { return _cell; }
230  inline Library* Catalog::State::getLibrary () const { return _library; }
231  inline unsigned int Catalog::State::getDepth () const { return _depth; }
232  inline string Catalog::State::_getTypeName () const { return _TName("Catalog::State"); }
233 
234  inline Catalog::Catalog () : _states() {}
235  inline map<Name,Catalog::State*>*
236  Catalog::getStates () { return &_states; }
237  inline string Catalog::_getTypeName () const { return _TName("Catalog"); }
238 
239  inline CatalogProperty::CatalogProperty ( Catalog::State* state ) : PrivateProperty(), _state(state) {}
240  inline Catalog::State* CatalogProperty::getState () const { return _state; }
241  inline void CatalogProperty::setState ( Catalog::State* state ) { _state = state; }
242 
243 
244 // -------------------------------------------------------------------
245 // Class : "CRL::CatalogExtension".
246 
247 
249  public:
250  static Catalog::State* get ( const Cell* );
251  public:
252  static inline bool isFlattenLeaf ( const Cell* );
253  static inline bool isFeed ( const Cell* );
254  static inline bool isPad ( const Cell* );
255  static inline bool isGds ( const Cell* );
256  static inline bool isDelete ( const Cell* );
257  static inline bool isPhysical ( const Cell* );
258  static inline bool isLogical ( const Cell* );
259  // Flags management.
260  static inline unsigned int getFlags ( const Cell*, unsigned int mask=(unsigned int)-1 );
261  static inline bool setFlags ( const Cell*, unsigned int mask, bool value );
262  static inline bool setFlattenLeaf ( const Cell*, bool value );
263  static inline bool setFeed ( const Cell*, bool value );
264  static inline bool setPad ( const Cell*, bool value );
265  static inline bool setGds ( const Cell*, bool value );
266  static inline bool setDelete ( const Cell*, bool value );
267  static inline bool setPhysical ( const Cell*, bool value );
268  static inline bool setLogical ( const Cell*, bool value );
269  // Accessors.
270  static inline Library* getLibrary ( const Cell* );
271  static inline unsigned int getDepth ( const Cell* );
272  // Modifiers.
273  static inline Library* setLibrary ( const Cell*, Library* library );
274  static inline void setDepth ( const Cell*, unsigned int depth );
275  private:
276  static const Cell* _owner;
277  static Catalog::State* _cache;
278  };
279 
280 
281  inline bool CatalogExtension::isFlattenLeaf ( const Cell* cell )
282  {
283  Catalog::State* state = get(cell);
284  return (state == NULL) ? false : state->isFlattenLeaf();
285  }
286 
287 
288  inline bool CatalogExtension::isFeed ( const Cell* cell )
289  {
290  Catalog::State* state = get(cell);
291  return (state == NULL) ? false : state->isFeed();
292  }
293 
294 
295  inline bool CatalogExtension::isGds ( const Cell* cell )
296  {
297  Catalog::State* state = get(cell);
298  return (state == NULL) ? false : state->isGds();
299  }
300 
301 
302  inline bool CatalogExtension::isPad ( const Cell* cell )
303  {
304  Catalog::State* state = get(cell);
305  return (state == NULL) ? false : state->isPad();
306  }
307 
308 
309  inline bool CatalogExtension::isDelete ( const Cell* cell )
310  {
311  Catalog::State* state = get(cell);
312  return (state == NULL) ? false : state->isDelete();
313  }
314 
315 
316  inline bool CatalogExtension::isPhysical ( const Cell* cell )
317  {
318  Catalog::State* state = get(cell);
319  return (state == NULL) ? false : state->isPhysical();
320  }
321 
322 
323  inline bool CatalogExtension::isLogical ( const Cell* cell )
324  {
325  Catalog::State* state = get(cell);
326  return (state == NULL) ? false : state->isLogical();
327  }
328 
329 
330  inline unsigned int CatalogExtension::getFlags ( const Cell* cell, unsigned int mask )
331  {
332  Catalog::State* state = get(cell);
333  return (state == NULL) ? 0 : state->getFlags();
334  }
335 
336 
337  inline bool CatalogExtension::setFlags ( const Cell* cell, unsigned int mask, bool value )
338  {
339  Catalog::State* state = get(cell);
340  return (state == NULL) ? false : state->setFlags(mask,value);
341  }
342 
343 
344  inline bool CatalogExtension::setFlattenLeaf ( const Cell* cell, bool value )
345  {
346  Catalog::State* state = get(cell);
347  return (state == NULL) ? false : state->setFlattenLeaf(value);
348  }
349 
350 
351  inline bool CatalogExtension::setFeed ( const Cell* cell, bool value )
352  {
353  Catalog::State* state = get(cell);
354  return (state == NULL) ? false : state->setFeed(value);
355  }
356 
357 
358  inline bool CatalogExtension::setPad ( const Cell* cell, bool value )
359  {
360  Catalog::State* state = get(cell);
361  return (state == NULL) ? false : state->setPad(value);
362  }
363 
364 
365  inline bool CatalogExtension::setGds ( const Cell* cell, bool value )
366  {
367  Catalog::State* state = get(cell);
368  return (state == NULL) ? false : state->setGds(value);
369  }
370 
371 
372  inline bool CatalogExtension::setDelete ( const Cell* cell, bool value )
373  {
374  Catalog::State* state = get(cell);
375  return (state == NULL) ? false : state->setDelete(value);
376  }
377 
378 
379  inline bool CatalogExtension::setPhysical ( const Cell* cell, bool value )
380  {
381  Catalog::State* state = get(cell);
382  return (state == NULL) ? false : state->setPhysical(value);
383  }
384 
385 
386  inline bool CatalogExtension::setLogical ( const Cell* cell, bool value )
387  {
388  Catalog::State* state = get(cell);
389  return (state == NULL) ? false : state->setLogical(value);
390  }
391 
392 
393  inline Library* CatalogExtension::getLibrary ( const Cell* cell )
394  {
395  Catalog::State* state = get(cell);
396  return (state == NULL) ? NULL : state->getLibrary();
397  }
398 
399 
400  inline unsigned int CatalogExtension::getDepth ( const Cell* cell )
401  {
402  Catalog::State* state = get(cell);
403  return (state == NULL) ? 0 : state->getDepth();
404  }
405 
406 
407  inline Library* CatalogExtension::setLibrary ( const Cell* cell, Library* library )
408  {
409  Catalog::State* state = get(cell);
410  return (state == NULL) ? NULL : state->setLibrary(library);
411  }
412 
413 
414  inline void CatalogExtension::setDepth ( const Cell* cell, unsigned int depth )
415  {
416  Catalog::State* state = get(cell);
417  if ( state == NULL ) state->setDepth(depth);
418  }
419 
420 
421 } // End of CRL namespace.
422 
423 
424 
425 
426 // x-----------------------------------------------------------------x
427 // | Functions Overload for Hurricane Management |
428 // x-----------------------------------------------------------------x
429 
430 
431 inline std::string getPrint ( const CRL::Catalog &CATAL ) { return CATAL._getPrint(); }
432 
433 INSPECTOR_P_SUPPORT(CRL::Catalog);
434 INSPECTOR_P_SUPPORT(CRL::Catalog::State);
435 
436 
437 #endif // CRL_CATALOG_H
unsigned int getFlags(unsigned int mask=(unsigned int) -1) const
Definition: Catalog.h:213
+
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/Catalog.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_CATALOG_H
18 #define CRL_CATALOG_H
19 
20 #include <string>
21 #include <map>
22 #include "hurricane/Name.h"
23 #include "hurricane/Property.h"
24 #include "hurricane/Slot.h"
25 
26 namespace Hurricane {
27  class Cell;
28  class Library;
29 }
30 
31 
32 namespace CRL {
33 
34 
35  using std::string;
36  using std::map;
39  using Hurricane::_TName;
40  using Hurricane::Name;
41  using Hurricane::Record;
43  using Hurricane::DBo;
44  using Hurricane::Cell;
45  using Hurricane::Library;
46  using Hurricane::Property;
47 
48 
49  extern const char* MissingStateProperty;
50 
51 
52 // -------------------------------------------------------------------
53 // Class : "CRL::Catalog".
54 
55 
56  class Catalog {
57 
58  public:
59  class State;
60  public:
61  inline Catalog ();
62  ~Catalog ();
63  State* getState ( const Name& name, bool add=false );
64  void mergeState ( const Name& name, const State& other );
65  bool deleteState ( const Name& name );
66  void clear ();
67  bool loadFromFile ( const string& path, Library* library );
68  inline map<Name,State*>* getStates ();
69  string _getPrint () const;
70  inline string _getTypeName () const;
71  string _getString () const;
72  Record* _getRecord () const;
73 
74  public:
75  // Sub-Class: State.
76  class State {
77  public:
78  // Flags Constants.
79  enum Flags { FlattenLeaf = 1 << 0
80  , Feed = 1 << 1
81  , Pad = 1 << 2
82  , GDS = 1 << 3
83  , Delete = 1 << 4
84  , Logical = 1 << 5
85  , Physical = 1 << 6
86  , InMemory = 1 << 7
87  , Foreign = 1 << 8
88  , VstUseConcat = 1 << 9
90  };
91  // Constructors.
92  inline State ();
93  ~State ();
94  // Predicates.
95  inline bool isFlattenLeaf () const;
96  inline bool isFeed () const;
97  inline bool isPad () const;
98  inline bool isGds () const;
99  inline bool isDelete () const;
100  inline bool isPhysical () const;
101  inline bool isLogical () const;
102  inline bool isInMemory () const;
103  // Flags management.
104  inline unsigned int getFlags ( unsigned int mask=(unsigned int)-1 ) const;
105  inline bool setFlags ( unsigned int mask, bool value );
106  inline bool setFlattenLeaf ( bool value );
107  inline bool setFeed ( bool value );
108  inline bool setPad ( bool value );
109  inline bool setGds ( bool value );
110  inline bool setDelete ( bool value );
111  inline bool setPhysical ( bool value );
112  inline bool setLogical ( bool value );
113  inline bool setInMemory ( bool value );
114  // Accessors.
115  inline Cell* getCell () const;
116  inline Library* getLibrary () const;
117  inline unsigned int getDepth () const;
118  // Modifiers.
119  inline void merge ( const State& other );
120  Cell* setCell ( Cell* cell );
121  inline Library* setLibrary ( Library* library );
122  inline void setDepth ( unsigned int depth );
123  // Hurricane Management.
124  void toJson ( JsonWriter* w ) const;
125  inline string _getTypeName () const;
126  string _getString () const;
127  Record* _getRecord () const;
128 
129  private:
130  // Internal - Attributes.
131  unsigned int _flags;
132  unsigned int _depth;
133  Cell* _cell;
134  Library* _library;
135 
136  // Json Property.
137  public:
138  class JsonState : public JsonObject {
139  public:
140  static void initialize ();
141  JsonState ( unsigned long flags );
142  virtual string getTypeName () const;
143  virtual JsonState* clone ( unsigned long ) const;
144  virtual void toData ( JsonStack& );
145  };
146  };
147 
148  private:
149  // Attributes.
150  map<Name,State*> _states;
151 
152  private:
153  Catalog ( const Catalog& );
154  static bool readLine ( const string& s, string& name, State* state );
155 
156  };
157 
158 
159 // -------------------------------------------------------------------
160 // Class : "CRL::CatalogProperty".
161 
162  class CatalogProperty : public PrivateProperty {
163 
164  public:
165  static Name _name;
166  public:
167  static CatalogProperty* create ( Catalog::State* state );
168  static Name getPropertyName ();
169  virtual Name getName () const;
170  inline Catalog::State* getState () const;
171  inline void setState ( Catalog::State* state );
172  virtual void onReleasedBy ( DBo* owner );
173  virtual bool hasJson () const;
174  virtual void toJson ( JsonWriter* w, const DBo* ) const;
175  virtual string _getTypeName () const;
176  virtual string _getString () const;
177  virtual Record* _getRecord () const;
178 
179  protected:
180  // Attributes.
181  Catalog::State* _state;
182 
183  protected:
184  // Constructor.
185  inline CatalogProperty ( Catalog::State* state );
186  };
187 
188 
189 // -------------------------------------------------------------------
190 // Class : "CRL::JsonCatalogProperty".
191 
192  class JsonCatalogProperty : public JsonObject {
193  public:
194  static void initialize ();
195  JsonCatalogProperty ( unsigned long );
196  virtual string getTypeName () const;
197  virtual JsonCatalogProperty* clone ( unsigned long ) const;
198  virtual void toData ( JsonStack& );
199  };
200 
201 
202 // -------------------------------------------------------------------
203 // Inline Functions.
204 
205  inline Catalog::State::State () : _flags(0), _depth(1), _cell(NULL), _library(NULL) { }
206  inline bool Catalog::State::isFlattenLeaf () const { return (_flags&FlattenLeaf)?1:0; }
207  inline bool Catalog::State::isFeed () const { return (_flags&Feed )?1:0; }
208  inline bool Catalog::State::isPad () const { return (_flags&Pad )?1:0; }
209  inline bool Catalog::State::isGds () const { return (_flags&GDS )?1:0; }
210  inline bool Catalog::State::isDelete () const { return (_flags&Delete )?1:0; }
211  inline bool Catalog::State::isPhysical () const { return (_flags&Physical )?1:0; }
212  inline bool Catalog::State::isLogical () const { return (_flags&Logical )?1:0; }
213  inline bool Catalog::State::isInMemory () const { return (_flags&InMemory )?1:0; }
214  inline unsigned int Catalog::State::getFlags ( unsigned int mask ) const { return ( _flags & mask ); }
215  inline bool Catalog::State::setFlags ( unsigned int mask, bool value ) {
216  if (value) { _flags |= mask; }
217  else { _flags &= ~mask; }
218  return ((_flags&mask) ? true : false);
219  }
220  inline bool Catalog::State::setFlattenLeaf ( bool value ) { return setFlags(FlattenLeaf,value); }
221  inline bool Catalog::State::setFeed ( bool value ) { return setFlags(Feed ,value); }
222  inline bool Catalog::State::setPad ( bool value ) { return setFlags(Pad ,value); }
223  inline bool Catalog::State::setGds ( bool value ) { return setFlags(GDS ,value); }
224  inline bool Catalog::State::setDelete ( bool value ) { return setFlags(Delete ,value); }
225  inline bool Catalog::State::setPhysical ( bool value ) { return setFlags(Physical ,value); }
226  inline bool Catalog::State::setLogical ( bool value ) { return setFlags(Logical ,value); }
227  inline bool Catalog::State::setInMemory ( bool value ) { return setFlags(InMemory ,value); }
228  inline Library* Catalog::State::setLibrary ( Library* library ) { return _library = library; }
229  inline void Catalog::State::setDepth ( unsigned int depth ) { _depth = depth; }
230  inline Cell* Catalog::State::getCell () const { return _cell; }
231  inline Library* Catalog::State::getLibrary () const { return _library; }
232  inline unsigned int Catalog::State::getDepth () const { return _depth; }
233  inline string Catalog::State::_getTypeName () const { return _TName("Catalog::State"); }
234 
235  inline Catalog::Catalog () : _states() {}
236  inline map<Name,Catalog::State*>*
237  Catalog::getStates () { return &_states; }
238  inline string Catalog::_getTypeName () const { return _TName("Catalog"); }
239 
240  inline CatalogProperty::CatalogProperty ( Catalog::State* state ) : PrivateProperty(), _state(state) {}
241  inline Catalog::State* CatalogProperty::getState () const { return _state; }
242  inline void CatalogProperty::setState ( Catalog::State* state ) { _state = state; }
243 
244 
245 // -------------------------------------------------------------------
246 // Class : "CRL::CatalogExtension".
247 
248 
250  public:
251  static Catalog::State* get ( const Cell* );
252  public:
253  static inline bool isFlattenLeaf ( const Cell* );
254  static inline bool isFeed ( const Cell* );
255  static inline bool isPad ( const Cell* );
256  static inline bool isGds ( const Cell* );
257  static inline bool isDelete ( const Cell* );
258  static inline bool isPhysical ( const Cell* );
259  static inline bool isLogical ( const Cell* );
260  // Flags management.
261  static inline unsigned int getFlags ( const Cell*, unsigned int mask=(unsigned int)-1 );
262  static inline bool setFlags ( const Cell*, unsigned int mask, bool value );
263  static inline bool setFlattenLeaf ( const Cell*, bool value );
264  static inline bool setFeed ( const Cell*, bool value );
265  static inline bool setPad ( const Cell*, bool value );
266  static inline bool setGds ( const Cell*, bool value );
267  static inline bool setDelete ( const Cell*, bool value );
268  static inline bool setPhysical ( const Cell*, bool value );
269  static inline bool setLogical ( const Cell*, bool value );
270  // Accessors.
271  static inline Library* getLibrary ( const Cell* );
272  static inline unsigned int getDepth ( const Cell* );
273  // Modifiers.
274  static inline Library* setLibrary ( const Cell*, Library* library );
275  static inline void setDepth ( const Cell*, unsigned int depth );
276  private:
277  static const Cell* _owner;
278  static Catalog::State* _cache;
279  };
280 
281 
282  inline bool CatalogExtension::isFlattenLeaf ( const Cell* cell )
283  {
284  Catalog::State* state = get(cell);
285  return (state == NULL) ? false : state->isFlattenLeaf();
286  }
287 
288 
289  inline bool CatalogExtension::isFeed ( const Cell* cell )
290  {
291  Catalog::State* state = get(cell);
292  return (state == NULL) ? false : state->isFeed();
293  }
294 
295 
296  inline bool CatalogExtension::isGds ( const Cell* cell )
297  {
298  Catalog::State* state = get(cell);
299  return (state == NULL) ? false : state->isGds();
300  }
301 
302 
303  inline bool CatalogExtension::isPad ( const Cell* cell )
304  {
305  Catalog::State* state = get(cell);
306  return (state == NULL) ? false : state->isPad();
307  }
308 
309 
310  inline bool CatalogExtension::isDelete ( const Cell* cell )
311  {
312  Catalog::State* state = get(cell);
313  return (state == NULL) ? false : state->isDelete();
314  }
315 
316 
317  inline bool CatalogExtension::isPhysical ( const Cell* cell )
318  {
319  Catalog::State* state = get(cell);
320  return (state == NULL) ? false : state->isPhysical();
321  }
322 
323 
324  inline bool CatalogExtension::isLogical ( const Cell* cell )
325  {
326  Catalog::State* state = get(cell);
327  return (state == NULL) ? false : state->isLogical();
328  }
329 
330 
331  inline unsigned int CatalogExtension::getFlags ( const Cell* cell, unsigned int mask )
332  {
333  Catalog::State* state = get(cell);
334  return (state == NULL) ? 0 : state->getFlags();
335  }
336 
337 
338  inline bool CatalogExtension::setFlags ( const Cell* cell, unsigned int mask, bool value )
339  {
340  Catalog::State* state = get(cell);
341  return (state == NULL) ? false : state->setFlags(mask,value);
342  }
343 
344 
345  inline bool CatalogExtension::setFlattenLeaf ( const Cell* cell, bool value )
346  {
347  Catalog::State* state = get(cell);
348  return (state == NULL) ? false : state->setFlattenLeaf(value);
349  }
350 
351 
352  inline bool CatalogExtension::setFeed ( const Cell* cell, bool value )
353  {
354  Catalog::State* state = get(cell);
355  return (state == NULL) ? false : state->setFeed(value);
356  }
357 
358 
359  inline bool CatalogExtension::setPad ( const Cell* cell, bool value )
360  {
361  Catalog::State* state = get(cell);
362  return (state == NULL) ? false : state->setPad(value);
363  }
364 
365 
366  inline bool CatalogExtension::setGds ( const Cell* cell, bool value )
367  {
368  Catalog::State* state = get(cell);
369  return (state == NULL) ? false : state->setGds(value);
370  }
371 
372 
373  inline bool CatalogExtension::setDelete ( const Cell* cell, bool value )
374  {
375  Catalog::State* state = get(cell);
376  return (state == NULL) ? false : state->setDelete(value);
377  }
378 
379 
380  inline bool CatalogExtension::setPhysical ( const Cell* cell, bool value )
381  {
382  Catalog::State* state = get(cell);
383  return (state == NULL) ? false : state->setPhysical(value);
384  }
385 
386 
387  inline bool CatalogExtension::setLogical ( const Cell* cell, bool value )
388  {
389  Catalog::State* state = get(cell);
390  return (state == NULL) ? false : state->setLogical(value);
391  }
392 
393 
394  inline Library* CatalogExtension::getLibrary ( const Cell* cell )
395  {
396  Catalog::State* state = get(cell);
397  return (state == NULL) ? NULL : state->getLibrary();
398  }
399 
400 
401  inline unsigned int CatalogExtension::getDepth ( const Cell* cell )
402  {
403  Catalog::State* state = get(cell);
404  return (state == NULL) ? 0 : state->getDepth();
405  }
406 
407 
408  inline Library* CatalogExtension::setLibrary ( const Cell* cell, Library* library )
409  {
410  Catalog::State* state = get(cell);
411  return (state == NULL) ? NULL : state->setLibrary(library);
412  }
413 
414 
415  inline void CatalogExtension::setDepth ( const Cell* cell, unsigned int depth )
416  {
417  Catalog::State* state = get(cell);
418  if ( state == NULL ) state->setDepth(depth);
419  }
420 
421 
422 } // End of CRL namespace.
423 
424 
425 
426 
427 // x-----------------------------------------------------------------x
428 // | Functions Overload for Hurricane Management |
429 // x-----------------------------------------------------------------x
430 
431 
432 inline std::string getPrint ( const CRL::Catalog &CATAL ) { return CATAL._getPrint(); }
433 
434 INSPECTOR_P_SUPPORT(CRL::Catalog);
435 INSPECTOR_P_SUPPORT(CRL::Catalog::State);
436 
437 
438 #endif // CRL_CATALOG_H
unsigned int getFlags(unsigned int mask=(unsigned int) -1) const
Definition: Catalog.h:214
-
static bool setPad(const Cell *, bool value)
Definition: Catalog.h:358
+
static bool setPad(const Cell *, bool value)
Definition: Catalog.h:359
An entry to store the Cell State in the Catalog.
Definition: Catalog.h:76
Definition: Catalog.h:86
-
static bool setLogical(const Cell *, bool value)
Definition: Catalog.h:386
+
static bool setLogical(const Cell *, bool value)
Definition: Catalog.h:387
Definition: Catalog.h:79
-
bool setPad(bool value)
Definition: Catalog.h:221
-
static bool isGds(const Cell *)
Definition: Catalog.h:295
-
bool setGds(bool value)
Definition: Catalog.h:222
+
bool setPad(bool value)
Definition: Catalog.h:222
+
static bool isGds(const Cell *)
Definition: Catalog.h:296
+
bool setGds(bool value)
Definition: Catalog.h:223
Cell * setCell(Cell *cell)
-
Catalog()
Definition: Catalog.h:234
-
static bool isDelete(const Cell *)
Definition: Catalog.h:309
-
static bool isLogical(const Cell *)
Definition: Catalog.h:323
-
static bool setFeed(const Cell *, bool value)
Definition: Catalog.h:351
-
static bool setFlattenLeaf(const Cell *, bool value)
Definition: Catalog.h:344
+
Catalog()
Definition: Catalog.h:235
+
static bool isDelete(const Cell *)
Definition: Catalog.h:310
+
static bool isLogical(const Cell *)
Definition: Catalog.h:324
+
static bool setFeed(const Cell *, bool value)
Definition: Catalog.h:352
+
static bool setFlattenLeaf(const Cell *, bool value)
Definition: Catalog.h:345
-
bool isLogical() const
Definition: Catalog.h:211
+
bool isLogical() const
Definition: Catalog.h:212
void merge(const State &other)
-
bool isPhysical() const
Definition: Catalog.h:210
-
bool isDelete() const
Definition: Catalog.h:209
+
bool isPhysical() const
Definition: Catalog.h:211
+
bool isDelete() const
Definition: Catalog.h:210
-
static unsigned int getFlags(const Cell *, unsigned int mask=(unsigned int) -1)
Definition: Catalog.h:330
-
Library * setLibrary(Library *library)
Definition: Catalog.h:227
+
static unsigned int getFlags(const Cell *, unsigned int mask=(unsigned int) -1)
Definition: Catalog.h:331
+
Library * setLibrary(Library *library)
Definition: Catalog.h:228
Definition: Catalog.h:85
-
Definition: Catalog.h:88
-
bool setLogical(bool value)
Definition: Catalog.h:225
-
static bool setGds(const Cell *, bool value)
Definition: Catalog.h:365
+
Definition: Catalog.h:89
+
bool setLogical(bool value)
Definition: Catalog.h:226
+
static bool setGds(const Cell *, bool value)
Definition: Catalog.h:366
Definition: Catalog.h:83
bool deleteState(const Name &name)
void mergeState(const Name &name, const State &other)
-
bool setFeed(bool value)
Definition: Catalog.h:220
-
Library * getLibrary() const
Definition: Catalog.h:230
+
bool setFeed(bool value)
Definition: Catalog.h:221
+
Library * getLibrary() const
Definition: Catalog.h:231
Definition: Catalog.h:80
-
Cell * getCell() const
Definition: Catalog.h:229
-
bool setFlags(unsigned int mask, bool value)
Definition: Catalog.h:214
+
Cell * getCell() const
Definition: Catalog.h:230
+
bool setFlags(unsigned int mask, bool value)
Definition: Catalog.h:215
-
map< Name, State * > * getStates()
Definition: Catalog.h:236
-
static bool isFeed(const Cell *)
Definition: Catalog.h:288
+
map< Name, State * > * getStates()
Definition: Catalog.h:237
+
static bool isFeed(const Cell *)
Definition: Catalog.h:289
Definition: Catalog.h:81
-
static Library * getLibrary(const Cell *)
Definition: Catalog.h:393
+
static Library * getLibrary(const Cell *)
Definition: Catalog.h:394
State * getState(const Name &name, bool add=false)
-
State()
Definition: Catalog.h:204
-
bool setFlattenLeaf(bool value)
Definition: Catalog.h:219
-
static bool isPad(const Cell *)
Definition: Catalog.h:302
+
State()
Definition: Catalog.h:205
+
bool setFlattenLeaf(bool value)
Definition: Catalog.h:220
+
static bool isPad(const Cell *)
Definition: Catalog.h:303
bool loadFromFile(const string &path, Library *library)
-
bool isFeed() const
Definition: Catalog.h:206
-
bool setDelete(bool value)
Definition: Catalog.h:223
-
static Library * setLibrary(const Cell *, Library *library)
Definition: Catalog.h:407
-
static bool setPhysical(const Cell *, bool value)
Definition: Catalog.h:379
+
bool isFeed() const
Definition: Catalog.h:207
+
bool setDelete(bool value)
Definition: Catalog.h:224
+
static Library * setLibrary(const Cell *, Library *library)
Definition: Catalog.h:408
+
static bool setPhysical(const Cell *, bool value)
Definition: Catalog.h:380
Definition: Catalog.h:84
-
bool isPad() const
Definition: Catalog.h:207
-
bool isFlattenLeaf() const
Definition: Catalog.h:205
+
bool isPad() const
Definition: Catalog.h:208
+
bool isFlattenLeaf() const
Definition: Catalog.h:206
A Registry to store Alliance Cell metadatas.
Definition: Catalog.h:56
Definition: Catalog.h:82
-
static bool setDelete(const Cell *, bool value)
Definition: Catalog.h:372
-
Wrapper to access a Hurricane::Cell Catalog::State.
Definition: Catalog.h:248
-
bool setPhysical(bool value)
Definition: Catalog.h:224
-
bool isGds() const
Definition: Catalog.h:208
-
static bool isPhysical(const Cell *)
Definition: Catalog.h:316
-
static unsigned int getDepth(const Cell *)
Definition: Catalog.h:400
+
static bool setDelete(const Cell *, bool value)
Definition: Catalog.h:373
+
Wrapper to access a Hurricane::Cell Catalog::State.
Definition: Catalog.h:249
+
bool setPhysical(bool value)
Definition: Catalog.h:225
+
bool isGds() const
Definition: Catalog.h:209
+
static bool isPhysical(const Cell *)
Definition: Catalog.h:317
+
static unsigned int getDepth(const Cell *)
Definition: Catalog.h:401
Flags
Definition: Catalog.h:79
-
static bool isFlattenLeaf(const Cell *)
Definition: Catalog.h:281
+
static bool isFlattenLeaf(const Cell *)
Definition: Catalog.h:282
The namespace of Coriolis Core.
Definition: Environment.h:26
-
unsigned int getDepth() const
Definition: Catalog.h:231
-
static bool setFlags(const Cell *, unsigned int mask, bool value)
Definition: Catalog.h:337
+
unsigned int getDepth() const
Definition: Catalog.h:232
+
static bool setFlags(const Cell *, unsigned int mask, bool value)
Definition: Catalog.h:338


- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/Environment_8h_source.html b/crlcore/doc/crlcore/html/Environment_8h_source.html index 4d0bf20b..e151eeb7 100644 --- a/crlcore/doc/crlcore/html/Environment_8h_source.html +++ b/crlcore/doc/crlcore/html/Environment_8h_source.html @@ -44,7 +44,7 @@ $(function() {
Environment.h
-
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/Environment.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_ENVIRONMENT_H
18 #define CRL_ENVIRONMENT_H
19 
20 #include <regex.h>
21 #include <string>
22 #include "hurricane/Commons.h"
23 #include "crlcore/SearchPath.h"
24 
25 
26 namespace CRL {
27 
30 
31 
32 // -------------------------------------------------------------------
33 // Class : "Environment".
34 
35  class Environment {
36  public:
37  enum AddMode { Append=1, Prepend=2, Replace=3 };
38  public:
39  // Internal: Static Methods.
40  static const char* getEnv ( const char* variable, const char* defaultValue );
41  // Constructors & destructors.
42  Environment ();
43  ~Environment ();
44  // Accessors.
45  inline const std::string& getCORIOLIS_TOP () const;
46  inline const std::string& getDisplayStyle () const;
47  inline long getSCALE_X () const;
48  inline const std::string& getDISPLAY () const;
49  inline const std::string& getIN_LO () const;
50  inline const std::string& getIN_PH () const;
51  inline const std::string& getOUT_LO () const;
52  inline const std::string& getOUT_PH () const;
53  inline const std::string& getPOWER () const;
54  inline const std::string& getGROUND () const;
55  inline const std::string& getCLOCK () const;
56  inline const std::string& getBLOCKAGE () const;
57  inline const std::string& getPad () const;
58  inline const std::string& getCATALOG () const;
59  inline SearchPath& getLIBRARIES ();
60  std::string getLIBRARYPath ( size_t i );
61  // Predicates.
62  bool isPOWER ( const char* name ) const;
63  bool isGROUND ( const char* name ) const;
64  bool isCLOCK ( const char* name ) const;
65  bool isBLOCKAGE ( const char* name ) const;
66  bool isPad ( const char* name ) const;
67  // Modifiers.
68  void validate () const;
69  inline void setDisplayStyle ( const char* );
70  inline void setSCALE_X ( long value );
71  inline void setDISPLAY ( const char* value );
72  inline void setIN_LO ( const char* value );
73  inline void setIN_PH ( const char* value );
74  inline void setOUT_LO ( const char* value );
75  inline void setOUT_PH ( const char* value );
76  void setPOWER ( const char* value );
77  void setGROUND ( const char* value );
78  void setCLOCK ( const char* value );
79  void setBLOCKAGE ( const char* value );
80  void setPad ( const char* value );
81  inline void setCATALOG ( const char* value );
82  inline void setWORKING_LIBRARY ( const char* value );
83  void addSYSTEM_LIBRARY ( const char* value, const char* libName, unsigned int mode=Append );
84  // Methods.
85  std::string getPrint () const;
86  void toJson ( JsonWriter* ) const;
87  inline std::string _getTypeName () const;
88  std::string _getString () const;
89  Record* _getRecord () const;
90  protected:
91  // Internal: Attributes.
92  std::string _CORIOLIS_TOP;
93  std::string _displayStyle;
94  long _SCALE_X;
95  std::string _DISPLAY;
96  std::string _IN_LO;
97  std::string _IN_PH;
98  std::string _OUT_LO;
99  std::string _OUT_PH;
100  std::string _POWER;
101  std::string _GROUND;
102  std::string _CLOCK;
103  std::string _BLOCKAGE;
104  std::string _pad;
105  std::string _CATALOG;
106  SearchPath _LIBRARIES;
107  regex_t _PowerRegex;
108  regex_t _GroundRegex;
109  regex_t _ClockRegex;
110  regex_t _BlockageRegex;
111  regex_t _padRegex;
112  bool _inConstructor;
113  private:
114  void _setRegex ( regex_t* regex, const std::string& pattern, const char* name );
115  };
116 
117 
118  // Inline Member Functions.
119  inline const std::string& Environment::getCORIOLIS_TOP () const { return _CORIOLIS_TOP; }
120  inline const std::string& Environment::getDisplayStyle () const { return _displayStyle; }
121  inline long Environment::getSCALE_X () const { return _SCALE_X; }
122  inline const std::string& Environment::getIN_LO () const { return _IN_LO; }
123  inline const std::string& Environment::getIN_PH () const { return _IN_PH; }
124  inline const std::string& Environment::getOUT_LO () const { return _OUT_LO; }
125  inline const std::string& Environment::getOUT_PH () const { return _OUT_PH; }
126  inline const std::string& Environment::getPOWER () const { return _POWER; }
127  inline const std::string& Environment::getGROUND () const { return _GROUND; }
128  inline const std::string& Environment::getCLOCK () const { return _CLOCK; }
129  inline const std::string& Environment::getBLOCKAGE () const { return _BLOCKAGE; }
130  inline const std::string& Environment::getPad () const { return _pad; }
131  inline const std::string& Environment::getCATALOG () const { return _CATALOG; }
132  inline SearchPath& Environment::getLIBRARIES () { return _LIBRARIES; }
133 
134  inline void Environment::setDisplayStyle ( const char* value ) { _displayStyle = value; }
135  inline void Environment::setSCALE_X ( long value ) { _SCALE_X = value; }
136  inline void Environment::setIN_LO ( const char* value ) { _IN_LO = value; }
137  inline void Environment::setIN_PH ( const char* value ) { _IN_PH = value; }
138  inline void Environment::setOUT_LO ( const char* value ) { _OUT_LO = value; }
139  inline void Environment::setOUT_PH ( const char* value ) { _OUT_PH = value; }
140  inline void Environment::setCATALOG ( const char* value ) { _CATALOG = value; }
141  inline void Environment::setWORKING_LIBRARY ( const char* value ) { _LIBRARIES.replace(value,"working",0); }
142  inline std::string Environment::_getTypeName () const { return "Environment"; }
143 
144 
145 // -------------------------------------------------------------------
146 // Class : "JsonEnvironment".
147 
148  class JsonEnvironment : public JsonObject {
149  public:
150  static void initialize ();
151  JsonEnvironment ( unsigned long flags );
152  virtual std::string getTypeName () const;
153  virtual JsonEnvironment* clone ( unsigned long flags ) const;
154  virtual void toData ( JsonStack& );
155  };
156 
157 
158 } // CRL namespace.
159 
160 
161 INSPECTOR_P_SUPPORT(CRL::Environment);
162 
163 
164 #endif // CRL_ENVIRONMENT_H
void setCATALOG(const char *value)
Definition: Environment.h:140
+
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/Environment.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_ENVIRONMENT_H
18 #define CRL_ENVIRONMENT_H
19 
20 #include <regex.h>
21 #include <string>
22 #include "hurricane/Commons.h"
23 #include "crlcore/SearchPath.h"
24 
25 
26 namespace CRL {
27 
30 
31 
32 // -------------------------------------------------------------------
33 // Class : "Environment".
34 
35  class Environment {
36  public:
37  enum AddMode { Append=1, Prepend=2, Replace=3 };
38  public:
39  // Internal: Static Methods.
40  static const char* getEnv ( const char* variable, const char* defaultValue );
41  // Constructors & destructors.
42  Environment ();
43  ~Environment ();
44  // Accessors.
45  inline const std::string& getCORIOLIS_TOP () const;
46  inline const std::string& getDisplayStyle () const;
47  inline long getSCALE_X () const;
48  inline const std::string& getDISPLAY () const;
49  inline const std::string& getIN_LO () const;
50  inline const std::string& getIN_PH () const;
51  inline const std::string& getOUT_LO () const;
52  inline const std::string& getOUT_PH () const;
53  inline const std::string& getPOWER () const;
54  inline const std::string& getGROUND () const;
55  inline const std::string& getCLOCK () const;
56  inline const std::string& getBLOCKAGE () const;
57  inline const std::string& getPad () const;
58  inline const std::string& getCATALOG () const;
59  inline SearchPath& getLIBRARIES ();
60  std::string getLIBRARYPath ( size_t i );
61  // Predicates.
62  bool isPOWER ( const char* name ) const;
63  bool isGROUND ( const char* name ) const;
64  bool isCLOCK ( const char* name ) const;
65  bool isBLOCKAGE ( const char* name ) const;
66  bool isPad ( const char* name ) const;
67  // Modifiers.
68  void validate () const;
69  inline void setDisplayStyle ( const char* );
70  inline void setSCALE_X ( long value );
71  inline void setDISPLAY ( const char* value );
72  inline void setIN_LO ( const char* value );
73  inline void setIN_PH ( const char* value );
74  inline void setOUT_LO ( const char* value );
75  inline void setOUT_PH ( const char* value );
76  void setPOWER ( const char* value );
77  void setGROUND ( const char* value );
78  void setCLOCK ( const char* value );
79  void setBLOCKAGE ( const char* value );
80  void setPad ( const char* value );
81  inline void setCATALOG ( const char* value );
82  void setWORKING_LIBRARY ( const char* value );
83  void addSYSTEM_LIBRARY ( const char* value, const char* libName, unsigned int mode=Append );
84  // Methods.
85  std::string getPrint () const;
86  void toJson ( JsonWriter* ) const;
87  inline std::string _getTypeName () const;
88  std::string _getString () const;
89  Record* _getRecord () const;
90  protected:
91  // Internal: Attributes.
92  std::string _CORIOLIS_TOP;
93  std::string _displayStyle;
94  long _SCALE_X;
95  std::string _DISPLAY;
96  std::string _IN_LO;
97  std::string _IN_PH;
98  std::string _OUT_LO;
99  std::string _OUT_PH;
100  std::string _POWER;
101  std::string _GROUND;
102  std::string _CLOCK;
103  std::string _BLOCKAGE;
104  std::string _pad;
105  std::string _CATALOG;
106  SearchPath _LIBRARIES;
107  regex_t _PowerRegex;
108  regex_t _GroundRegex;
109  regex_t _ClockRegex;
110  regex_t _BlockageRegex;
111  regex_t _padRegex;
112  bool _inConstructor;
113  private:
114  void _setRegex ( regex_t* regex, const std::string& pattern, const char* name );
115  };
116 
117 
118  // Inline Member Functions.
119  inline const std::string& Environment::getCORIOLIS_TOP () const { return _CORIOLIS_TOP; }
120  inline const std::string& Environment::getDisplayStyle () const { return _displayStyle; }
121  inline long Environment::getSCALE_X () const { return _SCALE_X; }
122  inline const std::string& Environment::getIN_LO () const { return _IN_LO; }
123  inline const std::string& Environment::getIN_PH () const { return _IN_PH; }
124  inline const std::string& Environment::getOUT_LO () const { return _OUT_LO; }
125  inline const std::string& Environment::getOUT_PH () const { return _OUT_PH; }
126  inline const std::string& Environment::getPOWER () const { return _POWER; }
127  inline const std::string& Environment::getGROUND () const { return _GROUND; }
128  inline const std::string& Environment::getCLOCK () const { return _CLOCK; }
129  inline const std::string& Environment::getBLOCKAGE () const { return _BLOCKAGE; }
130  inline const std::string& Environment::getPad () const { return _pad; }
131  inline const std::string& Environment::getCATALOG () const { return _CATALOG; }
132  inline SearchPath& Environment::getLIBRARIES () { return _LIBRARIES; }
133 
134  inline void Environment::setDisplayStyle ( const char* value ) { _displayStyle = value; }
135  inline void Environment::setSCALE_X ( long value ) { _SCALE_X = value; }
136  inline void Environment::setIN_LO ( const char* value ) { _IN_LO = value; }
137  inline void Environment::setIN_PH ( const char* value ) { _IN_PH = value; }
138  inline void Environment::setOUT_LO ( const char* value ) { _OUT_LO = value; }
139  inline void Environment::setOUT_PH ( const char* value ) { _OUT_PH = value; }
140  inline void Environment::setCATALOG ( const char* value ) { _CATALOG = value; }
141  inline std::string Environment::_getTypeName () const { return "Environment"; }
142 
143 
144 // -------------------------------------------------------------------
145 // Class : "JsonEnvironment".
146 
147  class JsonEnvironment : public JsonObject {
148  public:
149  static void initialize ();
150  JsonEnvironment ( unsigned long flags );
151  virtual std::string getTypeName () const;
152  virtual JsonEnvironment* clone ( unsigned long flags ) const;
153  virtual void toData ( JsonStack& );
154  };
155 
156 
157 } // CRL namespace.
158 
159 
160 INSPECTOR_P_SUPPORT(CRL::Environment);
161 
162 
163 #endif // CRL_ENVIRONMENT_H
void setCATALOG(const char *value)
Definition: Environment.h:140
bool isBLOCKAGE(const char *name) const
Definition: Environment.h:37
void setSCALE_X(long value)
Definition: Environment.h:135
@@ -56,7 +56,7 @@ $(function() {
void setGROUND(const char *value)
const std::string & getIN_PH() const
Definition: Environment.h:123
const std::string & getPad() const
Definition: Environment.h:130
-
void setWORKING_LIBRARY(const char *value)
Definition: Environment.h:141
+
void setWORKING_LIBRARY(const char *value)
std::string getPrint() const
void validate() const
@@ -92,14 +92,13 @@ $(function() {
void setCLOCK(const char *value)
void setDisplayStyle(const char *)
Definition: Environment.h:134
The namespace of Coriolis Core.
Definition: Environment.h:26
-
void replace(const std::string &path, const std::string &, size_t index)
void setDISPLAY(const char *value)


- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/GraphicToolEngine_8h_source.html b/crlcore/doc/crlcore/html/GraphicToolEngine_8h_source.html index 1f0ae5fc..feac806c 100644 --- a/crlcore/doc/crlcore/html/GraphicToolEngine_8h_source.html +++ b/crlcore/doc/crlcore/html/GraphicToolEngine_8h_source.html @@ -60,7 +60,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/RoutingGauge_8h_source.html b/crlcore/doc/crlcore/html/RoutingGauge_8h_source.html index 8bfb8ed5..1d2c656a 100644 --- a/crlcore/doc/crlcore/html/RoutingGauge_8h_source.html +++ b/crlcore/doc/crlcore/html/RoutingGauge_8h_source.html @@ -44,7 +44,7 @@ $(function() {
RoutingGauge.h
-
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/RoutingGauge.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_ROUTING_GAUGE_H
18 #define CRL_ROUTING_GAUGE_H
19 
20 #include <string>
21 #include <vector>
22 #include "hurricane/Name.h"
23 #include "hurricane/Slot.h"
24 
25 namespace Hurricane {
26  class Layer;
27  class Technology;
28 }
29 
30 #include "crlcore/RoutingLayerGauge.h"
31 
32 namespace CRL {
33 
34  using std::string;
35  using std::vector;
39  using Hurricane::Name;
40  using Hurricane::Record;
41  using Hurricane::Layer;
43 
44 
45 // -------------------------------------------------------------------
46 // Class : "RoutingGauge".
47 
48  class RoutingGauge {
49 
50  public:
51  // Constants.
52  static const size_t nlayerdepth;
53  // Constructors & Destructors.
54  static RoutingGauge* create ( const char* name );
55  virtual void destroy ();
56  // Predicates.
57  inline bool isSymbolic () const;
58  inline bool isTwoMetals () const;
59  inline bool isHV () const;
60  inline bool isVH () const;
61  // Accessors.
62  RoutingGauge* getClone () const;
63  inline const Name getName () const;
64  inline Technology* getTechnology () const;
65  inline size_t getDepth () const;
66  inline DbU::Unit getHorizontalPitch () const;
67  inline DbU::Unit getVerticalPitch () const;
68  RoutingLayerGauge* getHorizontalGauge () const;
69  RoutingLayerGauge* getVerticalGauge () const;
70  RoutingLayerGauge* getLayerGauge ( const Layer* ) const;
71  size_t getViaDepth ( const Layer* ) const;
72  size_t getLayerDepth ( const Layer* ) const;
73  unsigned int getLayerType ( const Layer* ) const;
74  unsigned int getLayerDirection ( const Layer* ) const;
75  RoutingLayerGauge* getLayerGauge ( size_t depth ) const;
76  inline unsigned int getLayerDirection ( size_t depth ) const;
77  inline unsigned int getLayerType ( size_t depth ) const;
78  inline DbU::Unit getLayerPitch ( size_t depth ) const;
79  inline DbU::Unit getLayerOffset ( size_t depth ) const;
80  inline DbU::Unit getLayerWireWidth ( size_t depth ) const;
81  inline DbU::Unit getViaWidth ( size_t depth ) const;
82  const Layer* getRoutingLayer ( size_t depth ) const;
83  Layer* getContactLayer ( size_t depth ) const;
84  const vector<RoutingLayerGauge*>&
85  getLayerGauges () const;
86  // Methods.
87  void addLayerGauge ( RoutingLayerGauge* layerGauge );
88  void checkConnexity () const;
89  inline void setSymbolic ( bool );
90  // Hurricane Managment.
91  void toJson ( JsonWriter* ) const;
92  virtual Record* _getRecord ( Record* record=NULL ) const;
93  virtual string _getString () const;
94  virtual string _getTypeName () const;
95 
96  protected:
97  // Internal - Attributes.
98  Name _name;
99  vector<RoutingLayerGauge*> _layerGauges;
100  vector<Layer*> _viaLayers;
101  Technology* _technology;
102  bool _isSymbolic;
103 
104  // Internal - Constructors & Destructors.
105  RoutingGauge ( const char* name );
106  RoutingGauge ( const RoutingGauge& );
107  virtual ~RoutingGauge ();
108  virtual void _preDestroy ();
109  RoutingGauge& operator= ( const RoutingGauge& );
110  };
111 
112 
113  inline bool RoutingGauge::isSymbolic () const { return _isSymbolic; }
114  inline bool RoutingGauge::isTwoMetals () const { return (getDepth() < 3); }
115  inline bool RoutingGauge::isHV () const { return not isTwoMetals() and (getLayerGauge(1)->isHorizontal()); }
116  inline bool RoutingGauge::isVH () const { return not isTwoMetals() and (getLayerGauge(1)->isVertical()); }
117  inline const Name RoutingGauge::getName () const { return _name; }
118  inline size_t RoutingGauge::getDepth () const { return _layerGauges.size(); }
119  inline Technology* RoutingGauge::getTechnology () const { return _technology; }
120  inline DbU::Unit RoutingGauge::getHorizontalPitch () const { return getHorizontalGauge()->getPitch(); }
121  inline DbU::Unit RoutingGauge::getVerticalPitch () const { return getVerticalGauge ()->getPitch(); }
122  inline unsigned int RoutingGauge::getLayerType ( size_t depth ) const { return getLayerGauge(depth)->getType(); }
123  inline unsigned int RoutingGauge::getLayerDirection ( size_t depth ) const { return getLayerGauge(depth)->getDirection(); }
124  inline DbU::Unit RoutingGauge::getLayerPitch ( size_t depth ) const { return getLayerGauge(depth)->getPitch(); }
125  inline DbU::Unit RoutingGauge::getLayerOffset ( size_t depth ) const { return getLayerGauge(depth)->getOffset(); }
126  inline DbU::Unit RoutingGauge::getLayerWireWidth ( size_t depth ) const { return getLayerGauge(depth)->getWireWidth(); }
127  inline DbU::Unit RoutingGauge::getViaWidth ( size_t depth ) const { return getLayerGauge(depth)->getViaWidth(); }
128  inline void RoutingGauge::setSymbolic ( bool state ) { _isSymbolic=state; }
129 
130 
131 // -------------------------------------------------------------------
132 // Class : "JsonRoutingGauge".
133 
134  class JsonRoutingGauge : public JsonObject {
135  public:
136  static void initialize ();
137  JsonRoutingGauge ( unsigned long flags );
138  virtual string getTypeName () const;
139  virtual JsonRoutingGauge* clone ( unsigned long flags ) const;
140  virtual void toData ( JsonStack& );
141  };
142 
143 
144 } // CRL namespace.
145 
146 INSPECTOR_P_SUPPORT(CRL::RoutingGauge);
147 
148 #endif
DbU::Unit getViaWidth() const
Definition: RoutingLayerGauge.h:182
+
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/RoutingGauge.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_ROUTING_GAUGE_H
18 #define CRL_ROUTING_GAUGE_H
19 
20 #include <string>
21 #include <vector>
22 #include "hurricane/Name.h"
23 #include "hurricane/Slot.h"
24 
25 namespace Hurricane {
26  class Layer;
27  class Technology;
28 }
29 
30 #include "crlcore/RoutingLayerGauge.h"
31 
32 namespace CRL {
33 
34  using std::string;
35  using std::vector;
39  using Hurricane::Name;
40  using Hurricane::Record;
41  using Hurricane::Layer;
43 
44 
45 // -------------------------------------------------------------------
46 // Class : "RoutingGauge".
47 
48  class RoutingGauge {
49 
50  public:
51  // Constants.
52  static const size_t nlayerdepth;
53  // Constructors & Destructors.
54  static RoutingGauge* create ( const char* name );
55  virtual void destroy ();
56  // Predicates.
57  inline bool isSymbolic () const;
58  inline bool isTwoMetals () const;
59  inline bool isHV () const;
60  inline bool isVH () const;
61  // Accessors.
62  RoutingGauge* getClone () const;
63  inline const Name getName () const;
64  inline Technology* getTechnology () const;
65  inline size_t getDepth () const;
66  inline DbU::Unit getHorizontalPitch () const;
67  inline DbU::Unit getVerticalPitch () const;
68  RoutingLayerGauge* getHorizontalGauge () const;
69  RoutingLayerGauge* getVerticalGauge () const;
70  RoutingLayerGauge* getLayerGauge ( const Layer* ) const;
71  size_t getViaDepth ( const Layer* ) const;
72  size_t getLayerDepth ( const Layer* ) const;
73  unsigned int getLayerType ( const Layer* ) const;
74  unsigned int getLayerDirection ( const Layer* ) const;
75  DbU::Unit getPitch ( const Layer* ) const;
76  DbU::Unit getOffset ( const Layer* ) const;
77  DbU::Unit getWireWidth ( const Layer* ) const;
78  DbU::Unit getViaWidth ( const Layer* ) const;
79  RoutingLayerGauge* getLayerGauge ( size_t depth ) const;
80  inline unsigned int getLayerDirection ( size_t depth ) const;
81  inline unsigned int getLayerType ( size_t depth ) const;
82  inline DbU::Unit getLayerPitch ( size_t depth ) const;
83  inline DbU::Unit getLayerOffset ( size_t depth ) const;
84  inline DbU::Unit getLayerWireWidth ( size_t depth ) const;
85  inline DbU::Unit getViaWidth ( size_t depth ) const;
86  const Layer* getRoutingLayer ( size_t depth ) const;
87  Layer* getContactLayer ( size_t depth ) const;
88  const vector<RoutingLayerGauge*>&
89  getLayerGauges () const;
90  // Methods.
91  void addLayerGauge ( RoutingLayerGauge* layerGauge );
92  void checkConnexity () const;
93  inline void setSymbolic ( bool );
94  // Hurricane Managment.
95  void toJson ( JsonWriter* ) const;
96  virtual Record* _getRecord ( Record* record=NULL ) const;
97  virtual string _getString () const;
98  virtual string _getTypeName () const;
99 
100  protected:
101  // Internal - Attributes.
102  Name _name;
103  vector<RoutingLayerGauge*> _layerGauges;
104  vector<Layer*> _viaLayers;
105  Technology* _technology;
106  bool _isSymbolic;
107 
108  // Internal - Constructors & Destructors.
109  RoutingGauge ( const char* name );
110  RoutingGauge ( const RoutingGauge& );
111  virtual ~RoutingGauge ();
112  virtual void _preDestroy ();
113  RoutingGauge& operator= ( const RoutingGauge& );
114  };
115 
116 
117  inline bool RoutingGauge::isSymbolic () const { return _isSymbolic; }
118  inline bool RoutingGauge::isTwoMetals () const { return (getDepth() < 3); }
119  inline bool RoutingGauge::isHV () const { return not isTwoMetals() and (getLayerGauge(1)->isHorizontal()); }
120  inline bool RoutingGauge::isVH () const { return not isTwoMetals() and (getLayerGauge(1)->isVertical()); }
121  inline const Name RoutingGauge::getName () const { return _name; }
122  inline size_t RoutingGauge::getDepth () const { return _layerGauges.size(); }
123  inline Technology* RoutingGauge::getTechnology () const { return _technology; }
124  inline DbU::Unit RoutingGauge::getHorizontalPitch () const { return getHorizontalGauge()->getPitch(); }
125  inline DbU::Unit RoutingGauge::getVerticalPitch () const { return getVerticalGauge ()->getPitch(); }
126  inline unsigned int RoutingGauge::getLayerType ( size_t depth ) const { return getLayerGauge(depth)->getType(); }
127  inline unsigned int RoutingGauge::getLayerDirection ( size_t depth ) const { return getLayerGauge(depth)->getDirection(); }
128  inline DbU::Unit RoutingGauge::getLayerPitch ( size_t depth ) const { return getLayerGauge(depth)->getPitch(); }
129  inline DbU::Unit RoutingGauge::getLayerOffset ( size_t depth ) const { return getLayerGauge(depth)->getOffset(); }
130  inline DbU::Unit RoutingGauge::getLayerWireWidth ( size_t depth ) const { return getLayerGauge(depth)->getWireWidth(); }
131  inline DbU::Unit RoutingGauge::getViaWidth ( size_t depth ) const { return getLayerGauge(depth)->getViaWidth(); }
132  inline void RoutingGauge::setSymbolic ( bool state ) { _isSymbolic=state; }
133 
134 
135 // -------------------------------------------------------------------
136 // Class : "JsonRoutingGauge".
137 
138  class JsonRoutingGauge : public JsonObject {
139  public:
140  static void initialize ();
141  JsonRoutingGauge ( unsigned long flags );
142  virtual string getTypeName () const;
143  virtual JsonRoutingGauge* clone ( unsigned long flags ) const;
144  virtual void toData ( JsonStack& );
145  };
146 
147 
148 } // CRL namespace.
149 
150 INSPECTOR_P_SUPPORT(CRL::RoutingGauge);
151 
152 #endif
DbU::Unit getViaWidth() const
Definition: RoutingLayerGauge.h:182
DbU::Unit getPitch() const
Definition: RoutingLayerGauge.h:178
@@ -54,11 +54,11 @@ $(function() {
Gauge for the detailed routing.
Definition: RoutingGauge.h:48
RoutingGauge * getClone() const
Constant::Direction getDirection() const
Definition: RoutingLayerGauge.h:173
-
Technology * getTechnology() const
Definition: RoutingGauge.h:119
+
Technology * getTechnology() const
Definition: RoutingGauge.h:123
-
const Name getName() const
Definition: RoutingGauge.h:117
+
const Name getName() const
Definition: RoutingGauge.h:121
DbU::Unit getOffset() const
Definition: RoutingLayerGauge.h:177
-
size_t getDepth() const
Definition: RoutingGauge.h:118
+
size_t getDepth() const
Definition: RoutingGauge.h:122
Constant::LayerGaugeType getType() const
Definition: RoutingLayerGauge.h:174
RoutingLayerGauge * getLayerGauge(const Layer *) const
void addLayerGauge(RoutingLayerGauge *layerGauge)
@@ -80,7 +80,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/RoutingLayerGauge_8h_source.html b/crlcore/doc/crlcore/html/RoutingLayerGauge_8h_source.html index f7cc7a1d..46256a55 100644 --- a/crlcore/doc/crlcore/html/RoutingLayerGauge_8h_source.html +++ b/crlcore/doc/crlcore/html/RoutingLayerGauge_8h_source.html @@ -93,7 +93,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/SearchPath_8h_source.html b/crlcore/doc/crlcore/html/SearchPath_8h_source.html index 57b9d045..6b3786b8 100644 --- a/crlcore/doc/crlcore/html/SearchPath_8h_source.html +++ b/crlcore/doc/crlcore/html/SearchPath_8h_source.html @@ -44,7 +44,7 @@ $(function() {
SearchPath.h
-
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/SearchPath.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_SEARCH_PATH_H
18 #define CRL_SEARCH_PATH_H
19 
20 #include <string>
21 #include <vector>
22 #include "hurricane/Commons.h"
23 #include "hurricane/Slot.h"
24 
25 
26 namespace CRL {
27 
28  using Hurricane::Record;
29  using Hurricane::_TName;
30 
31 
32  class SearchPath {
33  public:
34  class Element {
35  public:
36  inline Element ( const std::string& path="", const std::string& name="" );
37  inline bool empty () const;
38  inline const std::string& getPath () const;
39  inline const std::string& getName () const;
40  inline std::string _getTypeName () const;
41  std::string _getString () const;
42  Record* _getRecord () const;
43  private:
44  std::string _path;
45  std::string _name;
46  };
47  public:
48  static const size_t npos;
49  static std::string extractLibName ( const std::string& );
50  SearchPath ();
51  public:
52  inline void reset ();
53  inline void append ( const std::string& path, const std::string& name="" );
54  void prepend ( const std::string& path, const std::string& name="");
55  void replace ( const std::string& path, const std::string&, size_t index );
56  void remove ( size_t index );
57  size_t locate ( const std::string& file
58  , std::ios::openmode mode =std::ios::in
59  , int first=0
60  , int last =64 );
61  void select ( const std::string& );
62  inline size_t getSize () const;
63  inline const std::string& getSelected () const;
64  inline size_t getIndex () const;
65  inline bool hasSelected () const;
66  size_t hasLib ( const std::string& name ) const;
67  size_t hasPath ( const std::string& path ) const;
68  const Element& operator[] ( size_t index ) const;
69  private:
70  static const std::string _selectFailed;
71  std::vector<Element> _paths;
72  size_t _index;
73  std::string _selected;
74  private:
75  SearchPath ( const SearchPath& );
76  bool _canOpen ( const Element& directory
77  , const std::string& file
78  , std::ios::openmode mode
79  );
80  public:
81  inline std::string _getTypeName () const;
82  std::string _getString () const;
83  Record* _getRecord () const;
84  };
85 
86 
87  // Inline Functions.
88  inline void SearchPath::reset () { _paths.resize(1); }
89  inline size_t SearchPath::getSize () const { return _paths.size(); }
90  inline const std::string& SearchPath::getSelected () const { return _selected; }
91  inline size_t SearchPath::getIndex () const { return _index; }
92  inline bool SearchPath::hasSelected () const { return _index != npos; }
93  inline std::string SearchPath::_getTypeName () const { return _TName("SearchPath"); }
94 
95  inline void SearchPath::append ( const std::string& path, const std::string& name ) {
96  _paths.push_back ( Element ( path, name.empty()?extractLibName(path):name ) );
97  }
98 
99  inline SearchPath::Element::Element ( const std::string& path, const std::string& name )
100  : _path(path)
101  , _name(name.empty()?SearchPath::extractLibName(path):name)
102  { }
103 
104  inline bool SearchPath::Element::empty () const { return _path.empty() and _name.empty(); }
105  inline const std::string& SearchPath::Element::getPath () const { return _path; }
106  inline const std::string& SearchPath::Element::getName () const { return _name; }
107  inline std::string SearchPath::Element::_getTypeName () const { return "SearchPath::Element"; }
108 
109 
110 } // CRL namespace.
111 
112 
113 INSPECTOR_P_SUPPORT(CRL::SearchPath);
114 INSPECTOR_V_SUPPORT(CRL::SearchPath::Element);
115 
116 
117 #endif // CRL_SEARCH_PATH_H
const std::string & getSelected() const
Definition: SearchPath.h:90
+
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | Alliance / Hurricane Interface |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./crlcore/SearchPath.h" |
14 // +-----------------------------------------------------------------+
15 
16 
17 #ifndef CRL_SEARCH_PATH_H
18 #define CRL_SEARCH_PATH_H
19 
20 #include <string>
21 #include <vector>
22 #include "hurricane/Commons.h"
23 #include "hurricane/Slot.h"
24 
25 
26 namespace CRL {
27 
28  using Hurricane::Record;
29  using Hurricane::_TName;
30 
31 
32  class SearchPath {
33  public:
34  class Element {
35  public:
36  inline Element ( const std::string& path="", const std::string& name="" );
37  inline bool empty () const;
38  inline const std::string& getPath () const;
39  inline const std::string& getName () const;
40  inline std::string _getTypeName () const;
41  std::string _getString () const;
42  Record* _getRecord () const;
43  private:
44  std::string _path;
45  std::string _name;
46  };
47  public:
48  static const size_t npos;
49  static std::string extractLibName ( const std::string& );
50  SearchPath ();
51  public:
52  inline void reset ();
53  inline size_t append ( const std::string& path, const std::string& name="" );
54  size_t prepend ( const std::string& path, const std::string& name="");
55  size_t replace ( const std::string& path, const std::string&, size_t index );
56  void remove ( size_t index );
57  size_t locate ( const std::string& file
58  , std::ios::openmode mode =std::ios::in
59  , int first=0
60  , int last =64 );
61  void select ( const std::string& );
62  inline size_t getSize () const;
63  inline const std::string& getSelected () const;
64  inline size_t getIndex () const;
65  inline bool hasSelected () const;
66  size_t hasLib ( const std::string& name ) const;
67  size_t hasPath ( const std::string& path ) const;
68  const Element& operator[] ( size_t index ) const;
69  private:
70  static const std::string _selectFailed;
71  std::vector<Element> _paths;
72  size_t _index;
73  std::string _selected;
74  private:
75  SearchPath ( const SearchPath& );
76  bool _canOpen ( const Element& directory
77  , const std::string& file
78  , std::ios::openmode mode
79  );
80  public:
81  inline std::string _getTypeName () const;
82  std::string _getString () const;
83  Record* _getRecord () const;
84  };
85 
86 
87  // Inline Functions.
88  inline void SearchPath::reset () { _paths.resize(1); }
89  inline size_t SearchPath::getSize () const { return _paths.size(); }
90  inline const std::string& SearchPath::getSelected () const { return _selected; }
91  inline size_t SearchPath::getIndex () const { return _index; }
92  inline bool SearchPath::hasSelected () const { return _index != npos; }
93  inline std::string SearchPath::_getTypeName () const { return _TName("SearchPath"); }
94 
95  inline size_t SearchPath::append ( const std::string& path, const std::string& name ) {
96  _paths.push_back ( Element ( path, name.empty()?extractLibName(path):name ) );
97  return _paths.size()-1;
98  }
99 
100  inline SearchPath::Element::Element ( const std::string& path, const std::string& name )
101  : _path(path)
102  , _name(name.empty()?SearchPath::extractLibName(path):name)
103  { }
104 
105  inline bool SearchPath::Element::empty () const { return _path.empty() and _name.empty(); }
106  inline const std::string& SearchPath::Element::getPath () const { return _path; }
107  inline const std::string& SearchPath::Element::getName () const { return _name; }
108  inline std::string SearchPath::Element::_getTypeName () const { return "SearchPath::Element"; }
109 
110 
111 } // CRL namespace.
112 
113 
114 INSPECTOR_P_SUPPORT(CRL::SearchPath);
115 INSPECTOR_V_SUPPORT(CRL::SearchPath::Element);
116 
117 
118 #endif // CRL_SEARCH_PATH_H
const std::string & getSelected() const
Definition: SearchPath.h:90
void reset()
Definition: SearchPath.h:88
static std::string extractLibName(const std::string &)
size_t getIndex() const
Definition: SearchPath.h:91
@@ -54,21 +54,21 @@ $(function() {
size_t getSize() const
Definition: SearchPath.h:89
size_t hasPath(const std::string &path) const
An ordered list of search pathes.
Definition: SearchPath.h:32
-
void prepend(const std::string &path, const std::string &name="")
-
bool empty() const
Definition: SearchPath.h:104
-
const std::string & getPath() const
Definition: SearchPath.h:105
-
const std::string & getName() const
Definition: SearchPath.h:106
+
size_t prepend(const std::string &path, const std::string &name="")
+
bool empty() const
Definition: SearchPath.h:105
+
const std::string & getPath() const
Definition: SearchPath.h:106
+
const std::string & getName() const
Definition: SearchPath.h:107
The namespace of Coriolis Core.
Definition: Environment.h:26
-
void replace(const std::string &path, const std::string &, size_t index)
-
Element(const std::string &path="", const std::string &name="")
Definition: SearchPath.h:99
-
void append(const std::string &path, const std::string &name="")
Definition: SearchPath.h:95
+
size_t replace(const std::string &path, const std::string &, size_t index)
+
Element(const std::string &path="", const std::string &name="")
Definition: SearchPath.h:100
+
size_t append(const std::string &path, const std::string &name="")
Definition: SearchPath.h:95
const Element & operator[](size_t index) const


- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/ToolEngine_8h_source.html b/crlcore/doc/crlcore/html/ToolEngine_8h_source.html index 3acb76d1..01ff534e 100644 --- a/crlcore/doc/crlcore/html/ToolEngine_8h_source.html +++ b/crlcore/doc/crlcore/html/ToolEngine_8h_source.html @@ -58,7 +58,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/ToolEngines_8h_source.html b/crlcore/doc/crlcore/html/ToolEngines_8h_source.html index d72d9ae0..cf7c6415 100644 --- a/crlcore/doc/crlcore/html/ToolEngines_8h_source.html +++ b/crlcore/doc/crlcore/html/ToolEngines_8h_source.html @@ -57,7 +57,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/annotated.html b/crlcore/doc/crlcore/html/annotated.html index e8bd28c8..1d7a7765 100644 --- a/crlcore/doc/crlcore/html/annotated.html +++ b/crlcore/doc/crlcore/html/annotated.html @@ -64,7 +64,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda-members.html b/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda-members.html index b1f95183..cd9fb7c6 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda-members.html @@ -53,7 +53,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda.html b/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda.html index 8b60c414..a4ab80dd 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda.html @@ -118,7 +118,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework-members.html b/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework-members.html index f607bfe0..277595bd 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework-members.html @@ -87,7 +87,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework.html b/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework.html index 29b61911..22278f62 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework.html @@ -923,7 +923,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary-members.html b/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary-members.html index 3546c9a8..bc37f3d8 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary-members.html @@ -56,7 +56,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary.html b/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary.html index 59f87d75..15a0ba83 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary.html @@ -175,7 +175,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Banner-members.html b/crlcore/doc/crlcore/html/classCRL_1_1Banner-members.html index 5094698f..0da11090 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Banner-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Banner-members.html @@ -67,7 +67,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Banner.html b/crlcore/doc/crlcore/html/classCRL_1_1Banner.html index 7d03cf2d..0b71e233 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Banner.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Banner.html @@ -495,7 +495,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Catalog-members.html b/crlcore/doc/crlcore/html/classCRL_1_1Catalog-members.html index 0ae4eabe..18c3276e 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog-members.html @@ -60,7 +60,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Catalog.html b/crlcore/doc/crlcore/html/classCRL_1_1Catalog.html index 09b1a837..8fddbf95 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog.html @@ -292,7 +292,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension-members.html b/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension-members.html index 8251818e..136c6e91 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension-members.html @@ -71,7 +71,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension.html b/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension.html index 10aa49f5..3347e304 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension.html @@ -763,7 +763,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State-members.html b/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State-members.html index ee5b4bb6..129f5454 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State-members.html @@ -86,7 +86,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State.html b/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State.html index a3ae5d8b..e2b96dd4 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State.html @@ -846,7 +846,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Environment-members.html b/crlcore/doc/crlcore/html/classCRL_1_1Environment-members.html index f0de0a26..34575845 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Environment-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Environment-members.html @@ -88,7 +88,7 @@ $(function() { setPad(const char *value)CRL::Environment setPOWER(const char *value)CRL::Environment setSCALE_X(long value)CRL::Environmentinline - setWORKING_LIBRARY(const char *value)CRL::Environmentinline + setWORKING_LIBRARY(const char *value)CRL::Environment validate() constCRL::Environment ~Environment()CRL::Environment
@@ -96,7 +96,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1Environment.html b/crlcore/doc/crlcore/html/classCRL_1_1Environment.html index 82d4228a..c5616e72 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Environment.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Environment.html @@ -1053,9 +1053,6 @@ Public Member Functions
- - - - - -
@@ -1065,16 +1062,9 @@ Public Member Functions
void CRL::Environment::setWORKING_LIBRARY
-
-inline

Sets the directory in which create cells will be saved.

-

References CRL::SearchPath::replace().

-
@@ -1146,7 +1136,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool-members.html b/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool-members.html index 7d25aae5..d092f99c 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool-members.html @@ -54,7 +54,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool.html b/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool.html index 99b5c4ec..d88a93c3 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool.html @@ -127,7 +127,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge-members.html b/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge-members.html index c34529aa..eb5d8fc8 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge-members.html @@ -68,7 +68,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge.html b/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge.html index 413272df..43d80c31 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge.html @@ -451,7 +451,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge-members.html b/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge-members.html index 394e8a53..847182d6 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge-members.html @@ -70,7 +70,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge.html b/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge.html index a1b499a6..9d598d54 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge.html @@ -682,7 +682,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath-members.html b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath-members.html index 79e7aa4f..e309dbaf 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath-members.html @@ -64,7 +64,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath.html b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath.html index 0ffda809..ec1c0ebd 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath.html @@ -63,11 +63,11 @@ Classes Public Member Functions void reset ()   -void append (const std::string &path, const std::string &name="") +size_t append (const std::string &path, const std::string &name="")   -void prepend (const std::string &path, const std::string &name="") +size_t prepend (const std::string &path, const std::string &name="")   -void replace (const std::string &path, const std::string &, size_t index) +size_t replace (const std::string &path, const std::string &, size_t index)   size_t locate (const std::string &file, std::ios::openmode mode=std::ios::in, int first=0, int last=64)   @@ -249,8 +249,6 @@ Static Public Member Functions

Replace the search path element at index index.

-

Referenced by CRL::Environment::setWORKING_LIBRARY().

-
@@ -454,7 +452,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element-members.html b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element-members.html index 21abbe8f..80d279be 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element-members.html @@ -56,7 +56,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element.html b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element.html index 927480fd..db0e1e47 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath_1_1Element.html @@ -190,7 +190,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine-members.html b/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine-members.html index 9bb56cb2..c670f530 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine-members.html @@ -64,7 +64,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine.html b/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine.html index 40a93477..4b06c43f 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine.html @@ -198,7 +198,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classes.html b/crlcore/doc/crlcore/html/classes.html index b8c2f0a2..033603f8 100644 --- a/crlcore/doc/crlcore/html/classes.html +++ b/crlcore/doc/crlcore/html/classes.html @@ -73,7 +73,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/crlcore.tag b/crlcore/doc/crlcore/html/crlcore.tag index 43fb3205..7032d0ec 100644 --- a/crlcore/doc/crlcore/html/crlcore.tag +++ b/crlcore/doc/crlcore/html/crlcore.tag @@ -1254,21 +1254,21 @@ () - void + size_t append classCRL_1_1SearchPath.html af358bdb1e940f08137f887f70eb641e3 (const std::string &path, const std::string &name="") - void + size_t prepend classCRL_1_1SearchPath.html af39d78a63d880e90ae6f947abf1fe322 (const std::string &path, const std::string &name="") - void + size_t replace classCRL_1_1SearchPath.html a6cd1524e1048f246682cd5ef40145d67 diff --git a/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html b/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html index a27dd3ba..748f597f 100644 --- a/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html +++ b/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html @@ -53,7 +53,7 @@ Directories
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 3e7d54d6..47da7ac7 100644 --- a/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -49,7 +49,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html b/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html index fbf785de..83c57205 100644 --- a/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html +++ b/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html @@ -49,7 +49,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/files.html b/crlcore/doc/crlcore/html/files.html index fa02cf65..0a3d38c7 100644 --- a/crlcore/doc/crlcore/html/files.html +++ b/crlcore/doc/crlcore/html/files.html @@ -61,7 +61,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions.html b/crlcore/doc/crlcore/html/functions.html index 3d09f05f..7a6b9275 100644 --- a/crlcore/doc/crlcore/html/functions.html +++ b/crlcore/doc/crlcore/html/functions.html @@ -72,7 +72,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x7e.html b/crlcore/doc/crlcore/html/functions_0x7e.html index 1a9f53c2..d78f37c8 100644 --- a/crlcore/doc/crlcore/html/functions_0x7e.html +++ b/crlcore/doc/crlcore/html/functions_0x7e.html @@ -54,7 +54,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_b.html b/crlcore/doc/crlcore/html/functions_b.html index 80453675..3dd4f9ac 100644 --- a/crlcore/doc/crlcore/html/functions_b.html +++ b/crlcore/doc/crlcore/html/functions_b.html @@ -48,7 +48,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_c.html b/crlcore/doc/crlcore/html/functions_c.html index 5a931235..13b3271f 100644 --- a/crlcore/doc/crlcore/html/functions_c.html +++ b/crlcore/doc/crlcore/html/functions_c.html @@ -68,7 +68,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_d.html b/crlcore/doc/crlcore/html/functions_d.html index 55413811..66e648bf 100644 --- a/crlcore/doc/crlcore/html/functions_d.html +++ b/crlcore/doc/crlcore/html/functions_d.html @@ -62,7 +62,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_e.html b/crlcore/doc/crlcore/html/functions_e.html index 767d273d..7ec263f7 100644 --- a/crlcore/doc/crlcore/html/functions_e.html +++ b/crlcore/doc/crlcore/html/functions_e.html @@ -57,7 +57,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_enum.html b/crlcore/doc/crlcore/html/functions_enum.html index 641c0c07..118b34ae 100644 --- a/crlcore/doc/crlcore/html/functions_enum.html +++ b/crlcore/doc/crlcore/html/functions_enum.html @@ -55,7 +55,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_eval.html b/crlcore/doc/crlcore/html/functions_eval.html index 8ef9e47e..c3260829 100644 --- a/crlcore/doc/crlcore/html/functions_eval.html +++ b/crlcore/doc/crlcore/html/functions_eval.html @@ -91,7 +91,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_f.html b/crlcore/doc/crlcore/html/functions_f.html index 848a7034..435c25a9 100644 --- a/crlcore/doc/crlcore/html/functions_f.html +++ b/crlcore/doc/crlcore/html/functions_f.html @@ -54,7 +54,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_func.html b/crlcore/doc/crlcore/html/functions_func.html index cc58c864..a688890b 100644 --- a/crlcore/doc/crlcore/html/functions_func.html +++ b/crlcore/doc/crlcore/html/functions_func.html @@ -588,7 +588,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_g.html b/crlcore/doc/crlcore/html/functions_g.html index 11555b24..477a10fe 100644 --- a/crlcore/doc/crlcore/html/functions_g.html +++ b/crlcore/doc/crlcore/html/functions_g.html @@ -258,7 +258,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_h.html b/crlcore/doc/crlcore/html/functions_h.html index f9098636..e85e3036 100644 --- a/crlcore/doc/crlcore/html/functions_h.html +++ b/crlcore/doc/crlcore/html/functions_h.html @@ -54,7 +54,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_i.html b/crlcore/doc/crlcore/html/functions_i.html index 140f91df..f83b4a22 100644 --- a/crlcore/doc/crlcore/html/functions_i.html +++ b/crlcore/doc/crlcore/html/functions_i.html @@ -100,7 +100,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_l.html b/crlcore/doc/crlcore/html/functions_l.html index aab491bd..12e797cf 100644 --- a/crlcore/doc/crlcore/html/functions_l.html +++ b/crlcore/doc/crlcore/html/functions_l.html @@ -63,7 +63,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_m.html b/crlcore/doc/crlcore/html/functions_m.html index 7e408438..8fad1a07 100644 --- a/crlcore/doc/crlcore/html/functions_m.html +++ b/crlcore/doc/crlcore/html/functions_m.html @@ -51,7 +51,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_o.html b/crlcore/doc/crlcore/html/functions_o.html index 8943eed9..22c81061 100644 --- a/crlcore/doc/crlcore/html/functions_o.html +++ b/crlcore/doc/crlcore/html/functions_o.html @@ -48,7 +48,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_p.html b/crlcore/doc/crlcore/html/functions_p.html index 5d5c52d5..3822d6a2 100644 --- a/crlcore/doc/crlcore/html/functions_p.html +++ b/crlcore/doc/crlcore/html/functions_p.html @@ -57,7 +57,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_r.html b/crlcore/doc/crlcore/html/functions_r.html index 89667e26..831e9866 100644 --- a/crlcore/doc/crlcore/html/functions_r.html +++ b/crlcore/doc/crlcore/html/functions_r.html @@ -57,7 +57,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_s.html b/crlcore/doc/crlcore/html/functions_s.html index 3c5ed7d6..8382ab99 100644 --- a/crlcore/doc/crlcore/html/functions_s.html +++ b/crlcore/doc/crlcore/html/functions_s.html @@ -154,7 +154,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_v.html b/crlcore/doc/crlcore/html/functions_v.html index 68c7ea8d..17e26697 100644 --- a/crlcore/doc/crlcore/html/functions_v.html +++ b/crlcore/doc/crlcore/html/functions_v.html @@ -51,7 +51,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/hierarchy.html b/crlcore/doc/crlcore/html/hierarchy.html index 2dfad9d0..889acca1 100644 --- a/crlcore/doc/crlcore/html/hierarchy.html +++ b/crlcore/doc/crlcore/html/hierarchy.html @@ -64,7 +64,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/index.html b/crlcore/doc/crlcore/html/index.html index b02d01d0..6131375b 100644 --- a/crlcore/doc/crlcore/html/index.html +++ b/crlcore/doc/crlcore/html/index.html @@ -45,7 +45,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespaceCRL.html b/crlcore/doc/crlcore/html/namespaceCRL.html index 40ff7730..50ee19d7 100644 --- a/crlcore/doc/crlcore/html/namespaceCRL.html +++ b/crlcore/doc/crlcore/html/namespaceCRL.html @@ -149,7 +149,7 @@ Typedefs
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespaceConstant.html b/crlcore/doc/crlcore/html/namespaceConstant.html index 7c52ee7f..dfefdd3e 100644 --- a/crlcore/doc/crlcore/html/namespaceConstant.html +++ b/crlcore/doc/crlcore/html/namespaceConstant.html @@ -149,7 +149,7 @@ Enumerations
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers.html b/crlcore/doc/crlcore/html/namespacemembers.html index 77471e28..d6317a5f 100644 --- a/crlcore/doc/crlcore/html/namespacemembers.html +++ b/crlcore/doc/crlcore/html/namespacemembers.html @@ -85,7 +85,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers_enum.html b/crlcore/doc/crlcore/html/namespacemembers_enum.html index 138431a9..4462600c 100644 --- a/crlcore/doc/crlcore/html/namespacemembers_enum.html +++ b/crlcore/doc/crlcore/html/namespacemembers_enum.html @@ -52,7 +52,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers_eval.html b/crlcore/doc/crlcore/html/namespacemembers_eval.html index c7469625..0197b788 100644 --- a/crlcore/doc/crlcore/html/namespacemembers_eval.html +++ b/crlcore/doc/crlcore/html/namespacemembers_eval.html @@ -67,7 +67,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers_type.html b/crlcore/doc/crlcore/html/namespacemembers_type.html index 2f8d1484..f95a3662 100644 --- a/crlcore/doc/crlcore/html/namespacemembers_type.html +++ b/crlcore/doc/crlcore/html/namespacemembers_type.html @@ -52,7 +52,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespaces.html b/crlcore/doc/crlcore/html/namespaces.html index 6ffaefde..64263b3c 100644 --- a/crlcore/doc/crlcore/html/namespaces.html +++ b/crlcore/doc/crlcore/html/namespaces.html @@ -51,7 +51,7 @@ $(function() {
- +
Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
diff --git a/crlcore/doc/crlcore/latex/classCRL_1_1Environment.tex b/crlcore/doc/crlcore/latex/classCRL_1_1Environment.tex index 748dde2b..4b399906 100644 --- a/crlcore/doc/crlcore/latex/classCRL_1_1Environment.tex +++ b/crlcore/doc/crlcore/latex/classCRL_1_1Environment.tex @@ -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()}} diff --git a/crlcore/doc/crlcore/latex/classCRL_1_1SearchPath.tex b/crlcore/doc/crlcore/latex/classCRL_1_1SearchPath.tex index bfa01304..37be8e67 100644 --- a/crlcore/doc/crlcore/latex/classCRL_1_1SearchPath.tex +++ b/crlcore/doc/crlcore/latex/classCRL_1_1SearchPath.tex @@ -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()}} diff --git a/crlcore/doc/crlcore/latex/refman.tex b/crlcore/doc/crlcore/latex/refman.tex index 64e53032..ecd05070 100644 --- a/crlcore/doc/crlcore/latex/refman.tex +++ b/crlcore/doc/crlcore/latex/refman.tex @@ -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} diff --git a/crlcore/etc/CMakeLists.txt b/crlcore/etc/CMakeLists.txt index f7840428..fee715fc 100644 --- a/crlcore/etc/CMakeLists.txt +++ b/crlcore/etc/CMakeLists.txt @@ -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 ) diff --git a/crlcore/etc/common/__init__.py b/crlcore/etc/common/__init__.py new file mode 100644 index 00000000..354e2683 --- /dev/null +++ b/crlcore/etc/common/__init__.py @@ -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 .' + ,'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 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 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 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 diff --git a/crlcore/etc/common/analog.py b/crlcore/etc/common/analog.py new file mode 100644 index 00000000..1d9308ba --- /dev/null +++ b/crlcore/etc/common/analog.py @@ -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' ) diff --git a/crlcore/etc/common/colors.py b/crlcore/etc/common/colors.py new file mode 100644 index 00000000..321eec24 --- /dev/null +++ b/crlcore/etc/common/colors.py @@ -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 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 attribute of Drawing.' % digit, color] ) + if len(color) != 7: + raise ErrorMessage( 1, [' 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, [' 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 component \'%s\' of Drawing, not an integer.' % component ,color] ) + value = int(component) + if value < 0 or value > 255: + raise ErrorMessage( 1, ['Bad RGB component \'%s\' of Drawing, not between 0 and 255.' % component ,color] ) + return color diff --git a/crlcore/etc/common/devices.py b/crlcore/etc/common/devices.py new file mode 100644 index 00000000..c185a015 --- /dev/null +++ b/crlcore/etc/common/devices.py @@ -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 diff --git a/crlcore/etc/common/display.py b/crlcore/etc/common/display.py new file mode 100644 index 00000000..3157da86 --- /dev/null +++ b/crlcore/etc/common/display.py @@ -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]' ) diff --git a/crlcore/etc/common/etesian.py b/crlcore/etc/common/etesian.py new file mode 100644 index 00000000..9781fb21 --- /dev/null +++ b/crlcore/etc/common/etesian.py @@ -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' ) diff --git a/crlcore/etc/common/kite.py b/crlcore/etc/common/kite.py new file mode 100644 index 00000000..c330b09a --- /dev/null +++ b/crlcore/etc/common/kite.py @@ -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' ) diff --git a/crlcore/etc/common/misc.py b/crlcore/etc/common/misc.py new file mode 100644 index 00000000..d225a8e6 --- /dev/null +++ b/crlcore/etc/common/misc.py @@ -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 ) + + diff --git a/crlcore/etc/common/patterns.py b/crlcore/etc/common/patterns.py new file mode 100644 index 00000000..e82a3f25 --- /dev/null +++ b/crlcore/etc/common/patterns.py @@ -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 ' ] ) diff --git a/crlcore/etc/common/stratus1.py b/crlcore/etc/common/stratus1.py new file mode 100644 index 00000000..b010574e --- /dev/null +++ b/crlcore/etc/common/stratus1.py @@ -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 ) diff --git a/crlcore/etc/common/technology.py b/crlcore/etc/common/technology.py new file mode 100644 index 00000000..bd3b1504 --- /dev/null +++ b/crlcore/etc/common/technology.py @@ -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) ) + diff --git a/crlcore/etc/node180/__init__.py b/crlcore/etc/node180/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/crlcore/etc/node180/scn6m_deep_09/__init__.py b/crlcore/etc/node180/scn6m_deep_09/__init__.py new file mode 100644 index 00000000..818db7fb --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/__init__.py @@ -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() diff --git a/crlcore/etc/node180/scn6m_deep_09/alliance.py b/crlcore/etc/node180/scn6m_deep_09/alliance.py new file mode 100644 index 00000000..967a73c9 --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/alliance.py @@ -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 ) diff --git a/crlcore/etc/node180/scn6m_deep_09/analog.py b/crlcore/etc/node180/scn6m_deep_09/analog.py new file mode 100644 index 00000000..d8ecd2fc --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/analog.py @@ -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 diff --git a/crlcore/etc/node180/scn6m_deep_09/devices.py b/crlcore/etc/node180/scn6m_deep_09/devices.py new file mode 100644 index 00000000..13096c2f --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/devices.py @@ -0,0 +1,130 @@ + +# 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 : "./node180/scn6m_deep_09/devices.py" | +# +-----------------------------------------------------------------+ + + +import helpers +import common.devices +from common.devices import addDevice + + +chamsDir = helpers.sysConfDir + '/share/coriolis2/' +spiceDir = chamsDir + 'spice/' + + +addDevice( name = 'DifferentialPairBulkConnected' + , spice = spiceDir+'DiffPairBulkConnected.spi' + , connectors = ( 'D1', 'D2', 'G1', 'G2', 'S' ) + , layouts = ( ('Horizontal M2' , 'DP_horizontalM2.py' ) + , ('Symmetrical' , 'DP_symmetrical.py' ) + , ('Common centroid', 'DP_2DCommonCentroid.py') + , ('Interdigitated' , 'DP_interdigitated.py' ) + , ('WIP DP' , 'WIP_DP.py' ) + ) + ) +addDevice( name = 'DifferentialPairBulkUnconnected' + , spice = spiceDir+'DiffPairBulkUnconnected.spi' + , connectors = ( 'D1', 'D2', 'G1', 'G2', 'S', 'B' ) + , layouts = ( ('Horizontal M2' , 'DP_horizontalM2.py' ) + , ('Symmetrical' , 'DP_symmetrical.py' ) + , ('Common centroid', 'DP_2DCommonCentroid.py') + , ('Interdigitated' , 'DP_interdigitated.py' ) + , ('WIP DP' , 'WIP_DP.py' ) + ) + ) +addDevice( name = 'LevelShifterBulkUnconnected' + , spice = spiceDir+'LevelShifterBulkUnconnected.spi' + , connectors = ( 'D1', 'D2', 'S1', 'S2', 'B' ) + , layouts = ( ('Horizontal M2' , 'LS_horizontalM2.py' ) + , ('Symmetrical' , 'LS_symmetrical.py' ) + , ('Common centroid', 'LS_2DCommonCentroid.py') + , ('Interdigitated' , 'LS_interdigitated.py' ) + ) + ) +addDevice( name = 'TransistorBulkConnected' + , spice = spiceDir+'TransistorBulkConnected.spi' + , connectors = ( 'D', 'G', 'S' ) + , layouts = ( ('Rotate transistor', 'Transistor_rotate.py') + , ('Common transistor', 'Transistor_common.py') + , ('WIP Transistor' , 'WIP_Transistor.py' ) + ) + ) +addDevice( name = 'TransistorBulkUnconnected' + , spice = spiceDir+'TransistorBulkUnconnected.spi' + , connectors = ( 'D', 'G', 'S', 'B' ) + , layouts = ( ('Rotate transistor', 'Transistor_rotate.py') + , ('Common transistor', 'Transistor_common.py') + , ('WIP Transistor' , 'WIP_Transistor.py' ) + ) + ) +addDevice( name = 'CrossCoupledPairBulkConnected' + , spice = spiceDir+'CCPairBulkConnected.spi' + , connectors = ( 'D1', 'D2', 'S' ) + , layouts = ( ('Horizontal M2' , 'CCP_horizontalM2.py' ) + , ('Symmetrical' , 'CCP_symmetrical.py' ) + , ('Common centroid', 'CCP_2DCommonCentroid.py') + , ('Interdigitated' , 'CCP_interdigitated.py' ) + ) + ) +addDevice( name = 'CrossCoupledPairBulkUnconnected' + , spice = spiceDir+'CCPairBulkUnconnected.spi' + , connectors = ( 'D1', 'D2', 'S', 'B' ) + , layouts = ( ('Horizontal M2' , 'CCP_horizontalM2.py' ) + , ('Symmetrical' , 'CCP_symmetrical.py' ) + , ('Common centroid', 'CCP_2DCommonCentroid.py') + , ('Interdigitated' , 'CCP_interdigitated.py' ) + ) + ) +addDevice( name = 'CommonSourcePairBulkConnected' + , spice = spiceDir+'CommonSourcePairBulkConnected.spi' + , connectors = ( 'D1', 'D2', 'S', 'G' ) + , layouts = ( ('Horizontal M2' , 'CSP_horizontalM2.py' ) + , ('Symmetrical' , 'CSP_symmetrical.py' ) + , ('Interdigitated' , 'CSP_interdigitated.py' ) + , ('WIP CSP' , 'WIP_CSP.py' ) + ) + ) +addDevice( name = 'CommonSourcePairBulkUnconnected' + , spice = spiceDir+'CommonSourcePairBulkUnconnected.spi' + , connectors = ( 'D1', 'D2', 'S', 'G', 'B' ) + , layouts = ( ('Horizontal M2' , 'CSP_horizontalM2.py' ) + , ('Symmetrical' , 'CSP_symmetrical.py' ) + , ('Interdigitated' , 'CSP_interdigitated.py' ) + , ('WIP CSP' , 'WIP_CSP.py' ) + ) + ) +addDevice( name = 'SimpleCurrentMirrorBulkConnected' + , spice = spiceDir+'CurrMirBulkConnected.spi' + , connectors = ( 'D1', 'D2', 'S' ) + , layouts = ( ('Horizontal M2' , 'SCM_horizontalM2.py' ) + , ('Symmetrical' , 'SCM_symmetrical.py' ) + , ('Common centroid', 'SCM_2DCommonCentroid.py') + , ('Interdigitated' , 'SCM_interdigitated.py' ) + ) + ) +addDevice( name = 'SimpleCurrentMirrorBulkUnconnected' + , spice = spiceDir+'CurrMirBulkUnconnected.spi' + , connectors = ( 'D1', 'D2', 'S', 'B' ) + , layouts = ( ('Horizontal M2' , 'SCM_horizontalM2.py' ) + , ('Symmetrical' , 'SCM_symmetrical.py' ) + , ('Common centroid', 'SCM_2DCommonCentroid.py') + , ('Interdigitated' , 'SCM_interdigitated.py' ) + ) + ) +addDevice( name = 'MIMCapacitor' + , spice = spiceDir+'MIMCapacitor.spi' + , connectors = ( 'P1', 'P2' ) + , layouts = ( ('SimpleMatrix' , 'MIM_simpleMatrix.py' ), + ) + ) + diff --git a/crlcore/etc/node180/scn6m_deep_09/display.py b/crlcore/etc/node180/scn6m_deep_09/display.py new file mode 100644 index 00000000..5ad9f6d8 --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/display.py @@ -0,0 +1,19 @@ + +# 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/display.py" | +# +-----------------------------------------------------------------+ + + +import common.display + + +common.display.createStyles( scale=0.5 ) diff --git a/crlcore/etc/node180/scn6m_deep_09/dtr_scn6m_deep_09.py b/crlcore/etc/node180/scn6m_deep_09/dtr_scn6m_deep_09.py new file mode 100644 index 00000000..b6a2d53b --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/dtr_scn6m_deep_09.py @@ -0,0 +1,167 @@ + +# Name: dtr_scn6m_deep_09.py -- mosis scalable CMOS SCN6M_DEEP General Purpose with MIM capacitor +# Unit: micro +# version: rev.LIP6-1 +# +# The MOSIS Scalable (SCMOS) design rules can be found here: +# https://www.mosis.com/files/scmos/scmos.pdf +# +# Used revision 8.00 of May 11, 2009. + +from Hurricane import DbU +from helpers.AnalogTechno import Length +from helpers.AnalogTechno import Area +from helpers.AnalogTechno import Asymmetric +from helpers.AnalogTechno import loadAnalogTechno + + +analogTechnologyTable = \ + ( ('Header', 'scmos6m_deep_09', DbU.UnitPowerMicro, 'rev.LIP6-1') + # ------------------------------------------------------------------------------------ + # ( Rule name , [Layer1] , [Layer2] , Value, Rule flags , Reference ) + , ('physicalGrid' , 0.09 , Length , 'N/A') + , ('transistorMinL' , 0.18 , Length , '2l rule 3.1 p.26') + , ('transistorMaxL' , 18 , Length , '200l arbitrary') + , ('transistorMinW' , 0.27 , Length , '3l arbitrary') + , ('transistorMaxW' , 270 , Length , '300l arbitrary') + + , ('minWidth' , 'nWell' , 1.08 , Length , '12l rule 1.1 p.16') + , ('minSpacing' , 'nWell' , 1.62 , Length , '18l rule 1.2 p.16') + , ('minArea' , 'nWell' , 0 , Area , 'N/A') + , ('minWidth' , 'active' , 0.27 , Length , '3l rule 2.1 p.19') + , ('minSpacing' , 'active' , 0.27 , Length , '3l rule 2.2 p.19') + , ('minArea' , 'active' , 0 , Area , 'N/A') + , ('minEnclosure' , 'nWell' , 'active' , 0.54 , Length|Asymmetric, 'rule X.Y, p.Z') + , ('minEnclosure' , 'nImplant', 'nWell' , 0 , Length|Asymmetric, 'rule X.Y, p.Z') + , ('minWidth' , 'poly' , 0.18 , Length , '2l rule 3.1 p.26') + , ('minSpacing' , 'poly' , 0.27 , Length , '3l rule 3.2 p.26') + , ('minGateSpacing' , 'poly' , 0.36 , Length , '4l rule 3.2.a p.26') + , ('minArea' , 'poly' , 0 , Area , 'N/A') + , ('minGateExtension' , 'poly' , 'active' , 0.225, Length|Asymmetric, '2.5l rule 3.3 p.26') + , ('minGateExtension' , 'active' , 'poly' , 0.225, Length|Asymmetric, 'N/A') + , ('minExtension' , 'poly' , 'active' , 0.225, Length|Asymmetric, 'N/A') + , ('minExtension' , 'active' , 'poly' , 0.36 , Length|Asymmetric, '4l rule 3.4 p.26') + , ('minSpacing' , 'poly' , 'active' , 0.09 , Length , '1l rule 3.5 p.26') + + , ('minGateSpacing' , 'nImplant', 'poly' , 0.27 , Length , '3l rule 4.1 N+ p.29') + , ('minEnclosure' , 'nImplant', 'active' , 0.18 , Length|Asymmetric, '2l rule 4.2 N+ p.29') + , ('minExtension' , 'nImplant', 'active' , 0.18 , Length|Asymmetric, 'dup. 4.2 N+' ) + , ('minEnclosure' , 'nImplant', 'cut0' , 0.135, Length|Asymmetric, '1.5l rule 4.3 N+ p.29') + , ('minExtension' , 'nImplant', 'cut0' , 0.135, Length|Asymmetric, 'dup. 4.3 N+' ) + , ('minWidth' , 'nImplant' , 0.36 , Length , '4l rule 4.4 N+ p.29') + , ('minSpacing' , 'nImplant' , 0.36 , Length , '4l rule 4.4 N+ p.29') + , ('minArea' , 'nImplant' , 0 , Area , 'N/A') + , ('minSpacing' , 'nImplant', 'active' , 0 , Length , 'N/A') + , ('minEnclosure' , 'nImplant', 'poly' , 0 , Length|Asymmetric, 'N/A') + , ('minLengthEnclosure', 'nImplant', 'active' , 0 , Length|Asymmetric, 'N/A') + , ('minWidthEnclosure' , 'nImplant', 'poly' , 0 , Length|Asymmetric, 'N/A') + , ('minGateEnclosure' , 'nImplant', 'poly' , 0 , Length|Asymmetric, 'N/A') + , ('minStrapEnclosure' , 'nImplant' , 0.135, Length , 'N/A') + , ('minSpacing' , 'nImplant', 'pImplant', 0 , Length , 'N/A') + + , ('minGateSpacing' , 'pImplant', 'poly' , 0.27 , Length , '3l rule 4.1 P+ p.29') + , ('minEnclosure' , 'pImplant', 'active' , 0.18 , Length|Asymmetric, '2l rule 4.2 P+ p.29') + , ('minExtension' , 'pImplant', 'active' , 0.18 , Length|Asymmetric, 'dup. 4.2 P+' ) + , ('minEnclosure' , 'pImplant', 'cut0' , 0.135, Length|Asymmetric, '1.5l rule 4.3 P+ p.29') + , ('minExtension' , 'pImplant', 'cut0' , 0.135, Length|Asymmetric, 'dup. 4.3 P-' ) + , ('minWidth' , 'pImplant' , 0.36 , Length , '4l rule 4.4 P+ p.29') + , ('minSpacing' , 'pImplant' , 0.36 , Length , '4l rule 4.4 P+ p.29') + , ('minArea' , 'pImplant' , 0 , Area , 'N/A') + , ('minSpacing' , 'pImplant', 'active' , 0 , Length , 'N/A') + , ('minEnclosure' , 'pImplant', 'poly' , 0 , Length|Asymmetric, 'N/A') + , ('minLengthEnclosure', 'pImplant', 'active' , 0 , Length|Asymmetric, 'N/A') + , ('minWidthEnclosure' , 'pImplant', 'poly' , 0 , Length|Asymmetric, 'N/A') + , ('minGateEnclosure' , 'pImplant', 'poly' , 0 , Length|Asymmetric, 'N/A') + , ('minStrapEnclosure' , 'pImplant' , 0.135, Length , 'N/A') + + , ('minWidth' , 'cut0' , 0.18 , Length , '2l rule 5.1 p.35') + , ('minEnclosure' , 'poly' , 'cut0' , 0.135, Length|Asymmetric, '1.5l rule 5.2 p.35') + , ('minExtension' , 'poly' , 'cut0' , 0.135, Length|Asymmetric, 'dup. 5.2' ) + , ('minSpacing' , 'cut0' , 0.36 , Length , '4l rule 5.3 p.35') + , ('minGateSpacing' , 'cut0' , 'poly' , 0.18 , Length|Asymmetric, '2l rule 5.4 p.35') + , ('minSpacing' , 'cut0' , 'poly' , 0.18 , Length , 'dup. 5.4' ) + , ('minSpacing' , 'cut0' , 'active' , 0.18 , Length , 'dup. 5.4' ) + # Rule 6.1, 6.3 & 6.4 are the same as 5.1, 5.3 & 5.4. + , ('minEnclosure' , 'active' , 'cut0' , 0.135, Length|Asymmetric, '1.5l rule 6.2 p.37') + + , ('minWidth' , 'metal1' , 0.27 , Length , '3l rule 7.1 p.39') + , ('minSpacing' , 'metal1' , 0.27 , Length , '3l rule 7.2 p.39') + , ('minArea' , 'metal1' , 0 , Area , 'N/A') + , ('minEnclosure' , 'metal1' , 'cut0' , 0.09 , Length|Asymmetric, '1l rule 7.3 p.39') + , ('minExtension' , 'metal1' , 'cut0' , 0.09 , Length|Asymmetric, 'dup. 7.3' ) + + , ('minWidth' , 'cut1' , 0.27 , Length , '3l rule 8.1 p.40') + , ('minSpacing' , 'cut1' , 0.27 , Length , '3l rule 8.2 p.40') + , ('minEnclosure' , 'metal1' , 'cut1' , 0.09 , Length|Asymmetric, '1l rule 8.3 p.40') + , ('lineExtension' , 'metal1' , 'cut1' , 0.09 , Length|Asymmetric, 'N/A') + + , ('minWidth' , 'metal2' , 0.27 , Length , '3l rule 9.1 p.41') + , ('minSpacing' , 'metal2' , 0.36 , Length , '4l rule 9.2 p.41') + , ('minArea' , 'metal2' , 0 , Area , 'N/A') + , ('minExtension' , 'metal2' , 'cut1' , 0.09 , Length|Asymmetric, '1l rule 9.3 p.41') + , ('minEnclosure' , 'metal2' , 'cut1' , 0.09 , Length|Asymmetric, 'dup. 9.3' ) + + , ('minWidth' , 'cut2' , 0.27 , Length , '3l rule 14.1 p.42') + , ('minSpacing' , 'cut2' , 0.27 , Length , '3l rule 14.2 p.42') + , ('minEnclosure' , 'metal2' , 'cut2' , 0.09 , Length|Asymmetric, '1l rule 14.3 p.42') + + , ('minWidth' , 'metal3' , 0.27 , Length , '3l rule 15.1 p.43') + , ('minSpacing' , 'metal3' , 0.36 , Length , '4l rule 15.2 p.43') + , ('minArea' , 'metal3' , 0 , Area , 'N/A') + , ('minExtension' , 'metal3' , 'cut2' , 0.09 , Length|Asymmetric, '1l rule 15.3 p.43') + , ('minEnclosure' , 'metal3' , 'cut2' , 0.09 , Length|Asymmetric, 'dup. 15.3' ) + + , ('minWidth' , 'cut3' , 0.27 , Length , '3l rule 21.1 p.44') + , ('minSpacing' , 'cut3' , 0.27 , Length , '3l rule 21.2 p.44') + , ('minEnclosure' , 'metal3' , 'cut3' , 0.09 , Length|Asymmetric, '1l rule 21.3 p.44') + + , ('minWidth' , 'metal4' , 0.27 , Length , '3l rule 22.1 p.45') + , ('minSpacing' , 'metal4' , 0.36 , Length , '4l rule 22.2 p.45') + , ('minArea' , 'metal4' , 0 , Area , 'N/A') + , ('minExtension' , 'metal4' , 'cut3' , 0.09 , Length|Asymmetric, '1l rule 22.3 p.45') + , ('minEnclosure' , 'metal4' , 'cut3' , 0.09 , Length|Asymmetric, 'dup. 22.3' ) + + , ('minWidth' , 'cut4' , 0.27 , Length , '3l rule 25.1 p.49') + , ('minSpacing' , 'cut4' , 0.27 , Length , '3l rule 25.2 p.49') + , ('minEnclosure' , 'metal4' , 'cut4' , 0.09 , Length|Asymmetric, '1l rule 25.3 p.49') + + , ('minWidth' , 'metal5' , 0.27 , Length , '3l rule 26.1 p.50') + , ('minSpacing' , 'metal5' , 0.36 , Length , '4l rule 26.2 p.50') + , ('minArea' , 'metal5' , 0 , Area , 'N/A') + , ('minExtension' , 'metal5' , 'cut4' , 0.09 , Length|Asymmetric, '1l rule 26.3 p.50') + , ('minEnclosure' , 'metal5' , 'cut4' , 0.09 , Length|Asymmetric, 'dup. 26.3' ) + + , ('minWidth' , 'cut5' , 0.36 , Length , '4l rule 29.1 p.51') + , ('minSpacing' , 'cut5' , 0.36 , Length , '4l rule 29.2 p.51') + , ('minEnclosure' , 'metal5' , 'cut5' , 0.09 , Length|Asymmetric, '1l rule 29.3 p.51') + + , ('minWidth' , 'metal6' , 0.45 , Length , '5l rule 30.1 p.52') + , ('minSpacing' , 'metal6' , 0.45 , Length , '5l rule 30.2 p.52') + , ('minArea' , 'metal6' , 0 , Area , 'N/A') + , ('minExtension' , 'metal6' , 'cut5' , 0.18 , Length|Asymmetric, '2l rule 30.3 p.52') + , ('minEnclosure' , 'metal6' , 'cut5' , 0.18 , Length|Asymmetric, 'dup. 30.3' ) + + # MIM Rules (Metal In Metal Capacitor). + # In SCN6M_DEEP metbot is metal5 and metcap is *below* metal6. + # metbot can be accessed with cut4 (down) and via5 (up). + # metcap can only be accessed *from* up with cut5. + , ('minWidth' , 'metcap' , 4.05 , Length , '45l rule 28.1 p.46') + , ('minWidth' , 'metcapdum' , 0.45 , Length , '9l rule 28.8 p.47') + , ('maxWidth' , 'metcap' , 30.0 , Length , '30um rule 28.12 p.47') + , ('maxWidth' , 'metbot' , 35.0 , Length , '35um rule 28.13 p.47') + , ('minSpacing' , 'metcap' , 1.26 , Length , '14l rule 28.2 p.46') + , ('minSpacing' , 'metbot' , 0.81 , Length , '9l rule 28.9 p.47') + , ('minSpacing' , 'cut4' , 'metcap' , 0.45 , Length , '5l rule 28.5 D p.46') + , ('minSpacing' , 'cut5' , 'metcap' , 0.45 , Length , '5l rule 28.5 U p.46') + , ('minSpacingOnMetbot', 'cut5' , 4.05 , Length , '45l rule 28.11 p.47') + , ('minSpacingOnMetcap', 'cut5' , 2.07 , Length , '23l rule 28.10 p.47') + , ('minEnclosure' , 'metbot' , 'metcap' , 0.45 , Length|Asymmetric, '5l rule 28.3 p.46') + , ('minEnclosure' , 'metbot' , 'cut4' , 0.18 , Length|Asymmetric, '2l rule 28.6 D p.46') + , ('minEnclosure' , 'metbot' , 'cut5' , 0.18 , Length|Asymmetric, '2l rule 28.6 U p.46') + , ('minEnclosure' , 'metcap' , 'cut5' , 0.27 , Length|Asymmetric, '3l rule 28.4 p.46') + , ('minArea' , 'metcap' , 0 , Area , 'N/A') + , ('minAreaInMetcap' , 'cut5' , 0 , Area , 'N/A') + ) + + +loadAnalogTechno( analogTechnologyTable, __file__ ) diff --git a/crlcore/etc/node180/scn6m_deep_09/etesian.py b/crlcore/etc/node180/scn6m_deep_09/etesian.py new file mode 100644 index 00000000..2ef250e8 --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/etesian.py @@ -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/etesian.py" | +# +-----------------------------------------------------------------+ + + +import common.etesian diff --git a/crlcore/etc/node180/scn6m_deep_09/kite.py b/crlcore/etc/node180/scn6m_deep_09/kite.py new file mode 100644 index 00000000..7195995e --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/kite.py @@ -0,0 +1,257 @@ + +# 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/kite.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from Hurricane import DataBase +from CRL import AllianceFramework +from CRL import RoutingGauge +from CRL import RoutingLayerGauge +from CRL import CellGauge +import helpers +from helpers import l, n, u +import common.kite + + +p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 ) +p = Cfg.getParamString ( 'katabatic.routingGauge' ).setString ( 'sxlib' ) +p = Cfg.getParamInt ( "katabatic.globalLengthThreshold" ).setInt ( 1450 ) +p = Cfg.getParamPercentage( "katabatic.saturateRatio" ).setPercentage( 80 ) +p = Cfg.getParamInt ( "katabatic.saturateRp" ).setInt ( 8 ) +p = Cfg.getParamString ( 'katabatic.topRoutingLayer' ).setString ( 'METAL6' ) + + # Kite parameters. +p = Cfg.getParamInt( "kite.hTracksReservedLocal" ); p.setInt( 4 ); p.setMin( 0 ); p.setMax( 18 ) +p = Cfg.getParamInt( "kite.vTracksReservedLocal" ); p.setInt( 3 ); p.setMin( 0 ); p.setMax( 18 ) +p = Cfg.getParamInt( "kite.eventsLimit" ); p.setInt( 4000002 ) +p = Cfg.getParamInt( "kite.ripupCost" ); p.setInt( 3 ); p.setMin( 0 ) +p = Cfg.getParamInt( "kite.strapRipupLimit" ); p.setInt( 16 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.localRipupLimit" ); p.setInt( 9 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.globalRipupLimit" ); p.setInt( 5 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.longGlobalRipupLimit" ); p.setInt( 5 ); p.setMin( 1 ) + +# Anabatic & Katana parameters are temporarily hosted here. +p = Cfg.getParamString ( 'anabatic.routingGauge' ); p.setString ( 'msxlib' ) +p = Cfg.getParamInt ( "anabatic.globalLengthThreshold" ); p.setInt ( 1450 ) +p = Cfg.getParamPercentage( "anabatic.saturateRatio" ); p.setPercentage( 80 ) +p = Cfg.getParamInt ( "anabatic.saturateRp" ); p.setInt ( 8 ) +p = Cfg.getParamString ( 'anabatic.topRoutingLayer' ); p.setString ( 'METAL5' ) +p = Cfg.getParamInt ( "anabatic.edgeLength" ); p.setInt ( 48 ) +p = Cfg.getParamInt ( "anabatic.edgeWidth" ); p.setInt ( 8 ) +p = Cfg.getParamDouble ( "anabatic.edgeCostH" ); p.setDouble ( 19.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeCostK" ); p.setDouble ( -60.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeHInc" ); p.setDouble ( 1.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeHScaling" ); p.setDouble ( 1.0 ) +p = Cfg.getParamInt ( "anabatic.globalIterations" ); p.setInt ( 10 ); p.setMin(1); p.setMax(100) +p = Cfg.getParamEnumerate ( "anabatic.gcell.displayMode" ); p.setInt ( 1 ) +p.addValue( "Boundary", 1 ) +p.addValue( "Density" , 2 ) + +p = Cfg.getParamInt ( "katana.hTracksReservedLocal" ); p.setInt ( 3 ); p.setMin(0); p.setMax(20) +p = Cfg.getParamInt ( "katana.vTracksReservedLocal" ); p.setInt ( 3 ); p.setMin(0); p.setMax(20) +p = Cfg.getParamInt ( "katana.termSatReservedLocal" ); p.setInt ( 8 ) +p = Cfg.getParamInt ( "katana.termSatThreshold" ); p.setInt ( 9 ) +p = Cfg.getParamInt ( "katana.eventsLimit" ); p.setInt ( 4000002 ) +p = Cfg.getParamInt ( "katana.ripupCost" ); p.setInt ( 3 ); p.setMin(0) +p = Cfg.getParamInt ( "katana.strapRipupLimit" ); p.setInt ( 16 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.localRipupLimit" ); p.setInt ( 9 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.globalRipupLimit" ); p.setInt ( 5 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.longGlobalRipupLimit" ); p.setInt ( 5 ); p.setMin(1) +p = Cfg.getParamString( 'chip.padCoreSide' ); p.setString( 'South' ) + + +tech = DataBase.getDB().getTechnology() +af = AllianceFramework.get() +rg = RoutingGauge.create( 'msxlib' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA12). + , l(7) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL3') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 2 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA34). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL4') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 3 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(15) # track pitch. + , l(6) # wire width. + , l(4) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL5') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 4 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(15) # track pitch. + , l(6) # wire width. + , l(4) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL6') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 5 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(15) # track pitch. + , l(6) # wire width. + , l(4) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +rg = RoutingGauge.create( 'msxlib4' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA12). + , l(7) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL3') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 2 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(8) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA12). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL4') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 3 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +rg = RoutingGauge.create( 'msxlib-2M' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(3) # VIA side (that is VIA12). + , l(7) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(3) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +af.setRoutingGauge( 'msxlib' ) + +# Gauge for standard cells. +cg = CellGauge.create( 'msxlib' + , 'metal2' # pin layer name. + , l( 10.0) # pitch. + , l(100.0) # cell slice height. + , l( 10.0) # cell slice step. + ) +af.addCellGauge( cg ) +cg = CellGauge.create( 'msxlib4' + , 'metal2' # pin layer name. + , l( 10.0) # pitch. + , l(100.0) # cell slice height. + , l( 10.0) # cell slice step. + ) +af.addCellGauge( cg ) + +# Gauge for Alliance symbolic I/O pads. +cg = CellGauge.create( 'phlib80' + , 'metal2' # pin layer name. + , l( 10.0) # pitch. + , l(312.0) # cell slice height. + , l(246.0) # cell slice step. + ) +af.addCellGauge( cg ) diff --git a/crlcore/etc/node180/scn6m_deep_09/misc.py b/crlcore/etc/node180/scn6m_deep_09/misc.py new file mode 100644 index 00000000..1b53c56e --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/misc.py @@ -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/misc.py" | +# +-----------------------------------------------------------------+ + + +import common.misc diff --git a/crlcore/etc/node180/scn6m_deep_09/patterns.py b/crlcore/etc/node180/scn6m_deep_09/patterns.py new file mode 100644 index 00000000..9063aa64 --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/patterns.py @@ -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/patterns.py" | +# +-----------------------------------------------------------------+ + + +import common.patterns diff --git a/crlcore/etc/node180/scn6m_deep_09/plugins.py b/crlcore/etc/node180/scn6m_deep_09/plugins.py new file mode 100644 index 00000000..7a45a121 --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/plugins.py @@ -0,0 +1,27 @@ + +# 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/plugins.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from helpers import l, u, n + + +Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 ) +Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) ) +Cfg.getParamInt ( "chip.block.rails.vWidth" ).setInt ( l( 24) ) +Cfg.getParamInt ( "chip.block.rails.hSpacing" ).setInt ( l( 12) ) +Cfg.getParamInt ( "chip.block.rails.vSpacing" ).setInt ( l( 12) ) +Cfg.getParamInt ( 'clockTree.minimumSide' ).setInt ( l(1200) ) +Cfg.getParamString( 'clockTree.buffer' ).setString( 'buf_x2') +Cfg.getParamString( 'clockTree.placerEngine' ).setString( 'Etesian') diff --git a/crlcore/etc/node180/scn6m_deep_09/stratus1.py b/crlcore/etc/node180/scn6m_deep_09/stratus1.py new file mode 100644 index 00000000..2da63f9a --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/stratus1.py @@ -0,0 +1,21 @@ + +# 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/stratus1.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +import common.stratus1 + + +Cfg.getParamString( "stratus1.format" ).setString( "vst" ) +Cfg.getParamString( "stratus1.simulator" ).setString( "asimut" ) diff --git a/crlcore/etc/node180/scn6m_deep_09/technology.py b/crlcore/etc/node180/scn6m_deep_09/technology.py new file mode 100644 index 00000000..898f03d6 --- /dev/null +++ b/crlcore/etc/node180/scn6m_deep_09/technology.py @@ -0,0 +1,228 @@ + +# 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/technology.py" | +# +-----------------------------------------------------------------+ + + +from helpers import l, u, n +from Hurricane import DbU +from Hurricane import DataBase +from Hurricane import Technology + + +tech = DataBase.getDB().getTechnology() +if tech: + print WarningMessage( 'cmos.technology: Technology already exists, "%s"' % tech.getName() ) +else: + tech = Technology.create( DataBase.getDB(), 'scn6m_deep_09' ) + +DbU.setPrecision ( 2 ) +DbU.setPhysicalsPerGrid ( 0.005, DbU.UnitPowerMicro ) +DbU.setGridsPerLambda ( 18 ) +DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) ) +DbU.setPolygonStep ( DbU.fromGrid ( 9.0) ) + + +import common +from common.technology import * + +# Redefine all size from the "cmos" common part. +NWELL.setExtentionCap( nWell, l(4.0) ) +PWELL.setExtentionCap( pWell, l(4.0) ) + +NTIE.setMinimalSize ( l( 3.0) ) +NTIE.setExtentionCap ( nWell , l( 3.0) ) +NTIE.setExtentionWidth( nWell , l( 2.0) ) +NTIE.setExtentionCap ( nImplant, l( 2.5) ) +NTIE.setExtentionWidth( nImplant, l( 1.5) ) +NTIE.setExtentionCap ( active , l( 0.5) ) +NTIE.setExtentionWidth( active , l(-0.5) ) + +PTIE.setMinimalSize ( l( 3.0) ) +PTIE.setExtentionCap ( nWell , l( 3.0) ) +PTIE.setExtentionWidth( nWell , l( 2.0) ) +PTIE.setExtentionCap ( nImplant, l( 2.5) ) +PTIE.setExtentionWidth( nImplant, l( 1.5) ) +PTIE.setExtentionCap ( active , l( 0.5) ) +PTIE.setExtentionWidth( active , l(-0.5) ) + +NDIF.setMinimalSize ( l(3.0) ) +NDIF.setExtentionCap ( nImplant, l(4.0) ) +NDIF.setExtentionWidth( nImplant, l(2.0) ) +NDIF.setExtentionCap ( active , l(2.0) ) +NDIF.setExtentionWidth( active , l(0.0) ) + +PDIF.setMinimalSize ( l(3.0) ) +PDIF.setExtentionCap ( pImplant, l(4.0) ) +PDIF.setExtentionWidth( pImplant, l(2.0) ) +PDIF.setExtentionCap ( active , l(2.0) ) +PDIF.setExtentionWidth( active , l(0.0) ) + +GATE.setMinimalSize ( l(2.0) ) +GATE.setExtentionCap ( poly , l(2.5) ) + +NTRANS.setMinimalSize ( l( 2.0) ) +NTRANS.setExtentionCap ( nImplant, l( 2.0) ) +NTRANS.setExtentionWidth( nImplant, l( 7.0) ) +NTRANS.setExtentionCap ( active , l( 0.0) ) +NTRANS.setExtentionWidth( active , l( 3.0) ) +NTRANS.setExtentionCap ( poly , l( 3.0) ) +NTRANS.setExtentionWidth( poly , l( 0.0) ) + +PTRANS.setMinimalSize ( l( 2.0) ) +PTRANS.setExtentionCap ( nWell , l( 2.5) ) +PTRANS.setExtentionWidth( nWell , l( 7.5) ) +PTRANS.setExtentionCap ( pImplant, l( 2.0) ) +PTRANS.setExtentionWidth( pImplant, l( 7.0) ) +PTRANS.setExtentionCap ( active , l( 0.0) ) +PTRANS.setExtentionWidth( active , l( 3.0) ) +PTRANS.setExtentionCap ( poly , l( 3.0) ) +PTRANS.setExtentionWidth( poly , l( 0.0) ) + +POLY .setMinimalSize ( l(2.0) ) +POLY .setExtentionCap ( poly , l(1.0) ) +POLY2.setMinimalSize ( l(2.0) ) +POLY2.setExtentionCap ( poly , l(1.0) ) + +# Routing Layers (symbolic). +METAL1 .setMinimalSize ( l( 2.0) ) +METAL1 .setExtentionCap ( metal1 , l( 2.0) ) +METAL1 .setExtentionWidth( metal1 , l( 1.0) ) +METAL1 .setMinimalSpacing( l( 6.0) ) +METAL2 .setMinimalSize ( l( 4.0) ) +METAL2 .setExtentionCap ( metal2 , l( 2.0) ) +METAL2 .setMinimalSpacing( l( 6.0) ) +METAL3 .setMinimalSize ( l( 4.0) ) +METAL3 .setExtentionCap ( metal3 , l( 2.0) ) +METAL3 .setMinimalSpacing( l( 6.0) ) +METAL4 .setMinimalSize ( l( 4.0) ) +METAL4 .setExtentionCap ( metal4 , l( 2.0) ) +METAL4 .setMinimalSpacing( l( 6.0) ) +METAL5 .setMinimalSize ( l( 4.0) ) +METAL5 .setExtentionCap ( metal5 , l( 2.0) ) +METAL5 .setMinimalSpacing( l( 6.0) ) +METAL6 .setMinimalSize ( l(10.0) ) +METAL6 .setExtentionCap ( metal6 , l( 5.0) ) +METAL6 .setMinimalSpacing( l( 6.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( 2.0) ) +CONT_BODY_N.setEnclosure ( nWell , l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_N.setEnclosure ( nImplant, l( 3.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_N.setEnclosure ( active , l( 1.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_N.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_BODY_P.setMinimalSize( l( 2.0) ) +CONT_BODY_P.setEnclosure ( pWell , l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_P.setEnclosure ( pImplant, l( 3.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_P.setEnclosure ( active , l( 1.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_P.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_DIF_N.setMinimalSize( l( 2.0) ) +CONT_DIF_N.setEnclosure ( nImplant, l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_N.setEnclosure ( active , l( 2.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_N.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_DIF_P.setMinimalSize( l( 2.0) ) +CONT_DIF_P.setEnclosure ( pImplant, l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_P.setEnclosure ( active , l( 2.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_P.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_POLY.setMinimalSize( l( 2.0) ) +CONT_POLY.setEnclosure ( poly , l( 2.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_POLY.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +# VIAs (i.e. Metal <--> Metal) (symbolic). +VIA12 .setMinimalSize( l( 2.0) ) +VIA12 .setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA12 .setEnclosure ( metal2 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA23 .setMinimalSize( l( 2.0) ) +VIA23 .setEnclosure ( metal2 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA23 .setEnclosure ( metal3 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA34 .setMinimalSize( l( 2.0) ) +VIA34 .setEnclosure ( metal3 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA34 .setEnclosure ( metal4 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA45 .setMinimalSize( l( 2.0) ) +VIA45 .setEnclosure ( metal4 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA45 .setEnclosure ( metal5 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA56 .setMinimalSize( l( 5.0) ) +VIA56 .setEnclosure ( metal5 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA56 .setEnclosure ( metal6 , l( 1.5), Layer.EnclosureH|Layer.EnclosureV ) +#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 ) +#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 ) +#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 ) +#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 ) + +# Blockages (symbolic). +BLOCKAGE1 .setMinimalSize ( l( 4.0) ) +BLOCKAGE1 .setExtentionCap ( blockage1 , l( 2.0) ) +BLOCKAGE1 .setExtentionWidth( blockage1 , l( 0.5) ) +BLOCKAGE2 .setMinimalSize ( l( 4.0) ) +BLOCKAGE2 .setExtentionCap ( blockage2 , l( 2.0) ) +BLOCKAGE3 .setMinimalSize ( l( 4.0) ) +BLOCKAGE3 .setExtentionCap ( blockage3 , l( 2.0) ) +BLOCKAGE4 .setMinimalSize ( l( 4.0) ) +BLOCKAGE4 .setExtentionCap ( blockage4 , l( 2.0) ) +BLOCKAGE5 .setMinimalSize ( l( 4.0) ) +BLOCKAGE5 .setExtentionCap ( blockage5 , l( 2.0) ) +BLOCKAGE6 .setMinimalSize ( l( 8.0) ) +BLOCKAGE6 .setExtentionCap ( blockage6 , l( 2.5) ) +#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) ) + + +gdsLayersTable = \ + [ ("pWell" , "CWN" , 41, 0) + , ("nWell" , "CWP" , 42, 0) + , ("active" , "CAA" , 43, 0) + , ("pImplant", "CSP" , 44, 0) + , ("nImplant", "CSN" , 45, 0) + , ("poly" , "CPG" , 46, 0) + , ("poly2" , "CM1" , 49, 0) # poly2 is in fact metal1. + , ("cut0" , "CCC" , 25, 0) + , ("metal1" , "CM1" , 49, 0) + , ("cut1" , "CV1" , 50, 0) + , ("metal2" , "CM2" , 51, 0) + , ("cut2" , "CV2" , 61, 0) + , ("metal3" , "CM3" , 62, 0) + , ("cut3" , "CV3" , 30, 0) + , ("metal4" , "CM4" , 31, 0) + , ("cut4" , "CV4" , 32, 0) + , ("metal5" , "CM5" , 33, 0) + , ("cut5" , "CV5" , 36, 0) + , ("metal6" , "CM6" , 37, 0) + ] + + +common.loadGdsLayers( gdsLayersTable ) diff --git a/crlcore/etc/symbolic/__init__.py b/crlcore/etc/symbolic/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/crlcore/etc/symbolic/cmos/__init__.py b/crlcore/etc/symbolic/cmos/__init__.py new file mode 100644 index 00000000..df454324 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/__init__.py @@ -0,0 +1,35 @@ + +# 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/symbolic/cmos/__init__.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from Hurricane import DataBase +from CRL import System + +Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile ) + +if not DataBase.getDB(): DataBase.create() +System.get() + +import symbolic.cmos.misc +import symbolic.cmos.technology +import symbolic.cmos.display +import symbolic.cmos.analog +import symbolic.cmos.alliance +import symbolic.cmos.etesian +import symbolic.cmos.kite +import symbolic.cmos.plugins +import symbolic.cmos.stratus1 + +Cfg.Configuration.popDefaultPriority() diff --git a/crlcore/etc/symbolic/cmos/alliance.py b/crlcore/etc/symbolic/cmos/alliance.py new file mode 100644 index 00000000..95450e0c --- /dev/null +++ b/crlcore/etc/symbolic/cmos/alliance.py @@ -0,0 +1,55 @@ + +# 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/symbolic/cmos/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 ( '.*_px$' ) + +env.setWORKING_LIBRARY( '.' ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/sxlib' , mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/dp_sxlib', mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/ramlib' , mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/romlib' , mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/rflib' , mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/rf2lib' , mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/pxlib' , mode=Environment.Append ) +env.addSYSTEM_LIBRARY ( library=cellsTop+'/padlib' , mode=Environment.Append ) diff --git a/crlcore/etc/symbolic/cmos/analog.py b/crlcore/etc/symbolic/cmos/analog.py new file mode 100644 index 00000000..ba5cdd26 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/analog.py @@ -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/symbolic/cmos/analog.py" | +# +-----------------------------------------------------------------+ + + +import common.analog diff --git a/crlcore/etc/symbolic/cmos/display.py b/crlcore/etc/symbolic/cmos/display.py new file mode 100644 index 00000000..5d04aa06 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/display.py @@ -0,0 +1,19 @@ + +# 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/symbolic/cmos/display.py" | +# +-----------------------------------------------------------------+ + + +import common.display + + +common.display.createStyles( scale=1.0 ) diff --git a/crlcore/etc/symbolic/cmos/etesian.py b/crlcore/etc/symbolic/cmos/etesian.py new file mode 100644 index 00000000..7e380e25 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/etesian.py @@ -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/symbolic/cmos/etesian.py" | +# +-----------------------------------------------------------------+ + + +import common.etesian diff --git a/crlcore/etc/symbolic/cmos/kite.py b/crlcore/etc/symbolic/cmos/kite.py new file mode 100644 index 00000000..1a325478 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/kite.py @@ -0,0 +1,184 @@ + +# 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/symbolic/cmos/kite.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from Hurricane import DataBase +from CRL import AllianceFramework +from CRL import RoutingGauge +from CRL import RoutingLayerGauge +from CRL import CellGauge +import helpers +from helpers import l, n, u +import common.kite + + +p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 ) +p = Cfg.getParamString ( 'katabatic.routingGauge' ).setString ( 'sxlib' ) +p = Cfg.getParamInt ( "katabatic.globalLengthThreshold" ).setInt ( 1450 ) +p = Cfg.getParamPercentage( "katabatic.saturateRatio" ).setPercentage( 80 ) +p = Cfg.getParamInt ( "katabatic.saturateRp" ).setInt ( 8 ) +p = Cfg.getParamString ( 'katabatic.topRoutingLayer' ).setString ( 'METAL5' ) + + # Kite parameters. +p = Cfg.getParamInt( "kite.hTracksReservedLocal" ); p.setInt( 3 ); p.setMin( 0 ); p.setMax( 20 ) +p = Cfg.getParamInt( "kite.vTracksReservedLocal" ); p.setInt( 3 ); p.setMin( 0 ); p.setMax( 20 ) +p = Cfg.getParamInt( "kite.eventsLimit" ); p.setInt( 4000002 ) +p = Cfg.getParamInt( "kite.ripupCost" ); p.setInt( 3 ); p.setMin( 0 ) +p = Cfg.getParamInt( "kite.strapRipupLimit" ); p.setInt( 16 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.localRipupLimit" ); p.setInt( 9 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.globalRipupLimit" ); p.setInt( 5 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.longGlobalRipupLimit" ); p.setInt( 5 ); p.setMin( 1 ) + +# Anabatic & Katana parameters are temporarily hosted here. +p = Cfg.getParamString ( 'anabatic.routingGauge' ); p.setString ( 'sxlib' ) +p = Cfg.getParamInt ( "anabatic.globalLengthThreshold" ); p.setInt ( 1450 ) +p = Cfg.getParamPercentage( "anabatic.saturateRatio" ); p.setPercentage( 80 ) +p = Cfg.getParamInt ( "anabatic.saturateRp" ); p.setInt ( 8 ) +p = Cfg.getParamString ( 'anabatic.topRoutingLayer' ); p.setString ( 'METAL5' ) +p = Cfg.getParamInt ( "anabatic.edgeLength" ); p.setInt ( 24 ) +p = Cfg.getParamInt ( "anabatic.edgeWidth" ); p.setInt ( 4 ) +p = Cfg.getParamDouble ( "anabatic.edgeCostH" ); p.setDouble ( 19.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeCostK" ); p.setDouble ( -60.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeHScaling" ); p.setDouble ( 1.0 ) +p = Cfg.getParamInt ( "anabatic.globalIterations" ); p.setInt ( 10 ); p.setMin(1); p.setMax(100) +p = Cfg.getParamEnumerate ( "anabatic.gcell.displayMode" ); p.setInt ( 1 ) +p.addValue( "Boundary", 1 ) +p.addValue( "Density" , 2 ) + +p = Cfg.getParamInt ( "katana.hTracksReservedLocal" ); p.setInt ( 3 ); p.setMin(0); p.setMax(20) +p = Cfg.getParamInt ( "katana.vTracksReservedLocal" ); p.setInt ( 3 ); p.setMin(0); p.setMax(20) +p = Cfg.getParamInt ( "katana.termSatReservedLocal" ); p.setInt ( 8 ) +p = Cfg.getParamInt ( "katana.termSatThreshold" ); p.setInt ( 9 ) +p = Cfg.getParamInt ( "katana.eventsLimit" ); p.setInt ( 4000002 ) +p = Cfg.getParamInt ( "katana.ripupCost" ); p.setInt ( 3 ); p.setMin(0) +p = Cfg.getParamInt ( "katana.strapRipupLimit" ); p.setInt ( 16 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.localRipupLimit" ); p.setInt ( 9 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.globalRipupLimit" ); p.setInt ( 5 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.longGlobalRipupLimit" ); p.setInt ( 5 ); p.setMin(1) +p = Cfg.getParamString( 'chip.padCoreSide' ); p.setString( 'South' ) + + +tech = DataBase.getDB().getTechnology() +af = AllianceFramework.get() +rg = RoutingGauge.create( 'sxlib' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA12). + , l(4) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA23). + , l(4) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL3') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 2 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA34). + , l(4) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL4') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 3 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA23). + , l(4) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL5') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 4 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA23). + , l(4) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +rg = RoutingGauge.create( 'sxlib-2M' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA12). + , l(4) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(5) # track pitch. + , l(2) # wire width. + , l(1) # VIA side (that is VIA23). + , l(4) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) +af.setRoutingGauge( 'sxlib' ) + +# Gauge for standard cells. +cg = CellGauge.create( 'sxlib' + , 'metal2' # pin layer name. + , l( 5.0) # pitch. + , l( 50.0) # cell slice height. + , l( 5.0) # cell slice step. + ) +af.addCellGauge( cg ) + +# Gauge for Alliance symbolic I/O pads. +cg = CellGauge.create( 'pxlib' + , 'metal2' # pin layer name. + , l( 5.0) # pitch. + , l(400.0) # cell slice height. + , l(200.0) # cell slice step. + ) +af.addCellGauge( cg ) diff --git a/crlcore/etc/symbolic/cmos/misc.py b/crlcore/etc/symbolic/cmos/misc.py new file mode 100644 index 00000000..a1d731f7 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/misc.py @@ -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/symbolic/cmos/misc.py" | +# +-----------------------------------------------------------------+ + + +import common.misc diff --git a/crlcore/etc/symbolic/cmos/patterns.py b/crlcore/etc/symbolic/cmos/patterns.py new file mode 100644 index 00000000..84059a1a --- /dev/null +++ b/crlcore/etc/symbolic/cmos/patterns.py @@ -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/symbolic/cmos/patterns.py" | +# +-----------------------------------------------------------------+ + + +import common.patterns diff --git a/crlcore/etc/symbolic/cmos/plugins.py b/crlcore/etc/symbolic/cmos/plugins.py new file mode 100644 index 00000000..3a65e050 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/plugins.py @@ -0,0 +1,27 @@ + +# 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/symbolic/cmos/plugins.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from helpers import l, u, n + + +Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 ) +Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 12) ) +Cfg.getParamInt ( "chip.block.rails.vWidth" ).setInt ( l( 12) ) +Cfg.getParamInt ( "chip.block.rails.hSpacing" ).setInt ( l( 6) ) +Cfg.getParamInt ( "chip.block.rails.vSpacing" ).setInt ( l( 6) ) +Cfg.getParamInt ( 'clockTree.minimumSide' ).setInt ( l(600) ) +Cfg.getParamString( 'clockTree.buffer' ).setString( 'buf_x2') +Cfg.getParamString( 'clockTree.placerEngine' ).setString( 'Etesian') diff --git a/crlcore/etc/symbolic/cmos/stratus1.py b/crlcore/etc/symbolic/cmos/stratus1.py new file mode 100644 index 00000000..5c0537a2 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/stratus1.py @@ -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@lip6.fr | +# | =============================================================== | +# | Python : "./etc/symbolic/cmos/stratus1.py" | +# +-----------------------------------------------------------------+ + + +import os.path +import Cfg +import helpers +import common.stratus1 + + +Cfg.getParamString( "stratus1.format" ).setString( "vst" ) +Cfg.getParamString( "stratus1.simulator" ).setString( "asimut" ) +Cfg.getParamString( "stratus1.mappingName" ).setString( os.path.join(helpers.sysConfDir,'symbolic/cmos/stratus2sxlib.xml') ) diff --git a/crlcore/etc/symbolic/cmos/technology.py b/crlcore/etc/symbolic/cmos/technology.py new file mode 100644 index 00000000..9c9a84b5 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/technology.py @@ -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/symbolic/cmos/technology.py" | +# +-----------------------------------------------------------------+ + + +from helpers import l, u, n +from Hurricane import DbU +from Hurricane import DataBase +from Hurricane import Technology + + +tech = DataBase.getDB().getTechnology() +if tech: + print WarningMessage( 'cmos.technology: Technology already exists, "%s"' % tech.getName() ) +else: + tech = Technology.create( DataBase.getDB(), 'cmos' ) + +DbU.setPrecision ( 2 ) +DbU.setPhysicalsPerGrid ( 0.5, DbU.UnitPowerMicro ) +DbU.setGridsPerLambda ( 2 ) +DbU.setSymbolicSnapGridStep( DbU.fromLambda(1.0) ) +DbU.setPolygonStep ( DbU.fromGrid (2.0) ) + + +import common.technology + + +gdsLayersTable = \ + [ ("nWell" , "LNWELL" , 1, 0) + , ("nImplant", "LNIF" , 3, 0) + , ("pImplant", "LPDIF" , 4, 0) + , ("active" , "LACTIVE" , 2, 0) + , ("poly" , "LPOLY" , 7, 0) + , ("cut0" , "LCONT" , 10, 0) + , ("metal1" , "LALU1" , 11, 0) + , ("cut1" , "LVIA" , 14, 0) + , ("metal2" , "LALU2" , 16, 0) + , ("cut2" , "LVIA2" , 18, 0) + , ("metal3" , "LALU3" , 19, 0) + , ("cut3" , "LVIA3" , 21, 0) + , ("metal4" , "LALU4" , 22, 0) + , ("cut4" , "LVIA4" , 25, 0) + , ("metal5" , "LALU5" , 26, 0) + , ("cut5" , "LVIA5" , 28, 0) + , ("metal6" , "LALU6" , 29, 0) + ] + + +common.loadGdsLayers( gdsLayersTable ) diff --git a/crlcore/etc/symbolic/cmos45/__init__.py b/crlcore/etc/symbolic/cmos45/__init__.py new file mode 100644 index 00000000..f9d0887d --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/__init__.py @@ -0,0 +1,35 @@ + +# 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/symbolic/cmos45/__init__.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from Hurricane import DataBase +from CRL import System + +Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile ) + +DataBase.create() +System.get() + +import symbolic.cmos45.misc +import symbolic.cmos45.technology +import symbolic.cmos45.display +import symbolic.cmos45.analog +import symbolic.cmos45.alliance +import symbolic.cmos45.etesian +import symbolic.cmos45.kite +import symbolic.cmos45.plugins +import symbolic.cmos45.stratus1 + +Cfg.Configuration.popDefaultPriority() diff --git a/crlcore/etc/symbolic/cmos45/alliance.py b/crlcore/etc/symbolic/cmos45/alliance.py new file mode 100644 index 00000000..b7574946 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/alliance.py @@ -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/symbolic/cmos/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 ) diff --git a/crlcore/etc/symbolic/cmos45/analog.py b/crlcore/etc/symbolic/cmos45/analog.py new file mode 100644 index 00000000..ba5cdd26 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/analog.py @@ -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/symbolic/cmos/analog.py" | +# +-----------------------------------------------------------------+ + + +import common.analog diff --git a/crlcore/etc/symbolic/cmos45/display.py b/crlcore/etc/symbolic/cmos45/display.py new file mode 100644 index 00000000..dff46448 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/display.py @@ -0,0 +1,19 @@ + +# 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/symbolic/cmos/display.py" | +# +-----------------------------------------------------------------+ + + +import common.display + + +common.display.createStyles( scale=0.5 ) diff --git a/crlcore/etc/symbolic/cmos45/etesian.py b/crlcore/etc/symbolic/cmos45/etesian.py new file mode 100644 index 00000000..7e380e25 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/etesian.py @@ -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/symbolic/cmos/etesian.py" | +# +-----------------------------------------------------------------+ + + +import common.etesian diff --git a/crlcore/etc/symbolic/cmos45/kite.conf b/crlcore/etc/symbolic/cmos45/kite.conf index 9177fe25..6920eacb 100644 --- a/crlcore/etc/symbolic/cmos45/kite.conf +++ b/crlcore/etc/symbolic/cmos45/kite.conf @@ -67,7 +67,7 @@ routingGaugesTable['msxlib'] = \ routingGaugesTable['msxlib4'] = \ ( ( 'METAL1' , ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, l(0), l(10), l(3), l(2), l(7) ) ) , ( 'METAL2' , ( Gauge.Horizontal, Gauge.Default, 1, 0.0, l(0), l(10), l(3), l(2), l(8) ) ) - , ( 'METAL3' , ( Gauge.Vertical , Gauge.Default, 2, 0.0, l(0), l(10), l(3), l(2), l(8) ) ) + , ( 'METAL3' , ( Gauge.Vertical , Gauge.Default, 2, 0.0, l(0), l( 8), l(3), l(2), l(8) ) ) , ( 'METAL4' , ( Gauge.Horizontal, Gauge.Default, 3, 0.0, l(0), l(10), l(3), l(2), l(8) ) ) ) diff --git a/crlcore/etc/symbolic/cmos45/kite.py b/crlcore/etc/symbolic/cmos45/kite.py new file mode 100644 index 00000000..89d6ce2f --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/kite.py @@ -0,0 +1,257 @@ + +# 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/symbolic/cmos/kite.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from Hurricane import DataBase +from CRL import AllianceFramework +from CRL import RoutingGauge +from CRL import RoutingLayerGauge +from CRL import CellGauge +import helpers +from helpers import l, n, u +import common.kite + + +p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 ) +p = Cfg.getParamString ( 'katabatic.routingGauge' ).setString ( 'sxlib' ) +p = Cfg.getParamInt ( "katabatic.globalLengthThreshold" ).setInt ( 1450 ) +p = Cfg.getParamPercentage( "katabatic.saturateRatio" ).setPercentage( 80 ) +p = Cfg.getParamInt ( "katabatic.saturateRp" ).setInt ( 8 ) +p = Cfg.getParamString ( 'katabatic.topRoutingLayer' ).setString ( 'METAL6' ) + + # Kite parameters. +p = Cfg.getParamInt( "kite.hTracksReservedLocal" ); p.setInt( 4 ); p.setMin( 0 ); p.setMax( 18 ) +p = Cfg.getParamInt( "kite.vTracksReservedLocal" ); p.setInt( 3 ); p.setMin( 0 ); p.setMax( 18 ) +p = Cfg.getParamInt( "kite.eventsLimit" ); p.setInt( 4000002 ) +p = Cfg.getParamInt( "kite.ripupCost" ); p.setInt( 3 ); p.setMin( 0 ) +p = Cfg.getParamInt( "kite.strapRipupLimit" ); p.setInt( 16 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.localRipupLimit" ); p.setInt( 9 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.globalRipupLimit" ); p.setInt( 5 ); p.setMin( 1 ) +p = Cfg.getParamInt( "kite.longGlobalRipupLimit" ); p.setInt( 5 ); p.setMin( 1 ) + +# Anabatic & Katana parameters are temporarily hosted here. +p = Cfg.getParamString ( 'anabatic.routingGauge' ); p.setString ( 'msxlib' ) +p = Cfg.getParamInt ( "anabatic.globalLengthThreshold" ); p.setInt ( 1450 ) +p = Cfg.getParamPercentage( "anabatic.saturateRatio" ); p.setPercentage( 80 ) +p = Cfg.getParamInt ( "anabatic.saturateRp" ); p.setInt ( 8 ) +p = Cfg.getParamString ( 'anabatic.topRoutingLayer' ); p.setString ( 'METAL5' ) +p = Cfg.getParamInt ( "anabatic.edgeLength" ); p.setInt ( 48 ) +p = Cfg.getParamInt ( "anabatic.edgeWidth" ); p.setInt ( 8 ) +p = Cfg.getParamDouble ( "anabatic.edgeCostH" ); p.setDouble ( 19.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeCostK" ); p.setDouble ( -60.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeHInc" ); p.setDouble ( 1.0 ) +p = Cfg.getParamDouble ( "anabatic.edgeHScaling" ); p.setDouble ( 1.0 ) +p = Cfg.getParamInt ( "anabatic.globalIterations" ); p.setInt ( 10 ); p.setMin(1); p.setMax(100) +p = Cfg.getParamEnumerate ( "anabatic.gcell.displayMode" ); p.setInt ( 1 ) +p.addValue( "Boundary", 1 ) +p.addValue( "Density" , 2 ) + +p = Cfg.getParamInt ( "katana.hTracksReservedLocal" ); p.setInt ( 3 ); p.setMin(0); p.setMax(20) +p = Cfg.getParamInt ( "katana.vTracksReservedLocal" ); p.setInt ( 3 ); p.setMin(0); p.setMax(20) +p = Cfg.getParamInt ( "katana.termSatReservedLocal" ); p.setInt ( 8 ) +p = Cfg.getParamInt ( "katana.termSatThreshold" ); p.setInt ( 9 ) +p = Cfg.getParamInt ( "katana.eventsLimit" ); p.setInt ( 4000002 ) +p = Cfg.getParamInt ( "katana.ripupCost" ); p.setInt ( 3 ); p.setMin(0) +p = Cfg.getParamInt ( "katana.strapRipupLimit" ); p.setInt ( 16 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.localRipupLimit" ); p.setInt ( 9 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.globalRipupLimit" ); p.setInt ( 5 ); p.setMin(1) +p = Cfg.getParamInt ( "katana.longGlobalRipupLimit" ); p.setInt ( 5 ); p.setMin(1) +p = Cfg.getParamString( 'chip.padCoreSide' ); p.setString( 'South' ) + + +tech = DataBase.getDB().getTechnology() +af = AllianceFramework.get() +rg = RoutingGauge.create( 'msxlib' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA12). + , l(7) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL3') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 2 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA34). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL4') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 3 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(15) # track pitch. + , l(6) # wire width. + , l(4) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL5') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 4 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(15) # track pitch. + , l(6) # wire width. + , l(4) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL6') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 5 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(15) # track pitch. + , l(6) # wire width. + , l(4) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +rg = RoutingGauge.create( 'msxlib4' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA12). + , l(7) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL3') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 2 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(8) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA12). + , l(8) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL4') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 3 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(2) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +rg = RoutingGauge.create( 'msxlib-2M' ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL1') # metal. + , RoutingLayerGauge.Vertical # preferred routing direction. + , RoutingLayerGauge.PinOnly # layer usage. + , 0 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(3) # VIA side (that is VIA12). + , l(7) # obstacle dW. + ) ) + +rg.addLayerGauge( RoutingLayerGauge.create( tech.getLayer('METAL2') # metal. + , RoutingLayerGauge.Horizontal # preferred routing direction. + , RoutingLayerGauge.Default # layer usage. + , 1 # depth. + , 0.0 # density (deprecated). + , l(0) # track offset from AB. + , l(10) # track pitch. + , l(3) # wire width. + , l(3) # VIA side (that is VIA23). + , l(8) # obstacle dW. + ) ) + +af.addRoutingGauge( rg ) + +af.setRoutingGauge( 'msxlib' ) + +# Gauge for standard cells. +cg = CellGauge.create( 'msxlib' + , 'metal2' # pin layer name. + , l( 10.0) # pitch. + , l(100.0) # cell slice height. + , l( 10.0) # cell slice step. + ) +af.addCellGauge( cg ) +cg = CellGauge.create( 'msxlib4' + , 'metal2' # pin layer name. + , l( 10.0) # pitch. + , l(100.0) # cell slice height. + , l( 10.0) # cell slice step. + ) +af.addCellGauge( cg ) + +# Gauge for Alliance symbolic I/O pads. +cg = CellGauge.create( 'phlib80' + , 'metal2' # pin layer name. + , l( 10.0) # pitch. + , l(312.0) # cell slice height. + , l(246.0) # cell slice step. + ) +af.addCellGauge( cg ) diff --git a/crlcore/etc/symbolic/cmos45/misc.py b/crlcore/etc/symbolic/cmos45/misc.py new file mode 100644 index 00000000..a1d731f7 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/misc.py @@ -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/symbolic/cmos/misc.py" | +# +-----------------------------------------------------------------+ + + +import common.misc diff --git a/crlcore/etc/symbolic/cmos45/patterns.py b/crlcore/etc/symbolic/cmos45/patterns.py new file mode 100644 index 00000000..84059a1a --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/patterns.py @@ -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/symbolic/cmos/patterns.py" | +# +-----------------------------------------------------------------+ + + +import common.patterns diff --git a/crlcore/etc/symbolic/cmos45/plugins.py b/crlcore/etc/symbolic/cmos45/plugins.py new file mode 100644 index 00000000..40038509 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/plugins.py @@ -0,0 +1,27 @@ + +# 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/symbolic/cmos/plugins.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +from helpers import l, u, n + + +Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 ) +Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) ) +Cfg.getParamInt ( "chip.block.rails.vWidth" ).setInt ( l( 24) ) +Cfg.getParamInt ( "chip.block.rails.hSpacing" ).setInt ( l( 12) ) +Cfg.getParamInt ( "chip.block.rails.vSpacing" ).setInt ( l( 12) ) +Cfg.getParamInt ( 'clockTree.minimumSide' ).setInt ( l(1200) ) +Cfg.getParamString( 'clockTree.buffer' ).setString( 'buf_x2') +Cfg.getParamString( 'clockTree.placerEngine' ).setString( 'Etesian') diff --git a/crlcore/etc/symbolic/cmos45/stratus1.py b/crlcore/etc/symbolic/cmos45/stratus1.py new file mode 100644 index 00000000..c29ec792 --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/stratus1.py @@ -0,0 +1,21 @@ + +# 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/symbolic/cmos/stratus1.py" | +# +-----------------------------------------------------------------+ + + +import Cfg +import common.stratus1 + + +Cfg.getParamString( "stratus1.format" ).setString( "vst" ) +Cfg.getParamString( "stratus1.simulator" ).setString( "asimut" ) diff --git a/crlcore/etc/symbolic/cmos45/technology.py b/crlcore/etc/symbolic/cmos45/technology.py new file mode 100644 index 00000000..26c887cc --- /dev/null +++ b/crlcore/etc/symbolic/cmos45/technology.py @@ -0,0 +1,228 @@ + +# 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/symbolic/cmos/technology.py" | +# +-----------------------------------------------------------------+ + + +from helpers import l, u, n +from Hurricane import DbU +from Hurricane import DataBase +from Hurricane import Technology + + +tech = DataBase.getDB().getTechnology() +if tech: + print WarningMessage( 'cmos.technology: Technology already exists, "%s"' % tech.getName() ) +else: + tech = Technology.create( DataBase.getDB(), 'cmos45' ) + +DbU.setPrecision ( 2 ) +DbU.setPhysicalsPerGrid ( 0.0025, DbU.UnitPowerMicro ) +DbU.setGridsPerLambda ( 10 ) +DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) ) +DbU.setPolygonStep ( DbU.fromGrid (10.0) ) + + +import common +from common.technology import * + +# Redefine all size from the "cmos" common part. +NWELL.setExtentionCap( nWell, l(4.0) ) +PWELL.setExtentionCap( pWell, l(4.0) ) + +NTIE.setMinimalSize ( l( 3.0) ) +NTIE.setExtentionCap ( nWell , l( 3.0) ) +NTIE.setExtentionWidth( nWell , l( 2.0) ) +NTIE.setExtentionCap ( nImplant, l( 2.5) ) +NTIE.setExtentionWidth( nImplant, l( 1.5) ) +NTIE.setExtentionCap ( active , l( 0.5) ) +NTIE.setExtentionWidth( active , l(-0.5) ) + +PTIE.setMinimalSize ( l( 3.0) ) +PTIE.setExtentionCap ( nWell , l( 3.0) ) +PTIE.setExtentionWidth( nWell , l( 2.0) ) +PTIE.setExtentionCap ( nImplant, l( 2.5) ) +PTIE.setExtentionWidth( nImplant, l( 1.5) ) +PTIE.setExtentionCap ( active , l( 0.5) ) +PTIE.setExtentionWidth( active , l(-0.5) ) + +NDIF.setMinimalSize ( l(3.0) ) +NDIF.setExtentionCap ( nImplant, l(4.0) ) +NDIF.setExtentionWidth( nImplant, l(2.0) ) +NDIF.setExtentionCap ( active , l(2.0) ) +NDIF.setExtentionWidth( active , l(0.0) ) + +PDIF.setMinimalSize ( l(3.0) ) +PDIF.setExtentionCap ( pImplant, l(4.0) ) +PDIF.setExtentionWidth( pImplant, l(2.0) ) +PDIF.setExtentionCap ( active , l(2.0) ) +PDIF.setExtentionWidth( active , l(0.0) ) + +GATE.setMinimalSize ( l(2.0) ) +GATE.setExtentionCap ( poly , l(2.5) ) + +NTRANS.setMinimalSize ( l( 2.0) ) +NTRANS.setExtentionCap ( nImplant, l( 2.0) ) +NTRANS.setExtentionWidth( nImplant, l( 7.0) ) +NTRANS.setExtentionCap ( active , l( 0.0) ) +NTRANS.setExtentionWidth( active , l( 3.0) ) +NTRANS.setExtentionCap ( poly , l( 3.0) ) +NTRANS.setExtentionWidth( poly , l( 0.0) ) + +PTRANS.setMinimalSize ( l( 2.0) ) +PTRANS.setExtentionCap ( nWell , l( 2.5) ) +PTRANS.setExtentionWidth( nWell , l( 7.5) ) +PTRANS.setExtentionCap ( pImplant, l( 2.0) ) +PTRANS.setExtentionWidth( pImplant, l( 7.0) ) +PTRANS.setExtentionCap ( active , l( 0.0) ) +PTRANS.setExtentionWidth( active , l( 3.0) ) +PTRANS.setExtentionCap ( poly , l( 3.0) ) +PTRANS.setExtentionWidth( poly , l( 0.0) ) + +POLY .setMinimalSize ( l(2.0) ) +POLY .setExtentionCap ( poly , l(1.0) ) +POLY2.setMinimalSize ( l(2.0) ) +POLY2.setExtentionCap ( poly , l(1.0) ) + +# Routing Layers (symbolic). +METAL1 .setMinimalSize ( l( 2.0) ) +METAL1 .setExtentionCap ( metal1 , l( 2.0) ) +METAL1 .setExtentionWidth( metal1 , l( 1.0) ) +METAL1 .setMinimalSpacing( l( 6.0) ) +METAL2 .setMinimalSize ( l( 4.0) ) +METAL2 .setExtentionCap ( metal2 , l( 2.0) ) +METAL2 .setMinimalSpacing( l( 6.0) ) +METAL3 .setMinimalSize ( l( 4.0) ) +METAL3 .setExtentionCap ( metal3 , l( 2.0) ) +METAL3 .setMinimalSpacing( l( 6.0) ) +METAL4 .setMinimalSize ( l( 4.0) ) +METAL4 .setExtentionCap ( metal4 , l( 2.0) ) +METAL4 .setMinimalSpacing( l( 6.0) ) +METAL5 .setMinimalSize ( l( 4.0) ) +METAL5 .setExtentionCap ( metal5 , l( 2.0) ) +METAL5 .setMinimalSpacing( l( 6.0) ) +METAL6 .setMinimalSize ( l(10.0) ) +METAL6 .setExtentionCap ( metal6 , l( 5.0) ) +METAL6 .setMinimalSpacing( l( 6.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( 2.0) ) +CONT_BODY_N.setEnclosure ( nWell , l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_N.setEnclosure ( nImplant, l( 3.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_N.setEnclosure ( active , l( 1.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_N.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_BODY_P.setMinimalSize( l( 2.0) ) +CONT_BODY_P.setEnclosure ( pWell , l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_P.setEnclosure ( pImplant, l( 3.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_P.setEnclosure ( active , l( 1.5), Layer.EnclosureH|Layer.EnclosureV ) +CONT_BODY_P.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_DIF_N.setMinimalSize( l( 2.0) ) +CONT_DIF_N.setEnclosure ( nImplant, l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_N.setEnclosure ( active , l( 2.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_N.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_DIF_P.setMinimalSize( l( 2.0) ) +CONT_DIF_P.setEnclosure ( pImplant, l( 4.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_P.setEnclosure ( active , l( 2.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_DIF_P.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +CONT_POLY.setMinimalSize( l( 2.0) ) +CONT_POLY.setEnclosure ( poly , l( 2.0), Layer.EnclosureH|Layer.EnclosureV ) +CONT_POLY.setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) + +# VIAs (i.e. Metal <--> Metal) (symbolic). +VIA12 .setMinimalSize( l( 2.0) ) +VIA12 .setEnclosure ( metal1 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA12 .setEnclosure ( metal2 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA23 .setMinimalSize( l( 2.0) ) +VIA23 .setEnclosure ( metal2 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA23 .setEnclosure ( metal3 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA34 .setMinimalSize( l( 2.0) ) +VIA34 .setEnclosure ( metal3 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA34 .setEnclosure ( metal4 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA45 .setMinimalSize( l( 2.0) ) +VIA45 .setEnclosure ( metal4 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA45 .setEnclosure ( metal5 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA56 .setMinimalSize( l( 5.0) ) +VIA56 .setEnclosure ( metal5 , l( 1.0), Layer.EnclosureH|Layer.EnclosureV ) +VIA56 .setEnclosure ( metal6 , l( 1.5), Layer.EnclosureH|Layer.EnclosureV ) +#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 ) +#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 ) +#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 ) +#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 ) + +# Blockages (symbolic). +BLOCKAGE1 .setMinimalSize ( l( 4.0) ) +BLOCKAGE1 .setExtentionCap ( blockage1 , l( 2.0) ) +BLOCKAGE1 .setExtentionWidth( blockage1 , l( 0.5) ) +BLOCKAGE2 .setMinimalSize ( l( 4.0) ) +BLOCKAGE2 .setExtentionCap ( blockage2 , l( 2.0) ) +BLOCKAGE3 .setMinimalSize ( l( 4.0) ) +BLOCKAGE3 .setExtentionCap ( blockage3 , l( 2.0) ) +BLOCKAGE4 .setMinimalSize ( l( 4.0) ) +BLOCKAGE4 .setExtentionCap ( blockage4 , l( 2.0) ) +BLOCKAGE5 .setMinimalSize ( l( 4.0) ) +BLOCKAGE5 .setExtentionCap ( blockage5 , l( 2.0) ) +BLOCKAGE6 .setMinimalSize ( l( 8.0) ) +BLOCKAGE6 .setExtentionCap ( blockage6 , l( 2.5) ) +#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) ) + + +gdsLayersTable = \ + [ ("pWell" , "CWN" , 41, 0) + , ("nWell" , "CWP" , 42, 0) + , ("active" , "CAA" , 43, 0) + , ("pImplant", "CSP" , 44, 0) + , ("nImplant", "CSN" , 45, 0) + , ("poly" , "CPG" , 46, 0) + , ("poly2" , "CM1" , 49, 0) # poly2 is in fact metal1. + , ("cut0" , "CCC" , 25, 0) + , ("metal1" , "CM1" , 49, 0) + , ("cut1" , "CV1" , 50, 0) + , ("metal2" , "CM2" , 51, 0) + , ("cut2" , "CV2" , 61, 0) + , ("metal3" , "CM3" , 62, 0) + , ("cut3" , "CV3" , 30, 0) + , ("metal4" , "CM4" , 31, 0) + , ("cut4" , "CV4" , 32, 0) + , ("metal5" , "CM5" , 33, 0) + , ("cut5" , "CV5" , 36, 0) + , ("metal6" , "CM6" , 37, 0) + ] + + +common.loadGdsLayers( gdsLayersTable ) diff --git a/crlcore/python/helpers/__init__.py b/crlcore/python/helpers/__init__.py index b4ae19b9..2e4858bc 100644 --- a/crlcore/python/helpers/__init__.py +++ b/crlcore/python/helpers/__init__.py @@ -32,9 +32,6 @@ ndaConfDir = None ndaDir = None techno = 'symbolic/cmos' technoDir = None -unitsLambda = True -tab = None -_trace = None moduleGlobals = globals() @@ -283,6 +280,25 @@ def initTechno ( argQuiet ): technoDir = os.path.join( ndaConfDir, techno ) if not quiet: print ' - Technology: %s.' % techno + +unitsLambda = True +tab = Tab() +_trace = Trace() +ndaTopDir = None + + +def setNdaTopDir ( ndaTopDirArg ): + global ndaTopDir + + if not os.path.isdir(ndaTopDirArg): + print helpers.io.WarningMessage( 'helpers.setNdaTopDir(): Directory "%s" does not exists.' % ndaTopDirArg ) + else: + ndaTopDir = ndaTopDirArg + sys.path.append( os.path.join(ndaTopDir,'etc/coriolis2') ) + sys.path.append( ndaTopDir ) + + return + def staticInitialization ( quiet=False ): global sysConfDir @@ -295,9 +311,9 @@ def staticInitialization ( quiet=False ): #if not quiet: print ' o helpers.staticInitialization() Already run, exit.' return - unitsLamba = True - tab = Tab() - _trace = Trace() +# unitsLamba = True +# tab = Tab() +# _trace = Trace() reSysConfDir = re.compile(r'.*etc\/coriolis2') if not quiet: print ' o Locating configuration directory:' @@ -323,6 +339,37 @@ def staticInitialization ( quiet=False ): return +def setSysConfDir ( quiet=False ): + global sysConfDir + + if sysConfDir != None: + #if not quiet: print ' o helpers.staticInitialization() Already run, exit.' + return + + reSysConfDir = re.compile(r'.*etc\/coriolis2') + if not quiet: print ' o Locating configuration directory:' + + for path in sys.path: + if reSysConfDir.match(path): + sysConfDir = path + if not quiet: print ' - "%s"' % sysConfDir + break + + if not sysConfDir: + coriolisTop = os.getenv('CORIOLIS_TOP') + if coriolisTop == '/usr': + sysConfDir = '/etc/coriolis2' + elif coriolisTop: + sysConfDir = os.path.join(coriolisTop,'etc/coriolis2') + else: + raise ErrorMessage( 1, [ 'Cannot locate the directoty holding the configuration files.' + , 'The path is something ending by <.../etc/coriolis2>.'] ) + + if not quiet: print ' - "%s"' % sysConfDir + sys.path.append( sysConfDir ) + return + + def netDirectionToStr ( netDir ): flags = [ '-', '-', '-', '-', '-' ] if netDir & Hurricane.Net.Direction.DirIn: flags[0] = 'i' @@ -341,3 +388,20 @@ def netDirectionToStr ( netDir ): elif netDir == Hurricane.Net.Direction.WOR_INOUT: s += '(WOR_INOUT)' else: s += '(UNKNOWN)' return s + + +setSysConfDir( False ) + + +def loadUserSettings (): + if os.path.isfile('./coriolis2/settings.py'): + if os.path.isfile('./coriolis2/__init__.py'): + import coriolis2.settings + return True + else: + print helpers.io.WarningMessage( [ 'User\'s settings directory "%s" exists, but do not contains "__init__.py".' % './coriolis2/' + , '(path:"%s")' % os.path.abspath(os.getcwd()) + ] ) + + import symbolic.cmos + return False diff --git a/crlcore/src/ccore/AllianceFramework.cpp b/crlcore/src/ccore/AllianceFramework.cpp index 7a5ee931..918b116b 100644 --- a/crlcore/src/ccore/AllianceFramework.cpp +++ b/crlcore/src/ccore/AllianceFramework.cpp @@ -195,16 +195,17 @@ namespace CRL { , _cellGauges () , _defaultCellGauge (NULL) { - DataBase* db = DataBase::getDB (); - if ( not db ) - db = DataBase::create (); + DataBase* db = DataBase::getDB(); + if (not db) db = DataBase::create(); - db->put ( AllianceFrameworkProperty::create(this) ); + Library* rootLibrary = db->getRootLibrary(); + if (not rootLibrary ) rootLibrary = Library::create( db, "Root" ); + + _parentLibrary = rootLibrary->getLibrary( _parentLibraryName ); + if (not _parentLibrary ) _parentLibrary = Library::create( rootLibrary, _parentLibraryName ); + + db->put( AllianceFrameworkProperty::create(this) ); db->_setCellLoader( bind(&AllianceFramework::cellLoader,this,_1) ); - - //cmess1 << " o Reading Alliance Environment." << endl; - - //_environment.loadFromShell (); } @@ -225,31 +226,20 @@ namespace CRL { } - void AllianceFramework::_bindLibraries () + void AllianceFramework::bindLibraries () { - DataBase* db = DataBase::getDB (); - unsigned int flags = AppendLibrary; - SearchPath& LIBRARIES = _environment.getLIBRARIES (); - Library* rootLibrary = db->getRootLibrary (); + unsigned int flags = AppendLibrary; + SearchPath& LIBRARIES = _environment.getLIBRARIES(); - //cmess2 << " o Creating Alliance Framework root library." << endl; - if ( !rootLibrary ) - rootLibrary = Library::create ( db, "Root" ); - - _parentLibrary = rootLibrary->getLibrary ( _parentLibraryName ); - if ( !_parentLibrary ) - _parentLibrary = Library::create ( rootLibrary, _parentLibraryName ); - - //cmess2 << " o Loading libraries (working first)." << endl; + cmess2 << " o Loading libraries (working first, " << LIBRARIES.getSize() << ") " << endl; for ( unsigned i=0 ; i_bindLibraries(); + //if (not (flags & NoPythonInit)) + // System::runPythonInit(); + //_singleton->bindLibraries(); } return _singleton; @@ -270,9 +260,7 @@ namespace CRL { AllianceFramework* AllianceFramework::get () - { - return create(); - } + { return create(); } void AllianceFramework::destroy () @@ -420,7 +408,7 @@ namespace CRL { string dupLibName = libName; for ( size_t duplicate=1 ; true ; ++duplicate ) { - AllianceLibrary* library = getAllianceLibrary ( dupLibName, flags & ~CreateLibrary ); + AllianceLibrary* library = getAllianceLibrary( dupLibName, flags & ~CreateLibrary ); if (library == NULL) break; ostringstream oss; @@ -428,22 +416,18 @@ namespace CRL { dupLibName = oss.str(); } - // AllianceLibrary* library = getAllianceLibrary ( libName, flags ); - // if ( library != NULL ) { - // cerr << Warning("AllianceFramework::createLibrary(): Attempt to re-create <%s>, using already existing." - // ,libName.c_str()) << endl; - // return library; - // } - - SearchPath& LIBRARIES = _environment.getLIBRARIES (); - if ( not (flags & AppendLibrary) ) LIBRARIES.prepend ( path, dupLibName ); - else LIBRARIES.select ( path ); + SearchPath& LIBRARIES = _environment.getLIBRARIES(); + LIBRARIES.select( path ); + if (not LIBRARIES.hasSelected()) { + if (not (flags & AppendLibrary)) LIBRARIES.prepend( path, dupLibName ); + else LIBRARIES.append ( path, dupLibName ); + } Library* hlibrary = getParentLibrary()->getLibrary( dupLibName ); if (not hlibrary) hlibrary = Library::create( getParentLibrary(), dupLibName ); - AllianceLibrary* alibrary = new AllianceLibrary ( path, hlibrary ); + AllianceLibrary* alibrary = new AllianceLibrary( path, hlibrary ); AllianceLibraries::iterator ilib = _libraries.begin(); if (LIBRARIES.getIndex() != SearchPath::npos) @@ -451,26 +435,26 @@ namespace CRL { else ilib = _libraries.end(); - _libraries.insert ( ilib, alibrary ); + _libraries.insert( ilib, alibrary ); string catalog = path + "/" + _environment.getCATALOG(); - if ( _catalog.loadFromFile(catalog,alibrary->getLibrary()) ) flags |= HasCatalog; + if (_catalog.loadFromFile(catalog,alibrary->getLibrary())) flags |= HasCatalog; - ParserFormatSlot& parser = _parsers.getParserSlot ( path, Catalog::State::Physical, _environment ); + ParserFormatSlot& parser = _parsers.getParserSlot( path, Catalog::State::Physical, _environment ); - if ( not parser.loadByLib() ) { - notify ( AddedLibrary ); + if (not parser.loadByLib()) { + notify( AddedLibrary ); return alibrary; } // Load the whole library. - if ( ! _readLocate(dupLibName,Catalog::State::State::Logical,true) ) return alibrary; + if (not _readLocate(dupLibName,Catalog::State::State::Logical,true)) return alibrary; // Call the parser function. (parser.getParsLib())( _environment.getLIBRARIES().getSelected() , alibrary->getLibrary() , _catalog ); - notify ( AddedLibrary ); + notify( AddedLibrary ); return alibrary; } diff --git a/crlcore/src/ccore/Environment.cpp b/crlcore/src/ccore/Environment.cpp index ff3c7252..00e46d17 100644 --- a/crlcore/src/ccore/Environment.cpp +++ b/crlcore/src/ccore/Environment.cpp @@ -248,26 +248,40 @@ namespace CRL { return value; } + void Environment::setWORKING_LIBRARY ( const char* value ) + { + _LIBRARIES.replace( value, "working", 0 ); + AllianceFramework::get()->createLibrary( _LIBRARIES[0].getPath(), AllianceFramework::CreateLibrary ); + } + void Environment::addSYSTEM_LIBRARY ( const char* value, const char* libName, unsigned int mode ) { + AllianceFramework* af = AllianceFramework::get(); + unsigned int afMode = AllianceFramework::CreateLibrary; + size_t ilib = 0; + + if (mode == Append) afMode |= AllianceFramework::AppendLibrary; + if ((mode == Prepend) or (mode == Append)) { size_t duplicate = _LIBRARIES.hasLib(libName); if (duplicate != SearchPath::npos) _LIBRARIES.remove( duplicate ); - if (mode == Prepend) _LIBRARIES.prepend(value,libName); - if (mode == Append ) _LIBRARIES.append (value,libName); - return; + if (mode == Prepend) ilib = _LIBRARIES.prepend(value,libName); + if (mode == Append ) ilib = _LIBRARIES.append (value,libName); + } else { + string newLibName = libName; + for ( ; ilib < _LIBRARIES.getSize() ; ++ilib ) { + if (newLibName == _LIBRARIES[ilib].getName()) { + _LIBRARIES.replace ( value, newLibName, ilib ); + break; + } + } + if (ilib == _LIBRARIES.getSize()) + _LIBRARIES.append (value,libName); } - string newLibName = libName; - for ( size_t i=0 ; i < _LIBRARIES.getSize() ; ++i ) { - if ( newLibName == _LIBRARIES[i].getName() ) { - _LIBRARIES.replace ( value, newLibName, i ); - return; - } - } - _LIBRARIES.append (value,libName); + af->createLibrary( _LIBRARIES[ilib].getPath(), afMode ); } diff --git a/crlcore/src/ccore/RoutingLayerGauge.cpp b/crlcore/src/ccore/RoutingLayerGauge.cpp index b643800e..ed72065d 100644 --- a/crlcore/src/ccore/RoutingLayerGauge.cpp +++ b/crlcore/src/ccore/RoutingLayerGauge.cpp @@ -285,7 +285,8 @@ namespace CRL { if ( _direction == Constant::Horizontal ) os << "Horizontal "; else os << "Vertical "; - os << DbU::getValueString(_offset) << ",+" + os << _depth << " " + << DbU::getValueString(_offset) << ",+" << DbU::getValueString(_pitch) << " " << _density << "% (" << DbU::getValueString(_wireWidth) << "," diff --git a/crlcore/src/ccore/SearchPath.cpp b/crlcore/src/ccore/SearchPath.cpp index cce3a1c5..e89fe613 100644 --- a/crlcore/src/ccore/SearchPath.cpp +++ b/crlcore/src/ccore/SearchPath.cpp @@ -70,22 +70,24 @@ namespace CRL { } - void SearchPath::prepend ( const std::string& path, const std::string& name ) + size_t SearchPath::prepend ( const std::string& path, const std::string& name ) { vector::iterator ipath = _paths.begin(); _index = 0; - if ( ipath != _paths.end() ) { ++ipath; ++_index; } + if (ipath != _paths.end()) { ++ipath; ++_index; } - _paths.insert ( ipath, Element(path,name) ); + _paths.insert( ipath, Element(path,name) ); + return _index; } - void SearchPath::replace ( const string& path, const std::string& name, size_t index ) + size_t SearchPath::replace ( const string& path, const std::string& name, size_t index ) { _index = index; if ( index < _paths.size() ) _paths[index] = Element(path,name); + return _index; } @@ -151,7 +153,7 @@ namespace CRL { { ostringstream s; - s << ""; + s << ""; return s.str(); } diff --git a/crlcore/src/ccore/Utilities.cpp b/crlcore/src/ccore/Utilities.cpp index 31dfff6b..473491ea 100644 --- a/crlcore/src/ccore/Utilities.cpp +++ b/crlcore/src/ccore/Utilities.cpp @@ -324,7 +324,9 @@ namespace CRL { Utilities::Path cumulusDir = pythonSitePackages / "cumulus"; Utilities::Path oroshiDir = pythonSitePackages / "oroshi"; Utilities::Path karakazeDir = pythonSitePackages / "karakaze"; + Utilities::Path etcDir = _pathes["etc"]; + Isobar::Script::addPath ( etcDir.toString() ); Isobar::Script::addPath ( sysConfDir.toString() ); Isobar::Script::addPath ( pythonSitePackages.toString() ); Isobar::Script::addPath ( crlcoreDir.toString() ); @@ -445,9 +447,8 @@ namespace CRL { void System::_runPythonInit () { - Cfg::Configuration* conf = Cfg::Configuration::get (); - Utilities::Path sysConfDir = getPath("etc"); - Utilities::Path pythonSitePackages = getPath("pythonSitePackages"); + Utilities::Path sysConfDir = getPath("etc"); + Utilities::Path pythonSitePackages = getPath("pythonSitePackages"); //bool systemConfFound = false; Utilities::Path systemConfFile = pythonSitePackages / "crlcore" / "coriolisInit.py"; diff --git a/crlcore/src/ccore/crlcore/AllianceFramework.h b/crlcore/src/ccore/crlcore/AllianceFramework.h index 3e46ce96..e98fbd14 100644 --- a/crlcore/src/ccore/crlcore/AllianceFramework.h +++ b/crlcore/src/ccore/crlcore/AllianceFramework.h @@ -117,6 +117,7 @@ namespace CRL { , unsigned int depth=(unsigned int)-1 ); Cell* createCell ( const string& name, AllianceLibrary* library=NULL ); void saveCell ( Cell* , unsigned int mode ); + void bindLibraries (); unsigned int loadLibraryCells ( Library* ); unsigned int loadLibraryCells ( const Name& ); static size_t getInstancesCount ( Cell*, unsigned int flags ); @@ -152,7 +153,6 @@ namespace CRL { bool _readLocate ( const string& file, unsigned int mode, bool isLib=false ); bool _writeLocate ( const string& file, unsigned int mode, bool isLib=false ); AllianceLibrary* _createLibrary ( const string& path, bool& hasCatalog ); - void _bindLibraries (); }; inline bool AllianceFramework::isPOWER ( const char* name ) { return _environment.isPOWER(name); } diff --git a/crlcore/src/ccore/crlcore/Environment.h b/crlcore/src/ccore/crlcore/Environment.h index 2ee26c71..063315a9 100644 --- a/crlcore/src/ccore/crlcore/Environment.h +++ b/crlcore/src/ccore/crlcore/Environment.h @@ -79,7 +79,7 @@ namespace CRL { void setBLOCKAGE ( const char* value ); void setPad ( const char* value ); inline void setCATALOG ( const char* value ); - inline void setWORKING_LIBRARY ( const char* value ); + void setWORKING_LIBRARY ( const char* value ); void addSYSTEM_LIBRARY ( const char* value, const char* libName, unsigned int mode=Append ); // Methods. std::string getPrint () const; @@ -138,7 +138,6 @@ namespace CRL { inline void Environment::setOUT_LO ( const char* value ) { _OUT_LO = value; } inline void Environment::setOUT_PH ( const char* value ) { _OUT_PH = value; } inline void Environment::setCATALOG ( const char* value ) { _CATALOG = value; } - inline void Environment::setWORKING_LIBRARY ( const char* value ) { _LIBRARIES.replace(value,"working",0); } inline std::string Environment::_getTypeName () const { return "Environment"; } diff --git a/crlcore/src/ccore/crlcore/SearchPath.h b/crlcore/src/ccore/crlcore/SearchPath.h index ab59062a..ffbe1384 100644 --- a/crlcore/src/ccore/crlcore/SearchPath.h +++ b/crlcore/src/ccore/crlcore/SearchPath.h @@ -50,9 +50,9 @@ namespace CRL { SearchPath (); public: inline void reset (); - inline void append ( const std::string& path, const std::string& name="" ); - void prepend ( const std::string& path, const std::string& name=""); - void replace ( const std::string& path, const std::string&, size_t index ); + inline size_t append ( const std::string& path, const std::string& name="" ); + size_t prepend ( const std::string& path, const std::string& name=""); + size_t replace ( const std::string& path, const std::string&, size_t index ); void remove ( size_t index ); size_t locate ( const std::string& file , std::ios::openmode mode =std::ios::in @@ -92,8 +92,9 @@ namespace CRL { inline bool SearchPath::hasSelected () const { return _index != npos; } inline std::string SearchPath::_getTypeName () const { return _TName("SearchPath"); } - inline void SearchPath::append ( const std::string& path, const std::string& name ) { + inline size_t SearchPath::append ( const std::string& path, const std::string& name ) { _paths.push_back ( Element ( path, name.empty()?extractLibName(path):name ) ); + return _paths.size()-1; } inline SearchPath::Element::Element ( const std::string& path, const std::string& name ) diff --git a/crlcore/src/pyCRL/CMakeLists.txt b/crlcore/src/pyCRL/CMakeLists.txt index 7e74aec0..d7319e74 100644 --- a/crlcore/src/pyCRL/CMakeLists.txt +++ b/crlcore/src/pyCRL/CMakeLists.txt @@ -28,6 +28,7 @@ set( pyConstCpps PyConstant.cpp ) set( pyCpps PyCRL.cpp + PySystem.cpp PyBanner.cpp PyCatalog.cpp PyCatalogState.cpp @@ -48,7 +49,8 @@ PyLefImport.cpp PyDefImport.cpp ) - set( pyIncludes crlcore/PyBanner.h + set( pyIncludes crlcore/PySystem.h + crlcore/PyBanner.h crlcore/PyCatalog.h crlcore/PyCatalogState.h crlcore/PyEnvironment.h diff --git a/crlcore/src/pyCRL/PyAllianceFramework.cpp b/crlcore/src/pyCRL/PyAllianceFramework.cpp index eebf7f33..fb293cb6 100644 --- a/crlcore/src/pyCRL/PyAllianceFramework.cpp +++ b/crlcore/src/pyCRL/PyAllianceFramework.cpp @@ -111,6 +111,19 @@ extern "C" { } + static PyObject* PyAllianceFramework_bindLibraries ( PyAllianceFramework* self, PyObject* args ) + { + cdebug_log(30,0) << "PyAllianceFramework_bindLibraries()" << endl; + + HTRY + METHOD_HEAD("AllianceFramework.bindLibraries()") + af->bindLibraries(); + HCATCH + + Py_RETURN_NONE; + } + + static PyObject* PyAllianceFramework_getEnvironment ( PyAllianceFramework* self ) { cdebug_log(30,0) << "PyAllianceFramework_getEnvironment ()" << endl; @@ -516,6 +529,8 @@ extern "C" { , "Gets the Alliance Framework." } , { "getEnvironment" , (PyCFunction)PyAllianceFramework_getEnvironment , METH_NOARGS , "Gets the Alliance Environment." } + , { "bindLibraries" , (PyCFunction)PyAllianceFramework_bindLibraries , METH_NOARGS + , "Bind Alliance libraries to Hurricane one. This is a one-time only methods." } , { "getLibrary" , (PyCFunction)PyAllianceFramework_getLibrary , METH_VARARGS , "Gets a Library, by index." } , { "getAllianceLibrary" , (PyCFunction)PyAllianceFramework_getAllianceLibrary , METH_VARARGS diff --git a/crlcore/src/pyCRL/PyCRL.cpp b/crlcore/src/pyCRL/PyCRL.cpp index 71a03f38..a5508871 100644 --- a/crlcore/src/pyCRL/PyCRL.cpp +++ b/crlcore/src/pyCRL/PyCRL.cpp @@ -17,6 +17,7 @@ #include "hurricane/isobar/PyHurricane.h" #include "hurricane/isobar/PyLibrary.h" #include "hurricane/isobar/PyCell.h" +#include "crlcore/PySystem.h" #include "crlcore/PyBanner.h" #include "crlcore/PyCatalog.h" #include "crlcore/PyCatalogState.h" @@ -108,6 +109,7 @@ extern "C" { DL_EXPORT(void) initCRL () { cdebug_log(30,0) << "initCRL()" << endl; + PySystem_LinkPyType (); PyBanner_LinkPyType (); PyCatalogState_LinkPyType (); PyCatalog_LinkPyType (); @@ -127,6 +129,7 @@ extern "C" { PyLefImport_LinkPyType (); PyDefImport_LinkPyType (); + PYTYPE_READY ( System ); PYTYPE_READY ( Banner ); PYTYPE_READY ( CatalogState ); PYTYPE_READY ( Catalog ); @@ -165,6 +168,8 @@ extern "C" { return; } + Py_INCREF ( &PyTypeSystem ); + PyModule_AddObject ( module, "System", (PyObject*)&PyTypeSystem ); Py_INCREF ( &PyTypeBanner ); PyModule_AddObject ( module, "Banner", (PyObject*)&PyTypeBanner ); Py_INCREF ( &PyTypeCatalog ); diff --git a/crlcore/src/pyCRL/PyRoutingGauge.cpp b/crlcore/src/pyCRL/PyRoutingGauge.cpp index 9e03d953..7e155ef8 100644 --- a/crlcore/src/pyCRL/PyRoutingGauge.cpp +++ b/crlcore/src/pyCRL/PyRoutingGauge.cpp @@ -288,16 +288,21 @@ extern "C" { __cs.init ("RoutingGauge.getLayerGauge"); if (PyArg_ParseTuple( args, "O&:RoutingGauge.getLayerGauge", Converter, &arg0)) { - if ( __cs.getObjectIds() == ":layer" ) + string layerName; + if (__cs.getObjectIds() == ":layer") { rlg = rg->getLayerGauge( PYLAYER_O(arg0) ); - else if ( __cs.getObjectIds() == ":int" ) + layerName = "\"" + getString(PYLAYER_O(arg0)) + "\""; + } else if (__cs.getObjectIds() == ":int") { rlg = rg->getLayerGauge( (size_t)PyAny_AsLong(arg0) ); - else { + layerName = "depth=" + getString(PyAny_AsLong(arg0)); + } else { PyErr_SetString ( ConstructorError, "invalid parameter type for RoutingGauge.getLayerGauge()." ); return NULL; } if ( rlg == NULL ) { - PyErr_SetString ( ConstructorError, "RoutingGauge.getLayerDepth(), requested Layer has no RoutingLayerGauge." ); + string message = "RoutingGauge.getLayerDepth(), requested Layer " + + layerName + " has no RoutingLayerGauge."; + PyErr_SetString ( ConstructorError, message.c_str() ); return NULL; } } else { diff --git a/crlcore/src/pyCRL/PySystem.cpp b/crlcore/src/pyCRL/PySystem.cpp new file mode 100644 index 00000000..e3bc4dd2 --- /dev/null +++ b/crlcore/src/pyCRL/PySystem.cpp @@ -0,0 +1,113 @@ +// -*- C++ -*- +// +// 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 | +// | =============================================================== | +// | C++ Module : "./PySystem.cpp" | +// +-----------------------------------------------------------------+ + + +#include "crlcore/PySystem.h" + + +namespace CRL { + + using std::cerr; + using std::endl; + using std::hex; + using std::ostringstream; + using Hurricane::tab; + using Hurricane::Exception; + using Hurricane::Bug; + using Hurricane::Error; + using Hurricane::Warning; + using Hurricane::DataBase; + using Isobar::__cs; + using Isobar::Converter; + using Isobar::ProxyProperty; + using Isobar::ProxyError; + using Isobar::ConstructorError; + using Isobar::HurricaneError; + using Isobar::HurricaneWarning; + using Isobar::PyAny_AsLong; + using Isobar::ParseOneArg; + using Isobar::ParseTwoArg; + + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(System,sys,function) + + +// +=================================================================+ +// | "PySystem" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + static PyObject* PySystem_get ( PyObject* args ) + { + cdebug_log(30,0) << "PySystem_get()" << endl; + + System* sys = NULL; + PySystem* pySys = NULL; + + HTRY + sys = System::get(); + pySys = PyObject_NEW( PySystem, &PyTypeSystem ); + if (pySys == NULL) return NULL; + pySys->_object = sys; + HCATCH + + return (PyObject*)pySys; + } + + + // Standart Accessors (Attributes). + + + // Standart Destroy (Attribute). + // DBoDestroyAttribute(PySystem_destroy,PySystem) + + + PyMethodDef PySystem_Methods[] = + { { "get" , (PyCFunction)PySystem_get , METH_NOARGS|METH_STATIC + , "Gets the Coriolis System singleton." } + //, { "destroy" , (PyCFunction)PySystem_destroy , METH_NOARGS + // , "Destroy the associated hurricane object. The python object remains." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + PythonOnlyDeleteMethod(System) + PyTypeObjectLinkPyType(System) + + +#else // Python Module Code Part. + + +// x=================================================================x +// | "PySystem" Shared Library Code Part | +// x=================================================================x + + + // Link/Creation Method. + PyTypeObjectDefinitions(System) + + +#endif // Shared Library Code Part. + + +} // extern "C". + +} // CRL namespace. + diff --git a/crlcore/src/pyCRL/crlcore/PySystem.h b/crlcore/src/pyCRL/crlcore/PySystem.h new file mode 100644 index 00000000..29df7cc6 --- /dev/null +++ b/crlcore/src/pyCRL/crlcore/PySystem.h @@ -0,0 +1,61 @@ +// -*- C++ -*- +// +// 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 | +// | =============================================================== | +// | C++ Header : "./crlcore/PySystem.h" | +// +-----------------------------------------------------------------+ + + +#ifndef CRL_PY_SYSTEM_H +#define CRL_PY_SYSTEM_H + +#include "hurricane/isobar/PyHurricane.h" +#include "crlcore/Utilities.h" + + +namespace CRL { + + +extern "C" { + + +// ------------------------------------------------------------------- +// Python Object : "PySystem". + + typedef struct { + PyObject_HEAD + CRL::System* _object; + } PySystem; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyCRL.ccp". + + extern PyTypeObject PyTypeSystem; + extern PyMethodDef PySystem_Methods[]; + + extern PyObject* PySystem_Link ( CRL::System* ); + extern void PySystem_LinkPyType (); + extern void PySystem_postModuleInit (); + + +#define IsPySystem(v) ( (v)->ob_type == &PyTypeSystem ) +#define PYSYSTEM(v) ( (PySystem*)(v) ) +#define PYSYSTEM_O(v) ( PYSYSTEM(v)->_object ) + + +} // extern "C". + + +} // CRL namespace. + + +#endif // CRL_PY_SYSTEM_H diff --git a/cumulus/src/plugins/AboutWindow.py b/cumulus/src/plugins/AboutWindow.py index 3026d59a..04760cf1 100644 --- a/cumulus/src/plugins/AboutWindow.py +++ b/cumulus/src/plugins/AboutWindow.py @@ -149,7 +149,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): rvalue = True try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) aboutWidget = AboutWidget() diff --git a/cumulus/src/plugins/ChipPlace.py b/cumulus/src/plugins/ChipPlace.py index 8b3814e7..fcabb090 100644 --- a/cumulus/src/plugins/ChipPlace.py +++ b/cumulus/src/plugins/ChipPlace.py @@ -61,7 +61,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): rvalue = True try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/ChipRoute.py b/cumulus/src/plugins/ChipRoute.py index e39d112a..61bbe648 100644 --- a/cumulus/src/plugins/ChipRoute.py +++ b/cumulus/src/plugins/ChipRoute.py @@ -63,7 +63,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): rvalue = True try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/ClockTreePlugin.py b/cumulus/src/plugins/ClockTreePlugin.py index 78e7373a..b6a0f131 100755 --- a/cumulus/src/plugins/ClockTreePlugin.py +++ b/cumulus/src/plugins/ClockTreePlugin.py @@ -70,7 +70,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) errorCode = 0 diff --git a/cumulus/src/plugins/CoreToChip_cmos.py b/cumulus/src/plugins/CoreToChip_cmos.py index edcf7e9b..f6db19cf 100644 --- a/cumulus/src/plugins/CoreToChip_cmos.py +++ b/cumulus/src/plugins/CoreToChip_cmos.py @@ -43,7 +43,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): rvalue = True try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/CoreToChip_phlib80.py b/cumulus/src/plugins/CoreToChip_phlib80.py index 8f7cc23a..42bb228d 100644 --- a/cumulus/src/plugins/CoreToChip_phlib80.py +++ b/cumulus/src/plugins/CoreToChip_phlib80.py @@ -43,7 +43,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): rvalue = True try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/RSavePlugin.py b/cumulus/src/plugins/RSavePlugin.py index 13a309fc..f7e52d57 100644 --- a/cumulus/src/plugins/RSavePlugin.py +++ b/cumulus/src/plugins/RSavePlugin.py @@ -58,7 +58,11 @@ def rsave ( cell, views=CRL.Catalog.State.Physical, depth=0 ): if depth == 0: print ' o Recursive Save-Cell.' sviews = '' - if views & CRL.Catalog.State.Logical: sviews += 'netlist' + if views & CRL.Catalog.State.Logical: + sviews += 'netlist' + if views & CRL.Catalog.State.VstUseConcat: + if sviews: sviews += ',' + sviews += 'VST uses &' if views & CRL.Catalog.State.Physical: if sviews: sviews += ',' sviews += 'layout' @@ -89,7 +93,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/RSavePluginAll.py b/cumulus/src/plugins/RSavePluginAll.py index ee7de67a..756f2672 100644 --- a/cumulus/src/plugins/RSavePluginAll.py +++ b/cumulus/src/plugins/RSavePluginAll.py @@ -84,7 +84,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/S2R.py b/cumulus/src/plugins/S2R.py index ccd78807..ce1c9d06 100644 --- a/cumulus/src/plugins/S2R.py +++ b/cumulus/src/plugins/S2R.py @@ -107,7 +107,6 @@ def unicornHook ( **kw ): def ScriptMain ( **kw ): rvalue = True try: - helpers.staticInitialization( quiet=True ) #helpers.setTraceLevel( 550 ) cell, editor = plugins.kwParseMain( **kw ) diff --git a/cumulus/src/plugins/__init__.py b/cumulus/src/plugins/__init__.py index fc1e5aaa..f39ebb18 100644 --- a/cumulus/src/plugins/__init__.py +++ b/cumulus/src/plugins/__init__.py @@ -243,16 +243,14 @@ def staticInitialization (): global loaded if loaded: return - helpers.staticInitialization( quiet=False ) - try: print ' o Preload standard plugins.' pluginsDir = os.path.dirname(__file__) loadPlugins( pluginsDir ) - if helpers.ndaDir: + if helpers.ndaTopDir: print ' o Preload NDA protected plugins.' - pluginsDir = os.path.join( helpers.ndaDir, 'python2.7/site-packages/cumulus/plugins' ) + pluginsDir = os.path.join( helpers.ndaTopDir, 'python2.7/site-packages/cumulus/plugins' ) loadPlugins( pluginsDir ) else: print ' o No NDA protected plugins.' diff --git a/cumulus/src/plugins/chip/Chip.py b/cumulus/src/plugins/chip/Chip.py index baabc33c..5e3b1a03 100644 --- a/cumulus/src/plugins/chip/Chip.py +++ b/cumulus/src/plugins/chip/Chip.py @@ -117,17 +117,17 @@ class PlaceRoute ( object ): raise ErrorMessage( 1, 'chip.doCoronaFloorplan(): Chip is not valid, aborting.' ) return - railsNb = Cfg.getParamInt('chip.block.rails.count' ).asInt() - hRailWidth = Cfg.getParamInt('chip.block.rails.hWidth' ).asInt() - vRailWidth = Cfg.getParamInt('chip.block.rails.vWidth' ).asInt() - hRailSpace = Cfg.getParamInt('chip.block.rails.hSpacing').asInt() - vRailSpace = Cfg.getParamInt('chip.block.rails.vSpacing').asInt() + self.railsNb = Cfg.getParamInt('chip.block.rails.count' ).asInt() + self.hRailWidth = Cfg.getParamInt('chip.block.rails.hWidth' ).asInt() + self.vRailWidth = Cfg.getParamInt('chip.block.rails.vWidth' ).asInt() + self.hRailSpace = Cfg.getParamInt('chip.block.rails.hSpacing').asInt() + self.vRailSpace = Cfg.getParamInt('chip.block.rails.vSpacing').asInt() if not self.conf.useClockTree: self.railsNb -= 1 innerBb = Box( self.conf.coreSize ) - innerBb.inflate( railsNb * vRailWidth + (railsNb+1) * vRailSpace - , railsNb * hRailWidth + (railsNb+1) * hRailSpace ) + innerBb.inflate( self.railsNb * self.vRailWidth + (self.railsNb+1) * self.vRailSpace + , self.railsNb * self.hRailWidth + (self.railsNb+1) * self.hRailSpace ) coronaAb = self.conf.corona.getAbutmentBox() if innerBb.getWidth() > coronaAb.getWidth(): diff --git a/cumulus/src/plugins/chip/Configuration.py b/cumulus/src/plugins/chip/Configuration.py index 73b6de4c..c1223ee8 100644 --- a/cumulus/src/plugins/chip/Configuration.py +++ b/cumulus/src/plugins/chip/Configuration.py @@ -23,6 +23,7 @@ from Hurricane import Box from Hurricane import Transformation from Hurricane import Box from Hurricane import Path +from Hurricane import Layer from Hurricane import Occurrence from Hurricane import Net from Hurricane import RoutingPad @@ -37,6 +38,7 @@ from CRL import RoutingLayerGauge from helpers import trace from helpers.io import ErrorMessage from helpers.io import WarningMessage +from helpers.io import catch from plugins import getParameter import chip @@ -223,6 +225,10 @@ class GaugeConf ( object ): self.cellGauge = CRL.AllianceFramework.get().getCellGauge( gaugeName ) self.routingGauge = CRL.AllianceFramework.get().getRoutingGauge( gaugeName ) + if not self.routingGauge: + raise ErrorMessage( 1, [ 'RoutingGauge._loadRoutingGauge(): No routing gauge named "%s".' % gaugeName + , 'Please check the "anabatic.routingGauge" configuration parameter." ' ]) + topLayer = Cfg.getParamString('anabatic.topRoutingLayer').asString() self.topLayerDepth = 0 @@ -253,6 +259,10 @@ class GaugeConf ( object ): if self.verticalDeepDepth < 0: self.verticalDeepDepth = depth self.verticalDepth = depth + trace( 550, '\thorizontalDepth :%d\n' % self.horizontalDepth ) + trace( 550, '\tverticalDepth :%d\n' % self.verticalDepth ) + trace( 550, '\thorizontalDeepDepth:%d\n' % self.horizontalDeepDepth ) + trace( 550, '\tverticalDeepDepth :%d\n' % self.verticalDeepDepth ) return def _loadIoPadGauge ( self, ioPadGaugeName ): @@ -895,9 +905,7 @@ class ChipConf ( object ): def coronaContactArray ( self, chipNet, layer, chipX, chipY, array, flags ): trace( 550, ',+', '\tChipConf.coronaContactArray\n' ) - # Should be read from the symbolic technology rules. - viaPitch = DbU.fromLambda( 4.0 ) - + viaPitch = layer.getMinimalSize() + layer.getMinimalSpacing() coronaAb = self.getInstanceAb( self.icorona ) coronaNet = self.getCoronaNet( chipNet ) if not coronaNet: return None @@ -1277,15 +1285,16 @@ class ChipConf ( object ): def loadConfiguration ( cell, viewer=None ): sys.path.append( os.getcwd() ) - #confFile = cell.getName()+'_ioring' - confFile = 'ioring' - if not os.path.isfile(confFile+'.py'): - raise ErrorMessage( 1, 'ChipPlugin configuration file <%s.py> is missing.' % confFile ) - - confModule = __import__( confFile, globals(), locals(), confFile ) + try: + confFile = 'coriolis2/ioring.py' + if not os.path.isfile(confFile): + raise ErrorMessage( 1, 'ChipPlugin, configuration file "%s" is missing.' % confFile ) + else: + if not os.path.isfile('coriolis2/__init__.py'): + raise ErrorMessage( 1, 'ChipPlugin, configuration directory "./coriolis2/" is missing "__init__.py".' ) + + from coriolis2.ioring import chip + except Exception, e: + catch( e ) - if not confModule.__dict__.has_key('chip'): - ErrorMessage( 1, 'Module <%s> do not provides the chip variable, skipped.' \ - % confFile ) - - return ChipConf( confModule.__dict__['chip'], cell, viewer ) + return ChipConf( chip, cell, viewer ) diff --git a/cumulus/src/plugins/chip/PadsCorona.py b/cumulus/src/plugins/chip/PadsCorona.py index eb35f2db..4d5bea39 100644 --- a/cumulus/src/plugins/chip/PadsCorona.py +++ b/cumulus/src/plugins/chip/PadsCorona.py @@ -454,7 +454,7 @@ class Side ( object ): if m: padName = m.group( 'power' ) padNet = padInstance.getMasterCell().getNet( padName ) - print 'padName:', padName, 'padNet:', padNet + #print 'padName:', padName, 'padNet:', padNet if padNet: plug = padInstance.getPlug( padNet ) chipNet = plug.getNet() @@ -1163,11 +1163,11 @@ class Corona ( object ): count += 1 else: if not chipIntNet.isGlobal(): - raise ErrorMessage( 1, [ 'PadsCorona._createCoreWire(): In I/O pad "%s" (%s),' + raise ErrorMessage( 1, [ 'PadsCorona._createCoreWire(): In I/O pad "%s" (%s,%s),' % ( padInstance.getMasterCell().getName() - , padInstance.getName() ) + , padInstance.getName(), str(padInstance.getTransformation()) ) , 'connector "%s" has no suitable segment for net "%s".' - % ( padNet.getName() + % ( str(padNet) , chipIntNet.getName() ) ] ) diff --git a/documentation/PythonCpp/PythonCpp.pdf b/documentation/PythonCpp/PythonCpp.pdf index 43f05aa5..356467c8 100644 Binary files a/documentation/PythonCpp/PythonCpp.pdf and b/documentation/PythonCpp/PythonCpp.pdf differ diff --git a/documentation/PythonTutorial/PythonTutorial.pdf b/documentation/PythonTutorial/PythonTutorial.pdf index dc627e0d..ec7bb376 100644 Binary files a/documentation/PythonTutorial/PythonTutorial.pdf and b/documentation/PythonTutorial/PythonTutorial.pdf differ diff --git a/documentation/RDS/RDS.pdf b/documentation/RDS/RDS.pdf index 049e2272..abd499f3 100644 Binary files a/documentation/RDS/RDS.pdf and b/documentation/RDS/RDS.pdf differ diff --git a/documentation/Stratus/Stratus.pdf b/documentation/Stratus/Stratus.pdf index 4a6b233e..bb72b8eb 100644 Binary files a/documentation/Stratus/Stratus.pdf and b/documentation/Stratus/Stratus.pdf differ diff --git a/documentation/UsersGuide/Configuration.rst b/documentation/UsersGuide/Configuration.rst index 0d9d4885..6db8baa7 100644 --- a/documentation/UsersGuide/Configuration.rst +++ b/documentation/UsersGuide/Configuration.rst @@ -38,170 +38,136 @@ two methods: |bcenter| |CoriolisSoftSchema| |ecenter| -All configuration & initialization files are Python scripts, despite their -|dot_conf| extention. From a syntactic point of view, there is no difference -between the system-wide configuration files and the user's configuration, -they use the same Python helpers. -|medskip| -Configuration is done in two stages: +Configuration & User's Settings +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#. Selecting the technology. -#. Loading the complete configuration for the given technology - and the user's settings. +All configurations files are shipped under the form of |Python| modules. +They are to be loaded through ``import`` statements. The user's configuration +files must be put in a ``./coriolis2/`` directory under the working directory. +It must be made a |Python| module so it must contains a ``__init__.py`` file +(kept empty most of the time). And as they are true |Python| files, you may use +in them any valid code you see fit. +If no user configuration files are present, |Coriolis| will use the default +``symbolic.cmos`` technology which matches the |Alliance| symbolic default one. -First Stage: Technology Selection -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Contents of the user's configuration directory ``./coriolis2/``: -|noindent| -The initialization process is done by executing, in order, the following file(s): ++----------------------------------+----------------------------------------------+ +| File | Contents/Meaning | ++==================================+==============================================+ +| :cb:`./coriolis2/__init__.py` | **Mandatory.** Tells |Python| this directory | +| | *is* a module. Can be left empty | ++----------------------------------+----------------------------------------------+ +| :cb:`./coriolis2/settings.py` | **Mandatory.** The user's settings, it must | +| | setup the technology intended for use and | +| | perform any configuration variable settings | ++----------------------------------+----------------------------------------------+ +| :cb:`./coriolis2/ioring.py` | **Optional.** Define how the I/O pads are to | +| | be placed on the periphery of the chip along | +| | the chip and core sizes | ++----------------------------------+----------------------------------------------+ +| :cb:`./coriolis2/katana.py` | **Optional.** Hook file for |Katana|, run | +| | just after the tool has been created for a | +| | ``Cell``. Mostly to setup ``Nets`` to be | +| | traced | ++----------------------------------+----------------------------------------------+ -+-------+----------------------------------+----------------------------------------------+ -| Order | Meaning | File | -+=======+==================================+==============================================+ -| **1** | The system setting | :cb:`/etc/coriolis2/techno.conf` | -+-------+----------------------------------+----------------------------------------------+ -| **2** | The user's global setting | :cb:`${HOME}/.coriolis2/techno.py` | -+-------+----------------------------------+----------------------------------------------+ -| **3** | The user's local setting | :cb:`/.coriolis2/techno.py` | -+-------+----------------------------------+----------------------------------------------+ +For example, to use |MOSIS| 180nm, you can put in your :cb:`./coriolis2/setting.py`: -Those files must provide only one variable, the name of the technology. Each technology -will provide configuration for both the symbolic part and the real part. |Coriolis| can -work with purely symbolic technology (``symbolic/cmos``) in that case, the real technology -part is a dummy one. +.. code-block:: python -For example, to use |MOSIS| 180nm: :: - - # -*- Mode:Python -*- + # -*- Mode:Python -*- - technology = '180/scn6m_deep_09' + import node180.scn6m_deep_09 -Second Stage: Technology Configuration Loading -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A Comprehensive Example of :cb:`./coriolis2/setting.py` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -|noindent| -The :cb:`technology` variable is set by the first stage and it's the name of the -technology. A directory of that name, with all the configuration files, -must exist in the configuration directory (:cb:`/etc/coriolis2`). -In addition to the technology-specific directories, a :cb:`common/` directory is -there to provide a trunk for all the identical data across the various technologies. -The initialization process is done by executing, in order, the following file(s): +.. code-block:: python -+-------+----------------------------------+-----------------------------------------------+ -| Order | Meaning | File | -+=======+==================================+===============================================+ -| **1** | The system initialization | :cb:`/etc/coriolis2//.conf` | -+-------+----------------------------------+-----------------------------------------------+ -| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` | -+-------+----------------------------------+-----------------------------------------------+ -| **3** | The user's local initialization | :cb:`/.coriolis2/settings.py` | -+-------+----------------------------------+-----------------------------------------------+ + import os + import Cfg + import Viewer + import CRL + import node180.scn6m_deep_09 + from helpers import l, u, n -.. note:: *The loading policy is not hard-coded.* It is implemented - at Python level in :cb:`/etc/coriolis2/coriolisInit.py`, and thus may be easily - amended to whatever site policy. + 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' + + Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.UserFile ) + + Viewer.Graphics.setStyle( 'Alliance.Classic [black]' ) + + cellsTop = allianceTop+'/cells' + + # Alliance related settings. + af = CRL.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=CRL.Environment.Append ) + env.addSYSTEM_LIBRARY ( library=cellsTop+'/mpxlib', mode=CRL.Environment.Append ) - The truly mandatory requirement is the existence of :cb:`coriolisInit.py` - which *must* contain a :cb:`coriolisConfigure()` function with no argument. + # Misc. setting parameters. + Cfg.getParamBool ( 'misc.logMode' ).setBool ( False ) + Cfg.getParamBool ( 'misc.verboseLevel1' ).setBool ( True ) + Cfg.getParamBool ( 'misc.verboseLevel2' ).setBool ( True ) - The :cb:`coriolisInit.py` script execution is triggered by the *import* of - the ``CRL`` module: + # P&R related parameters. + Cfg.getParamString ( 'anabatic.routingGauge' ).setString ( 'msxlib4' ) + Cfg.getParamString ( 'anabatic.topRoutingLayer' ).setString ( 'METAL4' ) + Cfg.getParamInt ( 'katana.hTracksReservedLocal' ).setInt ( 6 ) + Cfg.getParamInt ( 'katana.vTracksReservedLocal' ).setInt ( 3 ) - .. code:: python - - import sys - import os.path - import Cfg - import Hurricane - import CRL # Triggers execution of "coriolisInit.py". - import Viewer - - -Configuration Helpers -~~~~~~~~~~~~~~~~~~~~~ - -To ease the writing of configuration files, a set of small helpers -is available. They allow to setup the configuration parameters through -simple assembly of tuples. The helpers are installed under the directory: :: - - /etc/coriolis2/ - -Where :cb:`/` is the root of the installation. + Cfg.Configuration.popDefaultPriority() -.. _Alliance Helper: +|noindent| The example above shows the user's configuration file, with all the +available settings for |Alliance| and a small subset for other tools. Some remarks +about this file: -|Alliance| Helper ------------------ +* The ``Cfg.Configuration.pushDefaultPriority()`` and ``Cfg.Configuration.popDefaultPriority()`` + statements are there so the value sets by the user will not be overriden by system + ones event if they are setup afterwards. This priority system is introduced so the + various configuration files could be loaded in out of order. -The configuration file must provide an :cb:`allianceConfig` tuple as shown below. -Like all the |Coriolis| configuration file, it is to be executed through |Python|, -so we can use it to perform a not so dumb search of the |Alliance| installation -directory. Our default policy is to try to read the ``ALLIANCE_TOP`` environment -variable, and if not found, default to ``/soc/alliance``. +* The ``Viewer.Graphics.setStyle()`` allows you to choose the look of your liking from + the start. -.. code:: python - - import os - from helpers.Alliance import AddMode - from helpers.Alliance import Gauge - - allianceTop = None - if os.environ.has_key('ALLIANCE_TOP'): - allianceTop = os.environ['ALLIANCE_TOP'] - if not os.path.isdir(allianceTop): - allianceTop = None - - if not allianceTop: allianceTop = '/soc/alliance' - - cellsTop = allianceTop+'/cells/' - - - allianceConfig = \ - ( ( 'CATALOG' , 'CATAL') - , ( 'WORKING_LIBRARY' , '.') - , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append) - , (cellsTop+'dp_sxlib', AddMode.Append) - , (cellsTop+'ramlib' , AddMode.Append) - , (cellsTop+'romlib' , AddMode.Append) - , (cellsTop+'rflib' , AddMode.Append) - , (cellsTop+'rf2lib' , AddMode.Append) - , (cellsTop+'pxlib' , AddMode.Append) - , (cellsTop+'padlib' , AddMode.Append) ) ) - , ( 'IN_LO' , 'vst') - , ( 'IN_PH' , 'ap') - , ( 'OUT_LO' , 'vst') - , ( 'OUT_PH' , 'ap') - , ( 'POWER' , 'vdd') - , ( 'GROUND' , 'vss') - , ( 'CLOCK' , '.*ck.*|.*nck.*') - , ( 'BLOCKAGE' , '^blockage[Nn]et*') - , ( 'PAD' , '.*_px$') - ) - -|newpage| - - -|noindent| The example above shows the system configuration file, with all the -available settings. Some important remarks about those settings: - -* In its configuration file, the user does not need to redefine all the settings, - just the one he wants to change. In most of the cases, the ``SYSTEM_LIBRARY``, - the ``WORKING_LIBRARY`` and the special net names (at this point there is not +* For |Alliance|, the user does not need to redefine all the settings, + just the one he wants to change. In most of the cases, the ``addSYSTEM_LIBRARY()``, + the ``setWORKING_LIBRARY()`` and the special net names (at this point there is not much alternatives for the others settings). -* ``SYSTEM_LIBRARY`` setting: Setting up the library search path. - Each library entry in the tuple will be added to the search path according - to the second parameter: +* ``addSYSTEM_LIBRARY()`` adds a directory to the library search path. + Each library entry will be added to the search path according to the second parameter: - * :cb:`AddMode::Append`: append to the search path. + * :cb:`CRL.Environment::Append`: append to the search path. - * :cb:`AddMode::Prepend`: insert in head of the search path. + * :cb:`CRL.Environment::Prepend`: insert in head of the search path. - * :cb:`AddMode::Replace`: look for a library of the same name and replace + * :cb:`CRL.Environment::Replace`: look for a library of the same name and replace it, whithout changing the search path order. If no library of that name already exists, it is appended. @@ -211,160 +177,27 @@ available settings. Some important remarks about those settings: the system will browse sequentially through the library list and returns the first |Cell| whose name match. -* For ``POWER``, ``GROUND``, ``CLOCK`` and ``BLOCKAGE`` net names, a regular - expression (|GNU| regexp) is expected. +* For ``setPOWER()``, ``setGROUND()``, ``setCLOCK()`` and ``setBLOCKAGE()`` net names, + a regular expression (|GNU| regexp) is expected. -.. * The ``helpers.sysConfDir`` variable is supplied by the helpers, it is the -.. directory in which the system-wide configuration files are located. -.. For a standard installation it would be: ``/soc/coriolis2``. -.. -.. .. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY`` -.. and ``DISPLAY``. In the previous releases, those files were to be read by -.. XML parsers, and still do if you triggers the XML compatibility mode. -.. But now, they have Python conterparts. In the configuration files, you -.. still have to name them as XML files, the Python file name will be -.. deduced from this one with those two translation rules: -.. -.. #. In the filename, all dots, except for the last (the file extention), -.. are replaced by underscores. -.. -.. #. The ``.xml`` extention is substituted by a ``.conf``. -.. -.. For the symbolic technology, it would give: :: -.. -.. /soc/coriolis2/technology.symbolic.xml -.. --> /soc/coriolis2/technology_symbolic.conf +* For other tools parameters, just use getter and setter according to their types: -A typical user's configuration file would be: :: + +------------------+-----------------------------------------------------------+ + | Type | Getter/Setter | + +==================+===========================================================+ + | ``Bool`` | ``Cgt.getParamBool('name').setBool( True )`` | + +------------------+-----------------------------------------------------------+ + | ``Int`` | ``Cgt.getParamInt('name').setBool( 12 )`` | + +------------------+-----------------------------------------------------------+ + | ``Enumerate`` | ``Cgt.getParamEnumerate('name').setBool( 12 )`` | + +------------------+-----------------------------------------------------------+ + | ``Double`` | ``Cgt.getParamDouble('name').setDouble( 254.5 )`` | + +------------------+-----------------------------------------------------------+ + | ``Percentage`` | ``Cgt.getParamPercentage('name').setPercentage( 75.0 )`` | + +------------------+-----------------------------------------------------------+ + | ``String`` | ``Cgt.getParamString('name').setString( 'machin' )`` | + +------------------+-----------------------------------------------------------+ - import os - - homeDir = os.getenv('HOME') - - allianceConfig = \ - ( ('WORKING_LIBRARY' , homeDir+'/worklib') - , ('SYSTEM_LIBRARY' , ( (homeDir+'/mylib', Environment.Append) ) ) - , ('POWER' , 'vdd.*') - , ('GROUND' , 'vss.*') - ) - - -Tools Configuration Helpers ---------------------------- - -All the tools use the same helper to load their configuration (a.k.a. -*Configuration Helper*). Currently the following configuration system-wide -configuration files are defined: - -* :cb:`misc.conf`: common settings or not belonging specifically to a tool. -* :cb:`etesian.conf`: for the |Etesian| tool. -* :cb:`kite.conf`: for the |Kite| tool. -* :cb:`stratus1.conf`: for the |stratus1| tool. - -|newpage| - - -Here is the contents of :cb:`etesian.conf`: :: - - # Etesian parameters. - parametersTable = \ - ( ('etesian.aspectRatio' , TypePercentage, 100 , { 'min':10, 'max':1000 } ) - , ('etesian.spaceMargin' , TypePercentage, 5 ) - , ('etesian.uniformDensity' , TypeBool , False ) - , ('etesian.routingDriven' , TypeBool , False ) - , ("etesian.effort" , TypeEnumerate , 2 - , { 'values':( ("Fast" , 1) - , ("Standard", 2) - , ("High" , 3) - , ("Extreme" , 4) ) } - ) - , ("etesian.graphics" , TypeEnumerate , 2 - , { 'values':( ("Show every step" , 1) - , ("Show lower bound" , 2) - , ("Show result only" , 3) ) } - ) - ) + Lists of the configurable parameters of most interest to the user are given in + :ref:`Viewer & Tools`. - layoutTable = \ - ( (TypeTab , 'Etesian', 'etesian') - - , (TypeTitle , 'Placement area') - , (TypeOption, "etesian.aspectRatio" , "Aspect Ratio, X/Y (%)", 0 ) - , (TypeOption, "etesian.spaceMargin" , "Space Margin" , 1 ) - , (TypeRule ,) - , (TypeTitle , 'Etesian - Placer') - , (TypeOption, "etesian.uniformDensity", "Uniform density" , 0 ) - , (TypeOption, "etesian.routingDriven" , "Routing driven" , 0 ) - , (TypeOption, "etesian.effort" , "Placement effort" , 1 ) - , (TypeOption, "etesian.graphics" , "Placement view" , 1 ) - , (TypeRule ,) - ) - - -Taxonomy of the file: - -* It must contain, at least, the two tables: - - * ``parametersTable``, defines & initialises the configuration variables. - - * ``layoutTables``, defines how the various parameters will be displayed - in the configuration window (:ref:`The Settings Tab`). - -* The ``parametersTable``, is a tuple (list) of tuples. Each entry in the list - describes a configuration parameter. In its simplest form, it's a quadruplet - :cb:`(TypeOption, 'paramId', ParameterType, DefaultValue)` with: - - #. ``TypeOption``, tells that this tuple describes a parameter. - - #. ``paramId``, the identifier of the parameter. Identifiers are defined - by the tools. The list of parameters is detailed in each tool section. - - #. ``ParameterType``, the kind of parameter. Could be: - - * ``TypeBool``, boolean. - * ``TypeInt``, signed integer. - * ``TypeEnumerate``, enumerated type, needs extra entry. - * ``TypePercentage``, percentage, expressed between 0 and 100. - * ``TypeDouble``, float. - * ``TypeString``, character string. - - #. ``DefaultValue``, the default value for that parameter. - - -Hacking the Configuration Files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Aside from the symbols that get used by the configuration helpers like -:cb:`allianceConfig` or :cb:`parametersTable`, you can put pretty much anything -in :cb:`/.coriolis2/settings.py` (that is, written in |Python|). - -For example: :: - - # -*- Mode:Python -*- - - defaultStyle = 'Alliance.Classic [black]' - - # Regular Coriolis configuration. - parametersTable = \ - ( ('misc.catchCore' , TypeBool , False ) - , ('misc.info' , TypeBool , False ) - , ('misc.paranoid' , TypeBool , False ) - , ('misc.bug' , TypeBool , False ) - , ('misc.logMode' , TypeBool , True ) - , ('misc.verboseLevel1' , TypeBool , False ) - , ('misc.verboseLevel2' , TypeBool , True ) - , ('misc.minTraceLevel' , TypeInt , 0 ) - , ('misc.maxTraceLevel' , TypeInt , 0 ) - ) - - # Some ordinary Python script... - import os - - print ' o Cleaning up ClockTree previous run.' - for fileName in os.listdir('.'): - if fileName.endswith('.ap') or (fileName.find('_clocked.') >= 0): - print ' - <%s>' % fileName - os.unlink(fileName) - - -See :ref:`Python Interface to Coriolis` for more details on those capabilities. diff --git a/documentation/UsersGuide/Installation.rst b/documentation/UsersGuide/Installation.rst index baa4ed6e..e7ee00a7 100644 --- a/documentation/UsersGuide/Installation.rst +++ b/documentation/UsersGuide/Installation.rst @@ -314,7 +314,7 @@ packaging, you must configure it so that it can found those libraries. The easiest way is to setup the |Alliance| environment (i.e. sourcing ``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment (see the next section). To understand how |Coriolis| find/setup |Alliance| you may -have look to the :ref:`Alliance Helper`. +have look to the *Configuration and User's Settings* section. Setting up the Environment (coriolisEnv.py) diff --git a/documentation/UsersGuide/Releases.rst b/documentation/UsersGuide/Releases.rst index 68f3905a..fb210145 100644 --- a/documentation/UsersGuide/Releases.rst +++ b/documentation/UsersGuide/Releases.rst @@ -122,3 +122,20 @@ Release v2.3 To perform the separation, an intermediate hierarchical level ``corona`` between chip and core has been introduced. + + +Release v2.4 +~~~~~~~~~~~~ + +#. Complete rewrite of the initialisation system. No longer use "configuration like" + files with various list of items. Now the configuration is supplied under the + from of |Python| modules to be imported as the user see fit. + +#. Clean separation between |NDA| protected parts and free ones. Now all the |NDA| + related components are put under one separated tree, whether they are configuration + files or |Python| plugins, so that they be can easily by exported. + +#. In |Anabatic| & |Katana| better accuracy at how obstacles decrease the edges + capacities of the GCells. Reduce the edge capacity of a GCell according to it's + inner cluttering (that is, it's number of terminals). Change of semantics + for ``katana.hReservedLocal`` and ``katana.vReservedLocal`` parameters. diff --git a/documentation/UsersGuide/ScriptsPlugins.rst b/documentation/UsersGuide/ScriptsPlugins.rst index ab896dda..cf72255e 100644 --- a/documentation/UsersGuide/ScriptsPlugins.rst +++ b/documentation/UsersGuide/ScriptsPlugins.rst @@ -35,8 +35,9 @@ in |Python|, so don't hesitate to use any package or extension. Small example of Python/Stratus script: :: - from Hurricane import * - from Stratus import * + import symbolic.cmos + from Hurricane import * + from Stratus import * def doSomething (): # ... @@ -68,9 +69,16 @@ This typical script can be executed in two ways: part (this is standart |Python|). It is a simple adapter that will call :cb:`ScriptMain()`. + + In this case, the ``import symbolic.cmos`` statement at the begining + is mandatory. + #. Through |cgt|, either in text or graphical mode. In that case, the :cb:`ScriptMain()` is directly called trough a sub-interpreter. The arguments of the script are passed through the ``**kw`` dictionnary. + + In this case, the ``import symbolic.cmos`` statement at the begining + may be omitted. +----------------------+-----------------------------------------------+ | \*\*kw Dictionnary | @@ -122,10 +130,8 @@ and below only symbolic layer. The designer must provide a configuration file that defines the rules for the placement of the top-level hierarchy (that is, the pads and the core). -This file must be named after the chip's name, by appending ``_ioring.py`` -(obviously, it is a |Python| file). For instance if the chip netlist file -is called ``amd2901.vst``, then the configuration file must be named -``amd2901_ioring.vst``. +This file must be names ``ioring.py`` and put into the user's configuration +directory ``./coriolis2/`` Example of chip placement configuration file (for ``AM2901``): :: @@ -190,27 +196,27 @@ Configuration parameters, defaults are defined in ``etc/coriolis2//plug +===================================+==================+============================+ | **Chip Plugin Parameters** | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.count`` | TypeInt | :cb:`5` | +|``chip.block.rails.count`` | ``Int`` | :cb:`5` | | +------------------+----------------------------+ | | The minimum number of rails around the core | | | block. Must be odd and above 5. | | | One rail for the clock and at least two pairs | | | of power/grounds | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.hWidth`` | TypeInt | :cb:`12` |lambda| | +|``chip.block.rails.hWidth`` | ``Int`` | :cb:`12` |lambda| | | +------------------+----------------------------+ | | The horizontal width of the rails | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.vWidth`` | TypeInt | :cb:`12` |lambda| | +|``chip.block.rails.vWidth`` | ``Int`` | :cb:`12` |lambda| | | +------------------+----------------------------+ | | The vertical width of the rails | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.hSpacing`` | TypeInt | :cb:`6` |lambda| | +|``chip.block.rails.hSpacing`` | ``Int`` | :cb:`6` |lambda| | | +------------------+----------------------------+ | | The spacing, *edge to edge* of two adjacent | | | horizontal rails | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.vSpacing`` | TypeInt | :cb:`6` |lambda| | +|``chip.block.rails.vSpacing`` | ``Int`` | :cb:`6` |lambda| | | +------------------+----------------------------+ | | The spacing, *edge to edge* of two adjacent | | | vertical rails | @@ -278,12 +284,12 @@ Configuration parameters, defaults are defined in ``etc/coriolis2//plug +===================================+==================+============================+ | **ClockTree Plugin Parameters** | +-----------------------------------+------------------+----------------------------+ -|``clockTree.minimumSide`` | TypeInt | :cb:`300` |lambda| | +|``clockTree.minimumSide`` | ``Int`` | :cb:`300` |lambda| | | +------------------+----------------------------+ | | The minimum size below which the clock tree | | | will stop to perform quadri-partitions | +-----------------------------------+------------------+----------------------------+ -|``clockTree.buffer`` | TypeString | :cb:`buf_x2` | +|``clockTree.buffer`` | ``String`` | :cb:`buf_x2` | | +------------------+----------------------------+ | | The buffer model to use to drive sub-nets | +-----------------------------------+------------------+----------------------------+ diff --git a/documentation/UsersGuide/UsersGuide.pdf b/documentation/UsersGuide/UsersGuide.pdf index 5a6ce5f6..6db1163d 100644 Binary files a/documentation/UsersGuide/UsersGuide.pdf and b/documentation/UsersGuide/UsersGuide.pdf differ diff --git a/documentation/UsersGuide/ViewerTools.rst b/documentation/UsersGuide/ViewerTools.rst index e8aff489..a2badb50 100644 --- a/documentation/UsersGuide/ViewerTools.rst +++ b/documentation/UsersGuide/ViewerTools.rst @@ -239,34 +239,34 @@ Etesian Configuration Parameters +===================================+==================+============================+ | **Etesian Parameters** | +-----------------------------------+------------------+----------------------------+ -|``etesian.aspectRatio`` | TypePercentage | :cb:`100` | +|``etesian.aspectRatio`` | ``Percentage`` | :cb:`100` | | +------------------+----------------------------+ | | Define the height on width ``H/W`` aspect | | | ratio, can be comprised between 10 and 1000 | +-----------------------------------+------------------+----------------------------+ -|``etesian.spaceMargin`` | TypePercentage | :cb:`5` | +|``etesian.spaceMargin`` | ``Percentage`` | :cb:`5` | | +------------------+----------------------------+ | | The extra white space added to the total area | | | of the standard cells | +-----------------------------------+------------------+----------------------------+ -|``etesian.uniformDensity`` | TypeBool | :cb:`False` | +|``etesian.uniformDensity`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Whether the cells will be spread envenly | | | across the area or allowed to form denser | | | clusters | +-----------------------------------+------------------+----------------------------+ -|``etesian.effort`` | TypeInt | :cb:`2` | +|``etesian.effort`` | ``Int`` | :cb:`2` | | +------------------+----------------------------+ | | Sets the balance between the speed of the | | | placer and the solution quality | +-----------------------------------+------------------+----------------------------+ -|``etesian.routingDriven`` | TypeBool | :cb:`False` | +|``etesian.routingDriven`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Whether the tool will try routing iterations | | | and whitespace allocation to improve | | | routability; to be implemented | +-----------------------------------+------------------+----------------------------+ -|``etesian.graphics`` | TypeInt | :cb:`2` | +|``etesian.graphics`` | ``Int`` | :cb:`2` | | +------------------+----------------------------+ | | How often the display will be refreshed | | | More refreshing slows the placer. | @@ -359,73 +359,79 @@ All the defaults value given below are from the default |Alliance| technology +===================================+==================+============================+ | **Anabatic Parameters** | +-----------------------------------+------------------+----------------------------+ -|``anabatic.topRoutingLayer`` | TypeString | :cb:`METAL5` | +|``anabatic.topRoutingLayer`` | ``String`` | :cb:`METAL5` | | +------------------+----------------------------+ | | Define the highest metal layer that will be | | | used for routing (inclusive). | +-----------------------------------+------------------+----------------------------+ -|``anabatic.globalLengthThreshold`` | TypeInt | :cb:`1450` | +|``anabatic.globalLengthThreshold`` | ``Int`` | :cb:`1450` | | +------------------+----------------------------+ | | This parameter is used by a layer assignment | | | method which is no longer used (did not give | | | good results) | +-----------------------------------+------------------+----------------------------+ -| ``anabatic.saturateRatio`` | TypePercentage | :cb:`80` | +| ``anabatic.saturateRatio`` | ``Percentage`` | :cb:`80` | | +------------------+----------------------------+ | | If ``M(x)`` density is above this ratio, | | | move up feedthru global segments up from | | | depth ``x`` to ``x+2`` | +-----------------------------------+------------------+----------------------------+ -| ``anabatic.saturateRp`` | TypeInt | :cb:`8` | +| ``anabatic.saturateRp`` | ``Int`` | :cb:`8` | | +------------------+----------------------------+ | | If a GCell contains more terminals | | | (:cb:`RoutingPad`) than that number, force a | | | move up of the connecting segments to those | | | in excess | +-----------------------------------+------------------+----------------------------+ +| ``anabatic.globalIterations`` | ``Int`` | :cb:`10` | +| +------------------+----------------------------+ +| | The maximum number of iterations the global | +| | router will try to solve edges overload | ++-----------------------------------+------------------+----------------------------+ | **Katana Parameters** | +-----------------------------------+------------------+----------------------------+ -| ``katana.hTracksReservedLocal`` | TypeInt | :cb:`3` | +| ``katana.hTracksReservedLocal`` | ``Int`` | :cb:`3` | | +------------------+----------------------------+ | | To take account the tracks needed *inside* a | -| | GCell to build the *local* routing, decrease | -| | the capacity of the edges of the global | -| | router. Horizontal and vertical locally | -| | reserved capacity can be distinguished for | -| | more accuracy. | +| | GCell to build the *local* routing the | +| | capacities of the edges needs to be decreased.| +| | The decrease is computed by the GCell and | +| | cannot exceed this number (this is maximum). | +| | For better accuracy vertical and horizontal | +| | edges are distinguisheds | +-----------------------------------+------------------+----------------------------+ -| ``katana.vTracksReservedLocal`` | TypeInt | :cb:`3` | +| ``katana.vTracksReservedLocal`` | ``Int`` | :cb:`3` | | +------------------+----------------------------+ | | cf. ``kite.hTracksReservedLocal`` | +-----------------------------------+------------------+----------------------------+ -| ``katana.eventsLimit`` | TypeInt | :cb:`4000002` | +| ``katana.eventsLimit`` | ``Int`` | :cb:`4000002` | | +------------------+----------------------------+ | | The maximum number of segment displacements, | | | this is a last ditch safety against infinite | | | loop. It's perhaps a little too low for big | | | designs | +-----------------------------------+------------------+----------------------------+ -| ``katana.ripupCost`` | TypeInt | :cb:`3` | +| ``katana.ripupCost`` | ``Int`` | :cb:`3` | | +------------------+----------------------------+ | | Differential introduced between two ripup | | | costs to avoid a loop between two ripped up | | | segments | +-----------------------------------+------------------+----------------------------+ -| ``katana.strapRipupLimit`` | TypeInt | :cb:`16` | +| ``katana.strapRipupLimit`` | ``Int`` | :cb:`16` | | +------------------+----------------------------+ | | Maximum number of ripup for *strap* segments | +-----------------------------------+------------------+----------------------------+ -| ``katana.localRipupLimit`` | TypeInt | :cb:`9` | +| ``katana.localRipupLimit`` | ``Int`` | :cb:`9` | | +------------------+----------------------------+ | | Maximum number of ripup for *local* segments | +-----------------------------------+------------------+----------------------------+ -| ``katana.globalRipupLimit`` | TypeInt | :cb:`5` | +| ``katana.globalRipupLimit`` | ``Int`` | :cb:`5` | | +------------------+----------------------------+ | | Maximum number of ripup for *global* segments,| | | when this limit is reached, triggers topologic| | | modification | +-----------------------------------+------------------+----------------------------+ -| ``katana.longGlobalRipupLimit`` | TypeInt | :cb:`5` | +| ``katana.longGlobalRipupLimit`` | ``Int`` | :cb:`5` | | +------------------+----------------------------+ | | Maximum number of ripup for *long global* | | | segments, when this limit is reached, triggers| @@ -632,41 +638,41 @@ Miscellaneous Settings +=======================================+==================+============================+ | **Verbosity/Log Parameters** | +---------------------------------------+------------------+----------------------------+ -| ``misc.info`` | TypeBool | :cb:`False` | +| ``misc.info`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Enables display of *info* level message | | | (:cb:`cinfo` stream) | +---------------------------------------+------------------+----------------------------+ -| ``misc.bug`` | TypeBool | :cb:`False` | +| ``misc.bug`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Enables display of *bug* level message | | | (:cb:`cbug` stream), messages can be a little | | | scarry | +---------------------------------------+------------------+----------------------------+ -| ``misc.logMode`` | TypeBool | :cb:`False` | +| ``misc.logMode`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | If enabled, assumes that the output device | | | is not a ``tty`` and suppresses any escape | | | sequences | +---------------------------------------+------------------+----------------------------+ -| ``misc.verboseLevel1`` | TypeBool | :cb:`True` | +| ``misc.verboseLevel1`` | ``Bool`` | :cb:`True` | | +------------------+----------------------------+ | | First level of verbosity, disables level 2 | +---------------------------------------+------------------+----------------------------+ -| ``misc.verboseLevel2`` | TypeBool | :cb:`False` | +| ``misc.verboseLevel2`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Second level of verbosity | +---------------------------------------+------------------+----------------------------+ | **Development/Debug Parameters** | +---------------------------------------+------------------+----------------------------+ -| ``misc.minTraceLevel`` | TypeInt | :cb:`0` | +| ``misc.minTraceLevel`` | ``Int`` | :cb:`0` | +---------------------------------------+------------------+----------------------------+ -| ``misc.maxTraceLevel`` | TypeInt | :cb:`0` | +| ``misc.maxTraceLevel`` | ``Int`` | :cb:`0` | | +------------------+----------------------------+ | | Displays trace information *between* those two| | | levels (:cb:`cdebug` stream) | +---------------------------------------+------------------+----------------------------+ -| ``misc.catchCore`` | TypeBool | :cb:`False` | +| ``misc.catchCore`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | By default, |cgt| does not dump core. | | | To generate one set this flag to :cb:`True` | diff --git a/documentation/_build/doctrees/Analog/Analog.doctree b/documentation/_build/doctrees/Analog/Analog.doctree index fc6b276c..608e4d45 100644 Binary files a/documentation/_build/doctrees/Analog/Analog.doctree and b/documentation/_build/doctrees/Analog/Analog.doctree differ diff --git a/documentation/_build/doctrees/ConfigurationTechnology/Architecture.doctree b/documentation/_build/doctrees/ConfigurationTechnology/Architecture.doctree deleted file mode 100644 index 0040ef57..00000000 Binary files a/documentation/_build/doctrees/ConfigurationTechnology/Architecture.doctree and /dev/null differ diff --git a/documentation/_build/doctrees/ConfigurationTechnology/index.doctree b/documentation/_build/doctrees/ConfigurationTechnology/index.doctree deleted file mode 100644 index a62225d9..00000000 Binary files a/documentation/_build/doctrees/ConfigurationTechnology/index.doctree and /dev/null differ diff --git a/documentation/_build/doctrees/ConfigurationTechnology/pdfHeader.doctree b/documentation/_build/doctrees/ConfigurationTechnology/pdfHeader.doctree deleted file mode 100644 index 52b01708..00000000 Binary files a/documentation/_build/doctrees/ConfigurationTechnology/pdfHeader.doctree and /dev/null differ diff --git a/documentation/_build/doctrees/CrlCore/CrlCore.doctree b/documentation/_build/doctrees/CrlCore/CrlCore.doctree index c752aede..07d9de33 100644 Binary files a/documentation/_build/doctrees/CrlCore/CrlCore.doctree and b/documentation/_build/doctrees/CrlCore/CrlCore.doctree differ diff --git a/documentation/_build/doctrees/Hurricane/Hurricane.doctree b/documentation/_build/doctrees/Hurricane/Hurricane.doctree index 9fd06629..1743e002 100644 Binary files a/documentation/_build/doctrees/Hurricane/Hurricane.doctree and b/documentation/_build/doctrees/Hurricane/Hurricane.doctree differ diff --git a/documentation/_build/doctrees/Katabatic/Katabatic.doctree b/documentation/_build/doctrees/Katabatic/Katabatic.doctree index b9490e46..2da04fbf 100644 Binary files a/documentation/_build/doctrees/Katabatic/Katabatic.doctree and b/documentation/_build/doctrees/Katabatic/Katabatic.doctree differ diff --git a/documentation/_build/doctrees/Kite/Kite.doctree b/documentation/_build/doctrees/Kite/Kite.doctree index 5855db91..e85a62f4 100644 Binary files a/documentation/_build/doctrees/Kite/Kite.doctree and b/documentation/_build/doctrees/Kite/Kite.doctree differ diff --git a/documentation/_build/doctrees/Oroshi/Oroshi.doctree b/documentation/_build/doctrees/Oroshi/Oroshi.doctree index 9c1e2ca1..52400fce 100644 Binary files a/documentation/_build/doctrees/Oroshi/Oroshi.doctree and b/documentation/_build/doctrees/Oroshi/Oroshi.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/Configuration.doctree b/documentation/_build/doctrees/PythonCpp/Configuration.doctree index 74c62a7c..3cd97dd4 100644 Binary files a/documentation/_build/doctrees/PythonCpp/Configuration.doctree and b/documentation/_build/doctrees/PythonCpp/Configuration.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/DBoHierarchy.doctree b/documentation/_build/doctrees/PythonCpp/DBoHierarchy.doctree index 630f5c4e..72fae864 100644 Binary files a/documentation/_build/doctrees/PythonCpp/DBoHierarchy.doctree and b/documentation/_build/doctrees/PythonCpp/DBoHierarchy.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/DBoStandalone.doctree b/documentation/_build/doctrees/PythonCpp/DBoStandalone.doctree index b6c64869..5df1c220 100644 Binary files a/documentation/_build/doctrees/PythonCpp/DBoStandalone.doctree and b/documentation/_build/doctrees/PythonCpp/DBoStandalone.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/DbU.doctree b/documentation/_build/doctrees/PythonCpp/DbU.doctree index 5b688c0d..72669fef 100644 Binary files a/documentation/_build/doctrees/PythonCpp/DbU.doctree and b/documentation/_build/doctrees/PythonCpp/DbU.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/Introduction.doctree b/documentation/_build/doctrees/PythonCpp/Introduction.doctree index ee521ba2..060988de 100644 Binary files a/documentation/_build/doctrees/PythonCpp/Introduction.doctree and b/documentation/_build/doctrees/PythonCpp/Introduction.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/Name.doctree b/documentation/_build/doctrees/PythonCpp/Name.doctree index 79a47391..6f809f20 100644 Binary files a/documentation/_build/doctrees/PythonCpp/Name.doctree and b/documentation/_build/doctrees/PythonCpp/Name.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/NonDBo.doctree b/documentation/_build/doctrees/PythonCpp/NonDBo.doctree index 9d9690ba..a2b1d507 100644 Binary files a/documentation/_build/doctrees/PythonCpp/NonDBo.doctree and b/documentation/_build/doctrees/PythonCpp/NonDBo.doctree differ diff --git a/documentation/_build/doctrees/PythonCpp/index.doctree b/documentation/_build/doctrees/PythonCpp/index.doctree index 70453948..0ea992a2 100644 Binary files a/documentation/_build/doctrees/PythonCpp/index.doctree and b/documentation/_build/doctrees/PythonCpp/index.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/AdvancedTopics.doctree b/documentation/_build/doctrees/PythonTutorial/AdvancedTopics.doctree index f32c4d36..46e29599 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/AdvancedTopics.doctree and b/documentation/_build/doctrees/PythonTutorial/AdvancedTopics.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/CellNetComponent.doctree b/documentation/_build/doctrees/PythonTutorial/CellNetComponent.doctree index 0ee32e60..349cfe17 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/CellNetComponent.doctree and b/documentation/_build/doctrees/PythonTutorial/CellNetComponent.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/CgtScript.doctree b/documentation/_build/doctrees/PythonTutorial/CgtScript.doctree index 8a181ea4..d32db349 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/CgtScript.doctree and b/documentation/_build/doctrees/PythonTutorial/CgtScript.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/Collections.doctree b/documentation/_build/doctrees/PythonTutorial/Collections.doctree index dae5807d..1b2058ae 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/Collections.doctree and b/documentation/_build/doctrees/PythonTutorial/Collections.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/Environment.doctree b/documentation/_build/doctrees/PythonTutorial/Environment.doctree index 95ad5c61..144a7c89 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/Environment.doctree and b/documentation/_build/doctrees/PythonTutorial/Environment.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/Introduction.doctree b/documentation/_build/doctrees/PythonTutorial/Introduction.doctree index b9777adb..b83692a8 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/Introduction.doctree and b/documentation/_build/doctrees/PythonTutorial/Introduction.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/Netlist.doctree b/documentation/_build/doctrees/PythonTutorial/Netlist.doctree index 24cbd1b6..a30d4ccf 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/Netlist.doctree and b/documentation/_build/doctrees/PythonTutorial/Netlist.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/RealDesigns.doctree b/documentation/_build/doctrees/PythonTutorial/RealDesigns.doctree index a93506ef..843f6608 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/RealDesigns.doctree and b/documentation/_build/doctrees/PythonTutorial/RealDesigns.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/ToolEngines.doctree b/documentation/_build/doctrees/PythonTutorial/ToolEngines.doctree index 202d1617..3dbb35f0 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/ToolEngines.doctree and b/documentation/_build/doctrees/PythonTutorial/ToolEngines.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/index.doctree b/documentation/_build/doctrees/PythonTutorial/index.doctree index 2f7b1647..9695a421 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/index.doctree and b/documentation/_build/doctrees/PythonTutorial/index.doctree differ diff --git a/documentation/_build/doctrees/PythonTutorial/pdfHeader.doctree b/documentation/_build/doctrees/PythonTutorial/pdfHeader.doctree index 263a6939..93d8fa9f 100644 Binary files a/documentation/_build/doctrees/PythonTutorial/pdfHeader.doctree and b/documentation/_build/doctrees/PythonTutorial/pdfHeader.doctree differ diff --git a/documentation/_build/doctrees/RDS/RDSpage.doctree b/documentation/_build/doctrees/RDS/RDSpage.doctree index b9357d0b..6cfb2edb 100644 Binary files a/documentation/_build/doctrees/RDS/RDSpage.doctree and b/documentation/_build/doctrees/RDS/RDSpage.doctree differ diff --git a/documentation/_build/doctrees/RDS/index.doctree b/documentation/_build/doctrees/RDS/index.doctree index e6ee20a4..05ffcc01 100644 Binary files a/documentation/_build/doctrees/RDS/index.doctree and b/documentation/_build/doctrees/RDS/index.doctree differ diff --git a/documentation/_build/doctrees/Stratus/index.doctree b/documentation/_build/doctrees/Stratus/index.doctree index 829e0c8f..a81429dc 100644 Binary files a/documentation/_build/doctrees/Stratus/index.doctree and b/documentation/_build/doctrees/Stratus/index.doctree differ diff --git a/documentation/_build/doctrees/Unicorn/Unicorn.doctree b/documentation/_build/doctrees/Unicorn/Unicorn.doctree index 068402aa..4beb6ed7 100644 Binary files a/documentation/_build/doctrees/Unicorn/Unicorn.doctree and b/documentation/_build/doctrees/Unicorn/Unicorn.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/Configuration.doctree b/documentation/_build/doctrees/UsersGuide/Configuration.doctree index 6b058756..3da6ef11 100644 Binary files a/documentation/_build/doctrees/UsersGuide/Configuration.doctree and b/documentation/_build/doctrees/UsersGuide/Configuration.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/DesignFlow.doctree b/documentation/_build/doctrees/UsersGuide/DesignFlow.doctree index 07ea8470..57b4c297 100644 Binary files a/documentation/_build/doctrees/UsersGuide/DesignFlow.doctree and b/documentation/_build/doctrees/UsersGuide/DesignFlow.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/Installation.doctree b/documentation/_build/doctrees/UsersGuide/Installation.doctree index a42752ed..707fdcd5 100644 Binary files a/documentation/_build/doctrees/UsersGuide/Installation.doctree and b/documentation/_build/doctrees/UsersGuide/Installation.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/LicenseCredits.doctree b/documentation/_build/doctrees/UsersGuide/LicenseCredits.doctree index c5a8fb7b..be50f29c 100644 Binary files a/documentation/_build/doctrees/UsersGuide/LicenseCredits.doctree and b/documentation/_build/doctrees/UsersGuide/LicenseCredits.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/Releases.doctree b/documentation/_build/doctrees/UsersGuide/Releases.doctree index 8bcbfeca..c9681634 100644 Binary files a/documentation/_build/doctrees/UsersGuide/Releases.doctree and b/documentation/_build/doctrees/UsersGuide/Releases.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/ScriptsPlugins.doctree b/documentation/_build/doctrees/UsersGuide/ScriptsPlugins.doctree index d09c9cff..627b034b 100644 Binary files a/documentation/_build/doctrees/UsersGuide/ScriptsPlugins.doctree and b/documentation/_build/doctrees/UsersGuide/ScriptsPlugins.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/ViewerTools.doctree b/documentation/_build/doctrees/UsersGuide/ViewerTools.doctree index f4a6f59f..a60b6d66 100644 Binary files a/documentation/_build/doctrees/UsersGuide/ViewerTools.doctree and b/documentation/_build/doctrees/UsersGuide/ViewerTools.doctree differ diff --git a/documentation/_build/doctrees/UsersGuide/index.doctree b/documentation/_build/doctrees/UsersGuide/index.doctree index 2113684e..811b6f2b 100644 Binary files a/documentation/_build/doctrees/UsersGuide/index.doctree and b/documentation/_build/doctrees/UsersGuide/index.doctree differ diff --git a/documentation/_build/doctrees/Viewer/Viewer.doctree b/documentation/_build/doctrees/Viewer/Viewer.doctree index 90cfc895..7dfec7eb 100644 Binary files a/documentation/_build/doctrees/Viewer/Viewer.doctree and b/documentation/_build/doctrees/Viewer/Viewer.doctree differ diff --git a/documentation/_build/doctrees/defapi/defapi.doctree b/documentation/_build/doctrees/defapi/defapi.doctree index ad3cbd18..125e8b6a 100644 Binary files a/documentation/_build/doctrees/defapi/defapi.doctree and b/documentation/_build/doctrees/defapi/defapi.doctree differ diff --git a/documentation/_build/doctrees/environment.pickle b/documentation/_build/doctrees/environment.pickle index ac8af856..b0b31182 100644 Binary files a/documentation/_build/doctrees/environment.pickle and b/documentation/_build/doctrees/environment.pickle differ diff --git a/documentation/_build/doctrees/etc/definitions.doctree b/documentation/_build/doctrees/etc/definitions.doctree index 55adadc6..d575351f 100644 Binary files a/documentation/_build/doctrees/etc/definitions.doctree and b/documentation/_build/doctrees/etc/definitions.doctree differ diff --git a/documentation/_build/doctrees/index.doctree b/documentation/_build/doctrees/index.doctree index f69091dd..ef5f45cf 100644 Binary files a/documentation/_build/doctrees/index.doctree and b/documentation/_build/doctrees/index.doctree differ diff --git a/documentation/_build/doctrees/lefapi/lefapi.doctree b/documentation/_build/doctrees/lefapi/lefapi.doctree index b9d2894b..405d8248 100644 Binary files a/documentation/_build/doctrees/lefapi/lefapi.doctree and b/documentation/_build/doctrees/lefapi/lefapi.doctree differ diff --git a/documentation/_build/doctrees/lefdef/lefdef.doctree b/documentation/_build/doctrees/lefdef/lefdef.doctree index 3cc42498..1f083603 100644 Binary files a/documentation/_build/doctrees/lefdef/lefdef.doctree and b/documentation/_build/doctrees/lefdef/lefdef.doctree differ diff --git a/documentation/_build/html/.buildinfo b/documentation/_build/html/.buildinfo index 84632b1e..56c7723e 100644 --- a/documentation/_build/html/.buildinfo +++ b/documentation/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 68ac091feeaecb0164e599038bac45e4 +config: 79af611b2f6590661a62e75020d49856 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/documentation/_build/html/Analog/Analog.html b/documentation/_build/html/Analog/Analog.html index 4c54dcef..1329c8b6 100644 --- a/documentation/_build/html/Analog/Analog.html +++ b/documentation/_build/html/Analog/Analog.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -533,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -542,7 +532,7 @@ available here: Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/ConfigurationTechnology/Architecture.html b/documentation/_build/html/ConfigurationTechnology/Architecture.html deleted file mode 100644 index b2e7344d..00000000 --- a/documentation/_build/html/ConfigurationTechnology/Architecture.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - - - - - - - - 1. Configuration File Workings — Coriolis 2 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - - - - - -
    -
    -
    - -
    -
    -
    - -
    -

    1. Configuration File Workings¶

    -

    Coriolis do not have any dedicated file format for it’s configuration files. -Instead, configuration files are Python scripts that are expected to provides -a set of variables with specific contents. For example, .coriolis2/techno.py -must provide a technology variable and optionaly a NdaDirectory variable. -So, it’s simplest form is:

    -
    technology = '45/freepdk_45'
    -
    -
    -

    A more complex case could be:

    -
    Ndadirectory = '/home/crypted'
    -technology   = '45/freepdk_45'
    -
    -
    -

    And lastly, taking full advantage of the Python langage:

    -
    import os.path
    -import socket
    -
    -hostname = socket.gethostname()
    -if hostname.startswith('local-computer'):
    -  NdaDirectory = '/home/crypted'
    -  if not os.path.isdir(NdaDirectory):
    -    print '[ERROR] You forgot to mount the NDA encrypted directory, stupid!'
    -else:
    -  NdaDirectory = '/network/techno/'
    -
    -technology = '45/freepdk_45'
    -
    -
    -

    In this script, we choose the value of NdaDirectory according the computer’s -hostname and when using the local filesystem we check if the directory exist.

    -

    A second kind of example is .coriolis2/settings.py. It must provides a -variable parametersTable which is tuple of variable settings. Each element -of the tuple is itself a tuple of three elements (variable_name, type, value)

    -
    parametersTable = \
    -    ( ('misc.catchCore'    , TypeBool, False   )
    -    , ('misc.logMode'      , TypeBool, False   )
    -    , ('misc.verboseLevel1', TypeBool, True    )
    -    , ('misc.verboseLevel2', TypeBool, True    )
    -    )
    -
    -
    -
    -
    -

    2. Directory Tree Structure¶

    -

    Depending if Coriolis is installed in the system or in a separate tree, -the configuration can be rooted in :

    -
    /etc/coriolis2                # System install.
    -<CORIOLIS_TOP>/etc/coriolis2  # Separate tree install.
    -
    -
    -
    - - -
    -
    - - - - -
    - -
    - - - - - -
    - Generated by Sphinx - using a RTD theme on May 27, 2019. -
    - - - - - -
    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. -
    -
    - -
    - -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/ConfigurationTechnology/index.html b/documentation/_build/html/ConfigurationTechnology/index.html deleted file mode 100644 index 8c398747..00000000 --- a/documentation/_build/html/ConfigurationTechnology/index.html +++ /dev/null @@ -1,599 +0,0 @@ - - - - - - - - - - - Configuration & Technonology — Coriolis 2 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - - - - - -
    -
    -
    -
      -
    • Docs »
    • - -
    • Configuration & Technonology
    • -
    • - - - -
    • -
    -
    -
    -
    - -
    -

    Configuration & Technonology¶

    -

    Printable version of this document ConfigurationTechnology.pdf.

    - -
    - - -
    -
    - - - - -
    - -
    - - - - - -
    - Generated by Sphinx - using a RTD theme on May 27, 2019. -
    - - - - - -
    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. -
    -
    - -
    - -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/ConfigurationTechnology/pdfHeader.html b/documentation/_build/html/ConfigurationTechnology/pdfHeader.html deleted file mode 100644 index 39270199..00000000 --- a/documentation/_build/html/ConfigurationTechnology/pdfHeader.html +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - - - - - - Configuration & Technology — Coriolis 2 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - - - - - -
    -
    -
    -
      -
    • Docs »
    • - -
    • Configuration & Technology
    • -
    • - - - -
    • -
    -
    -
    -
    - - - - -
    -
    - - -
    - -
    - - - - - -
    - Generated by Sphinx - using a RTD theme on May 27, 2019. -
    - - - - - -
    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. -
    -
    - -
    - -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/Contents.html b/documentation/_build/html/Contents.html index f53f1835..94e1d61e 100644 --- a/documentation/_build/html/Contents.html +++ b/documentation/_build/html/Contents.html @@ -83,6 +83,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -103,14 +104,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -389,11 +384,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -518,6 +508,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -538,14 +529,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -1134,7 +1119,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -1143,7 +1128,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/CrlCore/CrlCore.html b/documentation/_build/html/CrlCore/CrlCore.html index c526c6a5..27abcbcb 100644 --- a/documentation/_build/html/CrlCore/CrlCore.html +++ b/documentation/_build/html/CrlCore/CrlCore.html @@ -85,6 +85,7 @@
    • Release v2.1
    • Release v2.2
    • Release v2.3
    • +
    • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -533,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -542,7 +532,7 @@ available here: Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Hurricane/Hurricane.html b/documentation/_build/html/Hurricane/Hurricane.html index 7814013e..70db66f2 100644 --- a/documentation/_build/html/Hurricane/Hurricane.html +++ b/documentation/_build/html/Hurricane/Hurricane.html @@ -35,7 +35,7 @@ - + @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -521,7 +511,7 @@ available here: Next - Previous + Previous @@ -533,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -542,7 +532,7 @@ available here: Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Katabatic/Katabatic.html b/documentation/_build/html/Katabatic/Katabatic.html index cd84e8e1..58dbd4ac 100644 --- a/documentation/_build/html/Katabatic/Katabatic.html +++ b/documentation/_build/html/Katabatic/Katabatic.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -538,7 +528,7 @@ mixed signal conterpart Anabatic.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -547,7 +537,7 @@ mixed signal conterpart Anabatic.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Kite/Kite.html b/documentation/_build/html/Kite/Kite.html index 826d081b..5f2ddca3 100644 --- a/documentation/_build/html/Kite/Kite.html +++ b/documentation/_build/html/Kite/Kite.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -538,7 +528,7 @@ mixed-signal conterpart Katana (Kit[e]-Ana[logic]).

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -547,7 +537,7 @@ mixed-signal conterpart Katana (Kit[e]-Ana[logic]).

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Oroshi/Oroshi.html b/documentation/_build/html/Oroshi/Oroshi.html index 6e868c92..f41f6a83 100644 --- a/documentation/_build/html/Oroshi/Oroshi.html +++ b/documentation/_build/html/Oroshi/Oroshi.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -533,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -542,7 +532,7 @@ available here: Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/Configuration.html b/documentation/_build/html/PythonCpp/Configuration.html index 3a0f73e2..31827a53 100644 --- a/documentation/_build/html/PythonCpp/Configuration.html +++ b/documentation/_build/html/PythonCpp/Configuration.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -566,7 +556,7 @@ associated C++ namespace. Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -575,7 +565,7 @@ associated C++ namespace. Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/DBoHierarchy.html b/documentation/_build/html/PythonCpp/DBoHierarchy.html index fcc2f829..6cf9e5d3 100644 --- a/documentation/_build/html/PythonCpp/DBoHierarchy.html +++ b/documentation/_build/html/PythonCpp/DBoHierarchy.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -938,7 +928,7 @@ terminal or not. Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -947,7 +937,7 @@ terminal or not. Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/DBoStandalone.html b/documentation/_build/html/PythonCpp/DBoStandalone.html index cd819245..e30b817e 100644 --- a/documentation/_build/html/PythonCpp/DBoStandalone.html +++ b/documentation/_build/html/PythonCpp/DBoStandalone.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -868,7 +858,7 @@ the module itself. This allow to mimic closely the C++ syntax:

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -877,7 +867,7 @@ the module itself. This allow to mimic closely the C++ syntax:

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/DbU.html b/documentation/_build/html/PythonCpp/DbU.html index 5354172c..9dd4f58a 100644 --- a/documentation/_build/html/PythonCpp/DbU.html +++ b/documentation/_build/html/PythonCpp/DbU.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -582,7 +572,7 @@ the DbU::Unit  Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -591,7 +581,7 @@ the DbU::Unit  Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/Introduction.html b/documentation/_build/html/PythonCpp/Introduction.html index b75cd40f..a5291d67 100644 --- a/documentation/_build/html/PythonCpp/Introduction.html +++ b/documentation/_build/html/PythonCpp/Introduction.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -696,7 +686,7 @@ like in the code below:

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -705,7 +695,7 @@ like in the code below:

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/Name.html b/documentation/_build/html/PythonCpp/Name.html index 9369a1b6..639d6d7f 100644 --- a/documentation/_build/html/PythonCpp/Name.html +++ b/documentation/_build/html/PythonCpp/Name.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -535,7 +525,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -544,7 +534,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/NonDBo.html b/documentation/_build/html/PythonCpp/NonDBo.html index 2a72a3ef..a2ab3505 100644 --- a/documentation/_build/html/PythonCpp/NonDBo.html +++ b/documentation/_build/html/PythonCpp/NonDBo.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -685,7 +675,7 @@ a standalone DBo Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -694,7 +684,7 @@ a standalone DBo Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonCpp/index.html b/documentation/_build/html/PythonCpp/index.html index 82106406..f189eba1 100644 --- a/documentation/_build/html/PythonCpp/index.html +++ b/documentation/_build/html/PythonCpp/index.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -567,7 +557,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -576,7 +566,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/AdvancedTopics.html b/documentation/_build/html/PythonTutorial/AdvancedTopics.html index 85f75646..9697d9f8 100644 --- a/documentation/_build/html/PythonTutorial/AdvancedTopics.html +++ b/documentation/_build/html/PythonTutorial/AdvancedTopics.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -524,7 +514,7 @@ hierarchical levels,

    9.3 HyperNets¶

    -

    This class is part of the virtual flattening mechanisms, it allows to +

    This class is part of the virtual flattening mechanism, it allows to go through all the components of a trans-hierarchical net.

    @@ -554,7 +544,7 @@ go through all the components of a trans-hierarchical net.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -563,7 +553,7 @@ go through all the components of a trans-hierarchical net.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/CellNetComponent.html b/documentation/_build/html/PythonTutorial/CellNetComponent.html index e1d49ee3..aaeb22fd 100644 --- a/documentation/_build/html/PythonTutorial/CellNetComponent.html +++ b/documentation/_build/html/PythonTutorial/CellNetComponent.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -845,7 +835,7 @@ explanation of that part of the code, refer to Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -854,7 +844,7 @@ explanation of that part of the code, refer to Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/CgtScript.html b/documentation/_build/html/PythonTutorial/CgtScript.html index d112035a..be1cdfdb 100644 --- a/documentation/_build/html/PythonTutorial/CgtScript.html +++ b/documentation/_build/html/PythonTutorial/CgtScript.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -515,7 +505,7 @@ But, for debugging purpose it may be helpful to run it through the interactive layout viewer cgt.

    For cgt to be able to run your script, you must add to your script -file a function named ScriptMain(), which takes a dictionnary +file a function named ScriptMain(), which takes a dictionary as sole argument (**kw). The kw dictionary contains, in particular, the CellViewer object we are running under with the keyword editor. You can then load your cell into the viewer @@ -570,7 +560,7 @@ function. To be able to see exactly what has just been mofied, we must close the UpdateSession just before calling the breakpoint and reopen it just after. The Breakpoint.stop() function takes two arguments:

      -
    1. The level above witch it will be active.
    2. +
    3. The level above which it will be active.
    4. An informative message about the purpose of the breakpoint.

    We can create a little function to ease the work:

    @@ -604,7 +594,7 @@ The Breakpoint.stop() Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -613,7 +603,7 @@ The Breakpoint.stop() Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/Collections.html b/documentation/_build/html/PythonTutorial/Collections.html index cffa69f7..521a2226 100644 --- a/documentation/_build/html/PythonTutorial/Collections.html +++ b/documentation/_build/html/PythonTutorial/Collections.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -517,7 +507,7 @@

    In Hurricane all kind of set of objects, whether organized in a real container like a map<> (dictionary / dict) or a vector<> (table / list) or an algorithmic walkthrough of the database can be accessed through a Collection.

    -

    C++ Collections object are exposed in Python through the iterable protocol, +

    C++ Collections objects are exposed in Python through the iterable protocol, allowing to simply write:

    for net in cell.getNets():
       print 'Components of', net
    @@ -573,8 +563,8 @@ requested name.

    Note

    It means that if cells with the same name exist in different libraries, only the one in the first library will be ever used. -Be also weary of cell files that may remain in the WORK_LIB, -they may unexpectedly shadow cells from the libraries.

    +Be also aware that cell files that may remain in the WORK_LIB, +may unexpectedly shadow cells from the libraries.

    @@ -605,7 +595,7 @@ they may unexpectedly shadow cells from the libraries.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -614,7 +604,7 @@ they may unexpectedly shadow cells from the libraries.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/Environment.html b/documentation/_build/html/PythonTutorial/Environment.html index 0cafbae3..d805dd3a 100644 --- a/documentation/_build/html/PythonTutorial/Environment.html +++ b/documentation/_build/html/PythonTutorial/Environment.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -610,7 +600,7 @@ in CGT - The Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -619,7 +609,7 @@ in CGT - The Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/Introduction.html b/documentation/_build/html/PythonTutorial/Introduction.html index cf40c60a..881c726b 100644 --- a/documentation/_build/html/PythonTutorial/Introduction.html +++ b/documentation/_build/html/PythonTutorial/Introduction.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -551,7 +541,7 @@ flagged as external An instance of a model Net -A grouping of electrically connecteds components +A grouping of electrically connected components Plug A terminal of an instance @@ -667,7 +657,7 @@ to be explicitly deleted.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -676,7 +666,7 @@ to be explicitly deleted.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/Netlist.html b/documentation/_build/html/PythonTutorial/Netlist.html index 57b8bb59..81e853fd 100644 --- a/documentation/_build/html/PythonTutorial/Netlist.html +++ b/documentation/_build/html/PythonTutorial/Netlist.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -540,7 +530,7 @@ and the cells it refers to (the master cell

    6.2 Creating Nets and connecting to Instances¶

    -

    An Instance as one Plug for each external net of the master cell. +

    An Instance has one Plug for each external net of the master cell. The plug allows to create a logical connection bewteen a Net of fulladder and a net from an Instance master cell.

    A plug is somewhat equivalent to an instance terminal in other @@ -583,7 +573,7 @@ and make it possible for the

    6.3 Power supplies special case¶

    For supplies, it may be tedious to connect the Plugs of each cell one by one -(and create a lot of uneeded objects). To avoid that, we may use Named +(and create a lot of unneeded objects). To avoid that, we may use Named connections. If a signal in fulladder is set to global, then it will be considered as connected to any signal with the same name and global in the master cell of the instances.

    @@ -893,7 +883,7 @@ directory (under the the root of the Coriolis installati Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -902,7 +892,7 @@ directory (under the the root of the Coriolis installati Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/RealDesigns.html b/documentation/_build/html/PythonTutorial/RealDesigns.html index 92613317..127a7242 100644 --- a/documentation/_build/html/PythonTutorial/RealDesigns.html +++ b/documentation/_build/html/PythonTutorial/RealDesigns.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -571,7 +561,7 @@ the one of the FreePDK45, you must load it prior to calling the Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -580,7 +570,7 @@ the one of the FreePDK45, you must load it prior to calling the Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/ToolEngines.html b/documentation/_build/html/PythonTutorial/ToolEngines.html index bd87ad80..a5281b17 100644 --- a/documentation/_build/html/PythonTutorial/ToolEngines.html +++ b/documentation/_build/html/PythonTutorial/ToolEngines.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -734,7 +724,7 @@ case it is around 3% Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -743,7 +733,7 @@ case it is around 3% Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/definitions.html b/documentation/_build/html/PythonTutorial/definitions.html index e3dc34f8..75b4f30d 100644 --- a/documentation/_build/html/PythonTutorial/definitions.html +++ b/documentation/_build/html/PythonTutorial/definitions.html @@ -83,6 +83,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -103,14 +104,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -389,11 +384,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -517,7 +507,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -526,7 +516,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/index.html b/documentation/_build/html/PythonTutorial/index.html index 1cf485e2..4cf96e9b 100644 --- a/documentation/_build/html/PythonTutorial/index.html +++ b/documentation/_build/html/PythonTutorial/index.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -509,7 +499,7 @@

    Hurricane+Python Tutorial¶

    Printable version of this document PythonTutorial.pdf.

    -

    First, a small disclaimer. This tutorial assume that you are already familiar +

    First, a small disclaimer. This tutorial assumes that you are already familiar with the concepts of vlsi designs, such as netlist, layout, instances and hierarchical design.

    @@ -596,7 +586,7 @@ and hierarchical design.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -605,7 +595,7 @@ and hierarchical design.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/PythonTutorial/pdfHeader.html b/documentation/_build/html/PythonTutorial/pdfHeader.html index 203553bf..80fe80f9 100644 --- a/documentation/_build/html/PythonTutorial/pdfHeader.html +++ b/documentation/_build/html/PythonTutorial/pdfHeader.html @@ -83,6 +83,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -103,14 +104,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -389,11 +384,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -505,7 +495,7 @@

    -First, a small disclaimer. This tutorial assume that you are already familiar +First, a small disclaimer. This tutorial assumes that you are already familiar with the concepts of vlsi designs, such as netlist, layout, instances and hierarchical design.

    @@ -523,7 +513,7 @@ and hierarchical design.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -532,7 +522,7 @@ and hierarchical design.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/RDS/RDSpage.html b/documentation/_build/html/RDS/RDSpage.html index 019f57a3..624bf59a 100644 --- a/documentation/_build/html/RDS/RDSpage.html +++ b/documentation/_build/html/RDS/RDSpage.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -992,7 +982,7 @@ wire width and minimal spacing for the routers. They are patly redundant.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -1001,7 +991,7 @@ wire width and minimal spacing for the routers. They are patly redundant.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/RDS/index.html b/documentation/_build/html/RDS/index.html index 359de469..74127e5c 100644 --- a/documentation/_build/html/RDS/index.html +++ b/documentation/_build/html/RDS/index.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -551,7 +541,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -560,7 +550,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Stratus/Developper.html b/documentation/_build/html/Stratus/Developper.html index 68227772..ea878cdc 100644 --- a/documentation/_build/html/Stratus/Developper.html +++ b/documentation/_build/html/Stratus/Developper.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -802,7 +792,7 @@ by default) Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -811,7 +801,7 @@ by default) Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Stratus/DpGen.html b/documentation/_build/html/Stratus/DpGen.html index e15f6c9c..2327efde 100644 --- a/documentation/_build/html/Stratus/DpGen.html +++ b/documentation/_build/html/Stratus/DpGen.html @@ -35,7 +35,7 @@ - + @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -3794,7 +3784,7 @@ flip-flop -
    -

    First Stage: Technology Selection¶

    -

    -The initialization process is done by executing, in order, the following file(s):

    +
    +

    Configuration & User’s Settings¶

    +

    All configurations files are shipped under the form of Python modules. +They are to be loaded through import statements. The user’s configuration +files must be put in a ./coriolis2/ directory under the working directory. +It must be made a Python module so it must contains a __init__.py file +(kept empty most of the time). And as they are true Python files, you may use +in them any valid code you see fit.

    +

    If no user configuration files are present, Coriolis will use the default +symbolic.cmos technology which matches the Alliance symbolic default one.

    +

    Contents of the user’s configuration directory ./coriolis2/:

    ---++ - - - + + - - - + + - - - + + - - - + + + + +
    OrderMeaningFile
    FileContents/Meaning
    1The system setting/etc/coriolis2/techno.conf
    ./coriolis2/__init__.pyMandatory. Tells Python this directory +is a module. Can be left empty
    2The user’s global setting${HOME}/.coriolis2/techno.py
    ./coriolis2/settings.pyMandatory. The user’s settings, it must +setup the technology intended for use and +perform any configuration variable settings
    3The user’s local setting<CWD>/.coriolis2/techno.py
    ./coriolis2/ioring.pyOptional. Define how the I/O pads are to +be placed on the periphery of the chip along +the chip and core sizes
    ./coriolis2/katana.pyOptional. Hook file for Katana, run +just after the tool has been created for a +Cell. Mostly to setup Nets to be +traced
    -

    Those files must provide only one variable, the name of the technology. Each technology -will provide configuration for both the symbolic part and the real part. Coriolis can -work with purely symbolic technology (symbolic/cmos) in that case, the real technology -part is a dummy one.

    -

    For example, to use mosis 180nm:

    -
    # -*- Mode:Python -*-
    +

    For example, to use mosis 180nm, you can put in your ./coriolis2/setting.py:

    +
    # -*- Mode:Python -*-
     
    -technology = '180/scn6m_deep_09'
    +import node180.scn6m_deep_09
     
    -
    -

    Second Stage: Technology Configuration Loading¶

    -

    -The technology variable is set by the first stage and it’s the name of the -technology. A directory of that name, with all the configuration files, -must exist in the configuration directory (/etc/coriolis2). -In addition to the technology-specific directories, a common/ directory is -there to provide a trunk for all the identical data across the various technologies. -The initialization process is done by executing, in order, the following file(s):

    - ----- - - - - - - - - - - - - - - - - - - - - -
    OrderMeaningFile
    1The system initialization/etc/coriolis2/<technology>/<TOOL>.conf
    2The user’s global initialization${HOME}/.coriolis2/settings.py
    3The user’s local initialization<CWD>/.coriolis2/settings.py
    -
    -

    Note

    -

    The loading policy is not hard-coded. It is implemented -at Python level in /etc/coriolis2/coriolisInit.py, and thus may be easily -amended to whatever site policy.

    -

    The truly mandatory requirement is the existence of coriolisInit.py -which must contain a coriolisConfigure() function with no argument.

    -

    The coriolisInit.py script execution is triggered by the import of -the CRL module:

    -
    import sys
    -import os.path
    +
    +

    A Comprehensive Example of ./coriolis2/setting.py¶

    +
    import os
     import Cfg
    -import Hurricane
    -import CRL        # Triggers execution of "coriolisInit.py".
     import Viewer
    -
    -
    -
    -
    -
    -

    Configuration Helpers¶

    -

    To ease the writing of configuration files, a set of small helpers -is available. They allow to setup the configuration parameters through -simple assembly of tuples. The helpers are installed under the directory:

    -
    <install>/etc/coriolis2/
    -
    -
    -

    Where <install>/ is the root of the installation.

    -
    -

    Alliance Helper¶

    -

    The configuration file must provide an allianceConfig tuple as shown below. -Like all the Coriolis configuration file, it is to be executed through Python, -so we can use it to perform a not so dumb search of the Alliance installation -directory. Our default policy is to try to read the ALLIANCE_TOP environment -variable, and if not found, default to /soc/alliance.

    -
    import os
    -from helpers.Alliance import AddMode
    -from helpers.Alliance import Gauge
    +import CRL
    +import node180.scn6m_deep_09
    +from   helpers       import l, u, n
     
    -allianceTop = None
    +allianceTop = None
     if os.environ.has_key('ALLIANCE_TOP'):
       allianceTop = os.environ['ALLIANCE_TOP']
       if not os.path.isdir(allianceTop):
    -    allianceTop = None
    +    allianceTop = None
     
     if not allianceTop: allianceTop = '/soc/alliance'
     
    -cellsTop = allianceTop+'/cells/'
    +Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.UserFile )
     
    +Viewer.Graphics.setStyle( 'Alliance.Classic [black]' )
     
    -allianceConfig = \
    -    ( ( 'CATALOG'            , 'CATAL')
    -    , ( 'WORKING_LIBRARY'    , '.')
    -    , ( 'SYSTEM_LIBRARY'     , ( (cellsTop+'sxlib'   , AddMode.Append)
    -                               , (cellsTop+'dp_sxlib', AddMode.Append)
    -                               , (cellsTop+'ramlib'  , AddMode.Append)
    -                               , (cellsTop+'romlib'  , AddMode.Append)
    -                               , (cellsTop+'rflib'   , AddMode.Append)
    -                               , (cellsTop+'rf2lib'  , AddMode.Append)
    -                               , (cellsTop+'pxlib'   , AddMode.Append)
    -                               , (cellsTop+'padlib'  , AddMode.Append) ) )
    -    , ( 'IN_LO'              , 'vst')
    -    , ( 'IN_PH'              , 'ap')
    -    , ( 'OUT_LO'             , 'vst')
    -    , ( 'OUT_PH'             , 'ap')
    -    , ( 'POWER'              , 'vdd')
    -    , ( 'GROUND'             , 'vss')
    -    , ( 'CLOCK'              , '.*ck.*|.*nck.*')
    -    , ( 'BLOCKAGE'           , '^blockage[Nn]et*')
    -    , ( 'PAD'                , '.*_px$')
    -    )
    +cellsTop = allianceTop+'/cells'
    +
    +# Alliance related settings.
    +af  = CRL.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=CRL.Environment.Append )
    +env.addSYSTEM_LIBRARY ( library=cellsTop+'/mpxlib', mode=CRL.Environment.Append )
    +
    +# Misc. setting parameters.
    +Cfg.getParamBool      ( 'misc.logMode'                ).setBool      ( False     )
    +Cfg.getParamBool      ( 'misc.verboseLevel1'          ).setBool      ( True      )
    +Cfg.getParamBool      ( 'misc.verboseLevel2'          ).setBool      ( True      )
    +
    +# P&R related parameters.
    +Cfg.getParamString    ( 'anabatic.routingGauge'       ).setString    ( 'msxlib4' )
    +Cfg.getParamString    ( 'anabatic.topRoutingLayer'    ).setString    ( 'METAL4'  )
    +Cfg.getParamInt       ( 'katana.hTracksReservedLocal' ).setInt       ( 6         )
    +Cfg.getParamInt       ( 'katana.vTracksReservedLocal' ).setInt       ( 3         )
    +
    +Cfg.Configuration.popDefaultPriority()
     
    -

    -

    The example above shows the system configuration file, with all the -available settings. Some important remarks about those settings:

    +

    The example above shows the user’s configuration file, with all the +available settings for Alliance and a small subset for other tools. Some remarks +about this file:

      -
    • In its configuration file, the user does not need to redefine all the settings, -just the one he wants to change. In most of the cases, the SYSTEM_LIBRARY, -the WORKING_LIBRARY and the special net names (at this point there is not +

    • The Cfg.Configuration.pushDefaultPriority() and Cfg.Configuration.popDefaultPriority() +statements are there so the value sets by the user will not be overriden by system +ones event if they are setup afterwards. This priority system is introduced so the +various configuration files could be loaded in out of order.

      +
    • +
    • The Viewer.Graphics.setStyle() allows you to choose the look of your liking from +the start.

      +
    • +
    • For Alliance, the user does not need to redefine all the settings, +just the one he wants to change. In most of the cases, the addSYSTEM_LIBRARY(), +the setWORKING_LIBRARY() and the special net names (at this point there is not much alternatives for the others settings).

    • -
    • SYSTEM_LIBRARY setting: Setting up the library search path. -Each library entry in the tuple will be added to the search path according -to the second parameter:

      +
    • addSYSTEM_LIBRARY() adds a directory to the library search path. +Each library entry will be added to the search path according to the second parameter:

        -
      • AddMode::Append: append to the search path.
      • -
      • AddMode::Prepend: insert in head of the search path.
      • -
      • AddMode::Replace: look for a library of the same name and replace +
      • CRL.Environment::Append: append to the search path.
      • +
      • CRL.Environment::Prepend: insert in head of the search path.
      • +
      • CRL.Environment::Replace: look for a library of the same name and replace it, whithout changing the search path order. If no library of that name already exists, it is appended.
      @@ -720,135 +663,45 @@ Implementing the Alliance specification, when looking fo the system will browse sequentially through the library list and returns the first Cell whose name match.

    • -
    • For POWER, GROUND, CLOCK and BLOCKAGE net names, a regular -expression (gnu regexp) is expected.

      +
    • For setPOWER(), setGROUND(), setCLOCK() and setBLOCKAGE() net names, +a regular expression (gnu regexp) is expected.

      +
    • +
    • For other tools parameters, just use getter and setter according to their types:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeGetter/Setter
      BoolCgt.getParamBool('name').setBool( True )
      IntCgt.getParamInt('name').setBool( 12 )
      EnumerateCgt.getParamEnumerate('name').setBool( 12 )
      DoubleCgt.getParamDouble('name').setDouble( 254.5 )
      PercentageCgt.getParamPercentage('name').setPercentage( 75.0 )
      StringCgt.getParamString('name').setString( 'machin' )
      +

      Lists of the configurable parameters of most interest to the user are given in +Viewer & Tools.

    -

    A typical user’s configuration file would be:

    -
    import os
    -
    -homeDir = os.getenv('HOME')
    -
    -allianceConfig = \
    -    ( ('WORKING_LIBRARY'    , homeDir+'/worklib')
    -    , ('SYSTEM_LIBRARY'     , ( (homeDir+'/mylib', Environment.Append) ) )
    -    , ('POWER'              , 'vdd.*')
    -    , ('GROUND'             , 'vss.*')
    -    )
    -
    -
    -
    -
    -

    Tools Configuration Helpers¶

    -

    All the tools use the same helper to load their configuration (a.k.a. -Configuration Helper). Currently the following configuration system-wide -configuration files are defined:

    -
      -
    • misc.conf: common settings or not belonging specifically to a tool.
    • -
    • etesian.conf: for the Etesian tool.
    • -
    • kite.conf: for the Kite tool.
    • -
    • stratus1.conf: for the Stratus1 tool.
    • -
    -

    -

    Here is the contents of etesian.conf:

    -
    # Etesian parameters.
    -parametersTable = \
    -    ( ('etesian.aspectRatio'    , TypePercentage, 100    , { 'min':10, 'max':1000 } )
    -    , ('etesian.spaceMargin'    , TypePercentage, 5      )
    -    , ('etesian.uniformDensity' , TypeBool      , False  )
    -    , ('etesian.routingDriven'  , TypeBool      , False  )
    -    , ("etesian.effort"         , TypeEnumerate , 2
    -      , { 'values':( ("Fast"    , 1)
    -                   , ("Standard", 2)
    -                   , ("High"    , 3)
    -                   , ("Extreme" , 4) ) }
    -      )
    -    , ("etesian.graphics"       , TypeEnumerate , 2
    -      , { 'values':( ("Show every step"  , 1)
    -                   , ("Show lower bound" , 2)
    -                   , ("Show result only" , 3) ) }
    -      )
    -    )
    -
    -layoutTable = \
    -    ( (TypeTab   , 'Etesian', 'etesian')
    -
    -    , (TypeTitle , 'Placement area')
    -    , (TypeOption, "etesian.aspectRatio"   , "Aspect Ratio, X/Y (%)", 0 )
    -    , (TypeOption, "etesian.spaceMargin"   , "Space Margin"         , 1 )
    -    , (TypeRule  ,)
    -    , (TypeTitle , 'Etesian - Placer')
    -    , (TypeOption, "etesian.uniformDensity", "Uniform density"      , 0 )
    -    , (TypeOption, "etesian.routingDriven" , "Routing driven"       , 0 )
    -    , (TypeOption, "etesian.effort"        , "Placement effort"     , 1 )
    -    , (TypeOption, "etesian.graphics"      , "Placement view"       , 1 )
    -    , (TypeRule  ,)
    -    )
    -
    -
    -

    Taxonomy of the file:

    -
      -
    • It must contain, at least, the two tables:
        -
      • parametersTable, defines & initialises the configuration variables.
      • -
      • layoutTables, defines how the various parameters will be displayed -in the configuration window (The Settings Tab).
      • -
      -
    • -
    • The parametersTable, is a tuple (list) of tuples. Each entry in the list -describes a configuration parameter. In its simplest form, it’s a quadruplet -(TypeOption, ‘paramId’, ParameterType, DefaultValue) with:
        -
      1. TypeOption, tells that this tuple describes a parameter.
      2. -
      3. paramId, the identifier of the parameter. Identifiers are defined -by the tools. The list of parameters is detailed in each tool section.
      4. -
      5. ParameterType, the kind of parameter. Could be:
          -
        • TypeBool, boolean.
        • -
        • TypeInt, signed integer.
        • -
        • TypeEnumerate, enumerated type, needs extra entry.
        • -
        • TypePercentage, percentage, expressed between 0 and 100.
        • -
        • TypeDouble, float.
        • -
        • TypeString, character string.
        • -
        -
      6. -
      7. DefaultValue, the default value for that parameter.
      8. -
      -
    • -
    -
    -
    -
    -

    Hacking the Configuration Files¶

    -

    Aside from the symbols that get used by the configuration helpers like -allianceConfig or parametersTable, you can put pretty much anything -in <CWD>/.coriolis2/settings.py (that is, written in Python).

    -

    For example:

    -
    # -*- Mode:Python -*-
    -
    -defaultStyle = 'Alliance.Classic [black]'
    -
    -# Regular Coriolis configuration.
    -parametersTable = \
    -    ( ('misc.catchCore'           , TypeBool      , False  )
    -    , ('misc.info'                , TypeBool      , False  )
    -    , ('misc.paranoid'            , TypeBool      , False  )
    -    , ('misc.bug'                 , TypeBool      , False  )
    -    , ('misc.logMode'             , TypeBool      , True   )
    -    , ('misc.verboseLevel1'       , TypeBool      , False  )
    -    , ('misc.verboseLevel2'       , TypeBool      , True   )
    -    , ('misc.minTraceLevel'       , TypeInt       , 0      )
    -    , ('misc.maxTraceLevel'       , TypeInt       , 0      )
    -    )
    -
    -# Some ordinary Python script...
    -import os
    -
    -print '       o  Cleaning up ClockTree previous run.'
    -for fileName in os.listdir('.'):
    -  if fileName.endswith('.ap') or (fileName.find('_clocked.') >= 0):
    -    print '          - <%s>' % fileName
    -    os.unlink(fileName)
    -
    -
    -

    See Python Interface to Coriolis for more details those capabilities.

    @@ -873,7 +726,7 @@ in <CWD>/.coriolis2/settings.py (that is, written Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -882,7 +735,7 @@ in <CWD>/.coriolis2/settings.py (that is, written Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/UsersGuide/DesignFlow.html b/documentation/_build/html/UsersGuide/DesignFlow.html index 6808d04e..81208ab1 100644 --- a/documentation/_build/html/UsersGuide/DesignFlow.html +++ b/documentation/_build/html/UsersGuide/DesignFlow.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -549,7 +539,7 @@ examples are supplied in the repository Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -558,7 +548,7 @@ examples are supplied in the repository Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/UsersGuide/Installation.html b/documentation/_build/html/UsersGuide/Installation.html index 08afd81c..1f36639f 100644 --- a/documentation/_build/html/UsersGuide/Installation.html +++ b/documentation/_build/html/UsersGuide/Installation.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -516,7 +506,7 @@

    As the sources are being released, the binary packaging is dropped. You may still find (very) old versions here: http://asim.lip6.fr/pub/coriolis/2.0 .

    -

    In a nutshell, building source consistis in pulling the git repository then +

    In a nutshell, building source consists in pulling the git repository then running the ccb installer.

    Note

    @@ -546,7 +536,7 @@ If you really want to re-generate it, add the latex
  • python-docutils (for reStructuredText)
  • -

    The following libraries gets directly bundled with Coriolis:

    +

    The following libraries get directly bundled with Coriolis:

    • LEF/DEF (from SI2)
    • FLUTE (from Chris C. N. Chu)
    • @@ -557,7 +547,7 @@ If you really want to re-generate it, add the In order to simplify the work of the ccb installer, the source, build and installation tree is fixed. To successfully compile Coriolis you must follow it exactly. The tree is relative to the home directory of the user -building it (noted ~/ or $HOME/). Only the source +building it (note ~/ or $HOME/). Only the source directory needs to be manually created by the user, all others will be automatically created either by ccb or the build system.

      @@ -641,7 +631,7 @@ automatically created either by ccb or the build system.

      Alternate build types: the Release.Shared means an optimized build with shared libraries. But there are also available Static instead of Shared and Debug instead of Release and any combination of them.

      -

      Static do not work because I don’t know yet to mix statically linked binaries +

      Static does not work because I don’t know yet to mix statically linked binaries and Python modules (which must be dynamic).

      @@ -667,14 +657,14 @@ one minor, they provides qt 5.9 were we need at least

      Note

      Under rhel 7 or clones, they upgraded their version of qt 4 (from 4.6 to 4.8) -so the diagonal line bug no longer occur. So we can safely use the default +so the diagonal line bug no longer occurs. So we can safely use the default system qt again.

      Installing on RedHat or compatible distributions¶

        -
      1. Install or check that the required prerequisites are installeds :

        +
      2. Install or check that the required prerequisites are installed :

        dummy@lepka:~> yum install -y git cmake bison flex gcc-c++ libstdc++-devel  \
                                       binutils-devel                                \
                                       boost-devel boost-python boost-filesystem     \
        @@ -683,7 +673,7 @@ system qt again.

        qt-devel qwt-devel # Qt 4
        -

        Note, that the Qwt packages are directly availables from the standart distribution +

        Note, that the Qwt packages are directly available from the standart distribution when using qt 4.

      3. Install the unpackaged prerequisites. Currently, only RapidJSON.

        @@ -702,7 +692,7 @@ when using qt 4.

      4. Build & install:

        dummy@lepka:src> cd coriolis
        -dummy@lepka:coriolis> git checkout devel_anabatic
        +dummy@lepka:coriolis> git checkout devel
         dummy@lepka:coriolis> ./bootstrap/ccb.py --project=support  \
                                                  --project=coriolis \
                                                  --make="-j4 install"
        @@ -729,7 +719,7 @@ be given as argument:

        --devtoolset=8 --make="-j4 install"
        -

        If you want to uses Qt 5 instead of Qt 4 modify the previous steps as follow:

        +

        If you want to use Qt 5 instead of Qt 4, modify the previous steps as follows:

        • At step 1, do not install the qt 4 related development package (qt4-devel), but instead:

          @@ -747,7 +737,7 @@ Then run:

        • At step 4, add a --qt5 argument to the ccb.py command line.

        • -
        • The Python scripts that makes uses of PyQt in crlcore and cumulus must be +

        • The Python scripts that make use of PyQt in crlcore and cumulus must be edited to import PyQt5 instead of PtQt4 (should find a way to automatically switch between the two of them).

        • @@ -757,10 +747,10 @@ It also may be run in graphical mode (

          Building a Debug Enabled Version¶

          -

          The Release.Shared default version of the Coriolis is build stripped of symbols +

          The Release.Shared default version of the Coriolis is built stripped of symbols and optimized so that it makes analysing a core dump after a crash difficult. In the (unlikely) case of a crash, you may want to build, alongside the optimized version, -a debug one which allow forensic examination by gdb (or valgrind or whatever).

          +a debug one which allows forensic examination by gdb (or valgrind or whatever).

          Run again ccb.py, adding the --debug argument:

          dummy@lepka:coriolis> ./bootstrap/ccb.py --project=support  \
                                                    --project=coriolis \
          @@ -775,7 +765,7 @@ a debug one which allow forensic examination by gdb (or
           

          Installing on Debian 9, Ubuntu 18 or compatible distributions¶

          -

          First, install or check that the required prerequisites are installeds :

          +

          First, install or check that the required prerequisites are installed :

          dummy@lepka:~> sudo apt install -y build-essential binutils-dev                     \
                                              git cmake bison flex gcc python-dev              \
                                              libboost-all-dev libboost-python-dev             \
          @@ -794,7 +784,7 @@ a debug one which allow forensic examination by gdb (or
           

          Third and final step, build & install:

          dummy@lepka:src> cd coriolis
          -dummy@lepka:coriolis> git checkout devel_anabatic
          +dummy@lepka:coriolis> git checkout devel
           dummy@lepka:coriolis> ./bootstrap/ccb.py --project=coriolis \
                                                    --make="-j4 install"
           
          @@ -802,7 +792,7 @@ a debug one which allow forensic examination by gdb (or

          Additionnal Requirement under MacOS¶

          -

          Coriolis make uses of the boost::python module, but the MacPorts boost +

          Coriolis makes use of the boost::python module, but the MacPorts boost seems unable to work with the Python bundled with MacOS. So you have to install both of them from MacPorts:

          dummy@macos:~> port install boost +python27
          @@ -833,7 +823,7 @@ packaging, you must configure it so that it can found those libraries.

          The easiest way is to setup the Alliance environment (i.e. sourcing .../etc/profile.d/alc_env.{sh,csh}) before setting up Coriolis environment (see the next section). To understand how Coriolis find/setup Alliance you may -have look to the Alliance Helper.

          +have look to the Configuration and User’s Settings section.

          Setting up the Environment (coriolisEnv.py)¶

          @@ -882,7 +872,7 @@ infinite loop if it’s called again in, say ~/.bashrc
      @@ -891,7 +881,7 @@ infinite loop if it’s called again in, say ~/.bashrc
      Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019.
      Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université.
      diff --git a/documentation/_build/html/UsersGuide/LicenseCredits.html b/documentation/_build/html/UsersGuide/LicenseCredits.html index 80e98462..aa4739f3 100644 --- a/documentation/_build/html/UsersGuide/LicenseCredits.html +++ b/documentation/_build/html/UsersGuide/LicenseCredits.html @@ -86,6 +86,7 @@
    • Release v2.1
    • Release v2.2
    • Release v2.3
    • +
    • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -560,7 +550,7 @@ copyright© Chris C. N. Chu from the Iowa State Universi Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -569,7 +559,7 @@ copyright© Chris C. N. Chu from the Iowa State Universi Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/UsersGuide/Releases.html b/documentation/_build/html/UsersGuide/Releases.html index 81fc8bde..a9126775 100644 --- a/documentation/_build/html/UsersGuide/Releases.html +++ b/documentation/_build/html/UsersGuide/Releases.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -560,7 +550,7 @@ for the Cell viewer and CRLcore has been added.
  • More extensive Python support for all the components of Coriolis.
  • Configuration is now completly migrated under Python. -xml loaders can still be useds for compatibilty.
  • +xml loaders can still be used for compatibilty.
  • The cgt main has been rewritten in Python.
  • @@ -597,25 +587,40 @@ whole design down and including the standard cells.

    Release v2.3¶

      -
    1. Revert to a more standard organisation of the branchs. devel_anabatic is +

    2. Reverts to a more standard organisation of the branches. devel_anabatic is closed and we go on with master (stable version) and devel.

    3. -
    4. Make Katana the default global & detailed router. Put Knik & Kite in the -obsolete menues.

      +
    5. Makes Katana the default global & detailed router. Put Knik & Kite in the +obsolete menus.

    6. -
    7. Finally make uses of PyQt4 widgets. Seems to integrate without problems +

    8. Finally makes use of PyQt4 widgets. Seems to integrate without problems with the Coriolis own qt widget. The drawback is that to build against qt 5 -needs to adjustement from the user.

      +needs adjustement from the user.

    9. Improved support for whole chip management. The outer part of the chip containing -the pad is decoupled from the core. This allow to cleanly separate real pads from +the pad is decoupled from the core. This allows to cleanly separate real pads from the foundry from a symbolic core. But this does not preclude other combinations as fully symbolic or fully real.

      -

      To perform the separation an intermediate hierarchical level corona between chip +

      To perform the separation, an intermediate hierarchical level corona between chip and core has been introduced.

    +
    +

    Release v2.4¶

    +
      +
    1. Complete rewrite of the initialisation system. No longer use “configuration like” +files with various list of items. Now the configuration is supplied under the +from of Python modules to be imported as the user see fit.
    2. +
    3. Clean separation between nda protected parts and free ones. Now all the nda +related components are put under one separated tree, whether they are configuration +files or Python plugins, so that they be can easily by exported.
    4. +
    5. In Anabatic & Katana better accuracy at how obstacles decrease the edges +capacities of the GCells. Reduce the edge capacity of a GCell according to it’s +inner cluttering (that is, it’s number of terminals). Change of semantics +for katana.hReservedLocal and katana.vReservedLocal parameters.
    6. +
    +
    @@ -639,7 +644,7 @@ and core has been introduced.

    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -648,7 +653,7 @@ and core has been introduced.

    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/UsersGuide/ScriptsPlugins.html b/documentation/_build/html/UsersGuide/ScriptsPlugins.html index ba76677d..d4697f21 100644 --- a/documentation/_build/html/UsersGuide/ScriptsPlugins.html +++ b/documentation/_build/html/UsersGuide/ScriptsPlugins.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -513,7 +503,7 @@

    Python Interface for Hurricane / Coriolis¶

    The (almost) complete interface of Hurricane is exported as a Python module -and some part of the other components of Coriolis (each one in a separate +and some parts of the other components of Coriolis (each one in a separate module). The interface has been made to mirror as closely as possible the C++ one, so the C++ doxygen documentation could be used to write code with either languages.

    @@ -521,10 +511,11 @@ either languages.

    A script could be run directly in text mode from the command line or through the graphical interface (see Executing Python Scripts in Cgt).

    Aside for this requirement, the python script can contain anything valid -in Python, so don’t hesitate to use any package or extention.

    +in Python, so don’t hesitate to use any package or extension.

    Small example of Python/Stratus script:

    -
    from Hurricane import *
    -from Stratus   import *
    +
    import symbolic.cmos
    +from   Hurricane import *
    +from   Stratus   import *
     
     def doSomething ():
         # ...
    @@ -556,11 +547,15 @@ in Python, so don’t hesitate to use any package or
     

    part (this is standart Python). It is a simple adapter that will -calls ScriptMain().

    +call ScriptMain().

    +

    In this case, the import symbolic.cmos statement at the begining +is mandatory.

  • Through cgt, either in text or graphical mode. In that case, the ScriptMain() is directly called trough a sub-interpreter. The arguments of the script are passed through the **kw dictionnary.

    +

    In this case, the import symbolic.cmos statement at the begining +may be omitted.

    @@ -577,7 +572,7 @@ The arguments of the script are passed through the @@ -596,33 +591,31 @@ Their entry point is a ScriptMain() method as described through this method.

    Chip Placement¶

    -

    Automatically perform the placement of a complete chip. This plugin, as well +

    Automatically performs the placement of a complete chip. This plugin, as well as the other P&R tools expect a specific top-level hierarchy for the design. -The top-level hierarchy must contains the instances of all the I/O pads and +The top-level hierarchy must contain the instances of all the I/O pads and exactly one instance named corona of an eponym cell corona. -The corona cell in turn containing the instance of the chip’s core model.

    +The corona cell in turn contains the instance of the chip’s core model.

    The intermediate corona hierarchical level has been introduced to handle -the possible discoupling between real I/O pads supplied by a foundry and a +the possible decoupling between real I/O pads supplied by a foundry and a symbolic core. So the chip level contains only real layout and the corona and below only symbolic layer.

    Note

    -

    This do not prevent having a design either fully symbolic (pads and core) +

    This does not prevent having a design either fully symbolic (pads and core) or fully real.

    Note

    -

    The corona also avoid the router to actually have to manage directly -the pads which simplificate it’s configuration and accessorily avoid +

    The corona also avoids the router to actually have to manage directly +the pads which simplify its configuration and besides avoid to have the pads stuffed with blockages.

    Chip Top Structure

    The designer must provide a configuration file that defines the rules for the placement of the top-level hierarchy (that is, the pads and the core). -This file must be named after the chip’s name, by appending _ioring.py -(obviously, it is a Python file). For instance if the chip netlist file -is called amd2901.vst, then the configuration file must be named -amd2901_ioring.vst.

    +This file must be names ioring.py and put into the user’s configuration +directory ./coriolis2/

    Example of chip placement configuration file (for AM2901):

    from helpers import l, u, n
     
    @@ -662,30 +655,30 @@ is called amd2901.vst
     
    - - - - - @@ -711,35 +704,35 @@ the ClockTree plugin - + - + - + - + - + - + - +

    Note

    If no clock tree is generated, then the clock rail is not created. So even if the requested number of rails chip.block.rails.count is, say 5, -only four rails (2* power, 2* ground) will be generateds.

    +only four rails (2* power, 2* ground) will be generated.

    @@ -780,7 +773,7 @@ on which quarter of plane the sub-clock is located:

    The clock tree plugin works in four steps:

      -
    1. Builds the clock tree: creates the top-block abutment box, compute the +
    2. Builds the clock tree: creates the top-block abutment box, computes the required levels of H tree and places the clock buffers.
    3. Once the clock buffers are placed, calls the placer (Etesian) to place the ordinary standard cells, whithout disturbing clock H-tree buffers.
    4. @@ -794,7 +787,7 @@ connect them to the nearest H-tree leaf clock signal. contain all the clock sub-nets. The interface is not changed.
    5. If the top block contains instances of other models and those models contain DFFs that get re-connected to the clock sub-nets (from the -top level). Changes both the model netlist and interface to propagate +top level): Changes both the model netlist and interface to propagate the relevant clock sub-nets to the instanciated model. The new model with the added clock signal is renamed with a _cts suffix. For example, the sub-block model ram.vst will become ram_cts.vst.
    6. @@ -823,14 +816,14 @@ memory cache.

    - + - + @@ -851,7 +844,7 @@ by the clock tree plugin after the netlist clock sub-nets creation.

    example, derived from the Alliance AM2901 is supplied.

    This example contains only the synthetized netlists and the doChip.py script which perform the whole P&R of the design.

    -

    You can generate the chip using one of the following method:

    +

    You can generate the chip using one of the following methods:

    1. Command line mode: directly run the script:

      dummy@lepka:AM2901> ./doChip -V --cell=amd2901
      @@ -864,7 +857,7 @@ then run the Python script doChip.py
       

      Note

      -

      Between two consecutive run, be sure to erase the netlist/layout generateds:

      +

      Between two consecutive run, be sure to erase the netlist/layout generated:

      dummy@lepka:AM2901> rm *_cts*.vst *.ap
       
      @@ -893,7 +886,7 @@ then run the Python script doChip.py
    @@ -902,7 +895,7 @@ then run the Python script doChip.py
    'cell' A Hurricane cell on which to work. Depending on the context, it may be None. -For example, when run from cgt, it the cell +For example, when run from cgt, the cell currently loaded in the viewer, if any.
    'editor'
    'pad.ioPadGauge' The routing gauge to use for the pad. Must be given -as it differs from the one used to route standard +as it differs from the one used to route inside the core
    'pad.south'Ordered list (left to right) of pad instances names +Ordered list (left to right) of pad instance names to put on the south side of the chip
    'pad.east'Ordered list (down to up) of pad instances names +Ordered list (down to up) of pad instance names to put on the east side of the chip
    'pad.north'Ordered list (left to right) of pad instances names +Ordered list (left to right) of pad instance names to put on the north side of the chip
    'pad.west'Ordered list (down to up) of pad instances names +Ordered list (down to up) of pad instance names to put on the west side of the chip
    'core.size' The size of the core (to be used by the placer)
    'chip.size'The size of the whole chip. The sides must be great +The size of the whole chip. The sides must be large enough to accomodate all the pads
    'chip.clockTree'
    Chip Plugin Parameters
    chip.block.rails.countTypeIntInt 5
    The minimum number of rails around the core -block. Must be odd and suppérior to 5. +block. Must be odd and above 5. One rail for the clock and at least two pairs of power/grounds
    chip.block.rails.hWidthTypeIntInt 12 λ
    The horizontal with of the rails
    The horizontal width of the rails
    chip.block.rails.vWidthTypeIntInt 12 λ
    The vertical with of the rails
    The vertical width of the rails
    chip.block.rails.hSpacingTypeIntInt 6 λ
    The spacing, edge to edge of two adjacent horizontal rails
    chip.block.rails.vSpacingTypeIntInt 6 λ
    The spacing, edge to edge of two adjacent @@ -751,7 +744,7 @@ vertical rails
    ClockTree Plugin Parameters
    clockTree.minimumSideTypeIntInt 300 λ
    The minimum size below which the clock tree will stop to perform quadri-partitions
    clockTree.bufferTypeStringString buf_x2
    The buffer model to use to drive sub-nets Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019.
    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université.
    diff --git a/documentation/_build/html/UsersGuide/ViewerTools.html b/documentation/_build/html/UsersGuide/ViewerTools.html index 28d28004..1c3fb691 100644 --- a/documentation/_build/html/UsersGuide/ViewerTools.html +++ b/documentation/_build/html/UsersGuide/ViewerTools.html @@ -86,6 +86,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -106,14 +107,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -392,11 +387,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -515,9 +505,9 @@

    Printing & Snapshots¶

    -

    Printing or saving into a pdf is fairly simple, just uses the File -> Print +

    Printing or saving into a pdf is fairly simple, just use the File -> Print menu or the CTRL+P shortcut to open the dialog box.

    The print functionality uses exactly the same rendering mechanism as for the screen, beeing almost WYSIWYG. Thus, to obtain the best results it is advisable to select the Coriolis.Printer look (in the Controller), which uses a -white background and much suited for high resolutions 32x32 pixels patterns

    -

    There is also two mode of printing selectable through the Controller +white background and well suited for high resolutions 32x32 pixels patterns

    +

    There is also two modes of printing selectable through the Controller Settings -> Misc -> Printer/Snapshot Mode:

    @@ -972,11 +970,11 @@ Saving into an image is subject to the same remarks as for pdf< Right - + - + @@ -1063,23 +1061,23 @@ anti-aliasing mechanism. given without path or extention. - - - + - @@ -1100,10 +1098,10 @@ in which this model is instanciated). - + - @@ -1117,17 +1115,17 @@ leading path or extention. +designs you may want to increase this limit. - + - + - + - - + - - + - - + - + - + @@ -1206,21 +1204,21 @@ sequences - + - + - - + - @@ -1238,10 +1236,10 @@ rubbers and the dimension units.
  • The Layers&Go Tab to selectively hide/display layers.
  • The Netlist Tab to browse through the netlist. Works in association with the Selection tab.
  • -
  • The Selection Tab allow to view all the currently selected elements.
  • -
  • The Inspector Tab browse through either the DataBase, the Cell or +
  • The Selection Tab allows to view all the currently selected elements.
  • +
  • The Inspector Tab browses through either the DataBase, the Cell or the current selection.
  • -
  • The Settings Tab access all the tool’s configuration settings.
  • +
  • The Settings Tab accesses all the tool’s configuration settings.
  • The Look Tab¶

    @@ -1254,11 +1252,11 @@ You should select it prior to calling the print or snapshot dialog boxes.

    The Filter Tab¶

    The filter tab let you select what hierarchical levels of your design will be -displayed. Hierarchy level are numbered top-down: the level 0 correspond to +displayed. Hierarchy level are numbered top-down: the level 0 corresponds to the top-level cell, the level one to the instances of the top-level Cell and so on.

    There are also check boxes to enable/disable the processing of Terminal Cell, -Master Cells and Compnents. The processing of Terminal Cell (hierarchy leaf +Master Cells and Components. The processing of Terminal Cell (hierarchy leaf cells) is disabled by default when you load a hierarchical design and enabled when you load a single Cell.

    You can choose what kind of form to give to the rubbers and the type of @@ -1269,8 +1267,8 @@ unit used to display coordinates.

    physical gaps in net topology. That is, if some wires are missing to connect two or more parts of net, a rubber will be drawn between them to signal the gap.

    -

    For example, after the detailed routing no rubbers should remains. -They have been made very visibles as big violet lines...

    +

    For example, after the detailed routing no rubber should remain. +They have been made very visible as big violet lines...

    Controller Basic Snapshot

    @@ -1279,7 +1277,7 @@ They have been made very visibles as big violet lines...

    The Layers&Go Tab¶

    Control the individual display of all layers and Gos.

      -
    • Layers correspond to a true physical layer. From a Hurricane point of +
    • Layers correspond to true physical layers. From a Hurricane point of view they are all the BasicLayers (could be matched to GDSII).
    • Gos stands from Graphical Objects, they are drawings that have no physical existence but are added by the various tools to display extra @@ -1299,16 +1297,16 @@ to easily locate congested areas.
    • synched with the displayed Cell. To see the nets you must check the Sync Netlist checkbox. You can narrow the set of displayed nets by using the filter pattern (supports regular expressions).

      -

      An very useful feature is to enable the Sync Selection, which will +

      A very useful feature is to enable the Sync Selection, which will automatically select all the components of the selected net(s). You can select multiple nets. In the figure the net auxsc35 is selected and -is highlited in the Viewer.

      +is highlighted in the Viewer.

      Controller Basic Snapshot Controller Basic Snapshot

    The Selection Tab¶

    -

    The Selection tab list all the components currently selecteds. They +

    The Selection tab lists all the components currently selected. They can be filtered thanks to the filter pattern.

    Used in conjunction with the Netlist Sync Selection you will all see all the components part of net.

    @@ -1322,14 +1320,14 @@ the t key...

    The Inspector Tab¶

    This tab is very useful, but mostly for Coriolis developpers. It allows -to browse through the live DataBase. The Inspector provide three entry points:

    +to browse through the live DataBase. The Inspector provides three entry points:

    • DataBase: Starts from the whole Hurricane DataBase.
    • -
    • Cell: Inspect the currently loaded Cell.
    • -
    • Selection: Inspect the object currently highlited in the Selection tab.
    • +
    • Cell: Inspects the currently loaded Cell.
    • +
    • Selection: Inspects the object currently highlighted in the Selection tab.

    Once an entry point has been activated, you may recursively expore all -it’s fields using the right/left arrows.

    +its fields using the right/left arrows.

    Note

    Do not put your fingers in the socket: when inspecting @@ -1374,7 +1372,7 @@ is deleted, you will crash the application...

    @@ -1383,7 +1381,7 @@ is deleted, you will crash the application...

    Shift the view in the according directionShifts the view in the according direction
    Fit fFit to the Cell abutment boxFits to the Cell abutment box
    Refresh CTRL+L
    CTRL+WClose the current viewer window, but do not quit +Closes the current viewer window, but does not quit the application.
    CTRL+QCTRL+Q quit the application +CTRL+Q quits the application (closing all windows).
    Hierarchy CTRL+DownGo one hierarchy level down. That is, if there -is an instance under the cursor position, load -it’s model Cell in place of the current one.Goes one hierarchy level down. That is, if there +is an instance under the cursor position, loads +its model Cell in place of the current one.
    CTRL+UpGo one hierarchy level up. if we have entered +Goes one hierarchy level up. If we have entered the current model through CTRL+Down -reload the previous model (the one +reloads the previous model (the one in which this model is instanciated).
    -t|–textInstruct cgt to run in text mode.Instructs cgt to run in text mode.
    -L|–log-modeDisable the uses of ansi escape sequence on +Disables the use of ansi escape sequence on the tty. Useful when the output is redirected to a file.
    –events-limit=<count> The maximal number of events after which the -router will stops. This is mainly a failsafe -against looping. The limit is sets to 4 +router will stop. This is mainly a failsafe +against looping. The limit is set to 4 millions of iteration which should suffice to any design of 100K. gates. For bigger -designs you may wants to increase this limit.
    -G|–global-routeRun the global router (Katana).Runs the global router (Katana).
    -R|–detailed-routeRun the detailed router (Katana).Runs the detailed router (Katana).
    -s|–save-design=<routed> The design into which the routed layout will @@ -1169,36 +1167,36 @@ See Python Scripts i
    Verbosity/Log Parameters
    misc.infoTypeBoolBool False
    Enable display of info level message +
    Enables display of info level message (cinfo stream)
    misc.bugTypeBoolBool False
    Enable display of bug level message +
    Enables display of bug level message (cbug stream), messages can be a little scarry
    misc.logModeTypeBoolBool False
    If enabled, assume that the output device -is not a tty and suppress any escaped +
    If enabled, assumes that the output device +is not a tty and suppresses any escape sequences
    misc.verboseLevel1TypeBoolBool True
    First level of verbosity, disable level 2
    First level of verbosity, disables level 2
    misc.verboseLevel2TypeBoolBool False
    Second level of verbosity
    Development/Debug Parameters
    misc.minTraceLevelTypeIntInt 0
    misc.maxTraceLevelTypeIntInt 0
    Display trace information between those two +
    Displays trace information between those two levels (cdebug stream)
    misc.catchCoreTypeBoolBool False
    By default, cgt do not dump core. +
    By default, cgt does not dump core. To generate one set this flag to True
    Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019.
    Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université.
    diff --git a/documentation/_build/html/UsersGuide/index.html b/documentation/_build/html/UsersGuide/index.html index 6f14d69f..be2da1d0 100644 --- a/documentation/_build/html/UsersGuide/index.html +++ b/documentation/_build/html/UsersGuide/index.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -520,6 +510,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -533,10 +524,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -574,7 +563,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -583,7 +572,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/Viewer/Viewer.html b/documentation/_build/html/Viewer/Viewer.html index aa5a6ec4..3e3527c7 100644 --- a/documentation/_build/html/Viewer/Viewer.html +++ b/documentation/_build/html/Viewer/Viewer.html @@ -85,6 +85,7 @@
    • Release v2.1
    • Release v2.2
    • Release v2.3
    • +
    • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -533,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -542,7 +532,7 @@ available here: Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/_sources/ConfigurationTechnology/Architecture.txt b/documentation/_build/html/_sources/ConfigurationTechnology/Architecture.txt deleted file mode 100644 index a273dc68..00000000 --- a/documentation/_build/html/_sources/ConfigurationTechnology/Architecture.txt +++ /dev/null @@ -1,69 +0,0 @@ -.. -*- Mode: rst -*- - -.. include:: ../etc/definitions.rst - - -1. Configuration File Workings -============================== - -|Coriolis| do not have any dedicated file format for it's configuration files. -Instead, configuration files are |Python| scripts that are expected to provides -a set of variables with specific contents. For example, ``.coriolis2/techno.py`` -must provide a ``technology`` variable and optionaly a ``NdaDirectory`` variable. -So, it's simplest form is: - -.. code-block:: python - - technology = '45/freepdk_45' - - -A more complex case could be: - -.. code-block:: python - - Ndadirectory = '/home/crypted' - technology = '45/freepdk_45' - - -And lastly, taking full advantage of the |Python| langage: - -.. code-block:: python - - import os.path - import socket - - hostname = socket.gethostname() - if hostname.startswith('local-computer'): - NdaDirectory = '/home/crypted' - if not os.path.isdir(NdaDirectory): - print '[ERROR] You forgot to mount the NDA encrypted directory, stupid!' - else: - NdaDirectory = '/network/techno/' - - technology = '45/freepdk_45' - -In this script, we choose the value of ``NdaDirectory`` according the computer's -hostname and when using the local filesystem we check if the directory exist. - -A second kind of example is ``.coriolis2/settings.py``. It must provides a -variable ``parametersTable`` which is tuple of variable settings. Each element -of the tuple is itself a tuple of three elements ``(variable_name, type, value)`` - -.. code-block:: python - - parametersTable = \ - ( ('misc.catchCore' , TypeBool, False ) - , ('misc.logMode' , TypeBool, False ) - , ('misc.verboseLevel1', TypeBool, True ) - , ('misc.verboseLevel2', TypeBool, True ) - ) - - -2. Directory Tree Structure -=========================== - -Depending if |Coriolis| is installed in the system or in a separate tree, -the configuration can be rooted in : :: - - /etc/coriolis2 # System install. - /etc/coriolis2 # Separate tree install. diff --git a/documentation/_build/html/_sources/ConfigurationTechnology/index.txt b/documentation/_build/html/_sources/ConfigurationTechnology/index.txt deleted file mode 100644 index 542eaebc..00000000 --- a/documentation/_build/html/_sources/ConfigurationTechnology/index.txt +++ /dev/null @@ -1,17 +0,0 @@ -.. -*- mode: rst; explicit-buffer-name: "index.rst`_. - - -.. toctree:: - :maxdepth: 2 - - Architecture.rst - diff --git a/documentation/_build/html/_sources/ConfigurationTechnology/pdfHeader.txt b/documentation/_build/html/_sources/ConfigurationTechnology/pdfHeader.txt deleted file mode 100644 index 840f3114..00000000 --- a/documentation/_build/html/_sources/ConfigurationTechnology/pdfHeader.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. -*- Mode: rst -*- - -.. include:: ../etc/definitions.rst - - -========================== -Configuration & Technology -========================== - -|pagestylefancy| - - -.. contents:: - -|newpage| diff --git a/documentation/_build/html/_sources/PythonTutorial/AdvancedTopics.txt b/documentation/_build/html/_sources/PythonTutorial/AdvancedTopics.txt index 8a1e69ed..89045f34 100644 --- a/documentation/_build/html/_sources/PythonTutorial/AdvancedTopics.txt +++ b/documentation/_build/html/_sources/PythonTutorial/AdvancedTopics.txt @@ -26,7 +26,7 @@ hierarchical levels, RoutingPads_ can refer to a deeply buried terminal. 9.3 HyperNets ~~~~~~~~~~~~~ -This class is part of the *virtual flattening* mechanisms, it allows to +This class is part of the *virtual flattening* mechanism, it allows to go through all the components of a trans-hierarchical net. diff --git a/documentation/_build/html/_sources/PythonTutorial/CgtScript.txt b/documentation/_build/html/_sources/PythonTutorial/CgtScript.txt index 2d81325b..8e8ad6a4 100644 --- a/documentation/_build/html/_sources/PythonTutorial/CgtScript.txt +++ b/documentation/_build/html/_sources/PythonTutorial/CgtScript.txt @@ -12,7 +12,7 @@ But, for debugging purpose it may be helpful to run it through the interactive layout viewer |cgt|. For |cgt| to be able to run your script, you must add to your script -file a function named :cb:`ScriptMain()`, which takes a dictionnary +file a function named :cb:`ScriptMain()`, which takes a dictionary as sole argument (:cb:`**kw`). The ``kw`` dictionary contains, in particular, the CellViewer_ object we are running under with the keyword ``editor``. You can then load your cell into the viewer @@ -71,7 +71,7 @@ function. To be able to see exactly what has just been mofied, we must close the UpdateSession_ just before calling the breakpoint and reopen it just after. The ``Breakpoint.stop()`` function takes two arguments: -#. The ``level`` above witch it will be active. +#. The ``level`` above which it will be active. #. An informative message about the purpose of the breakpoint. We can create a little function to ease the work: diff --git a/documentation/_build/html/_sources/PythonTutorial/Collections.txt b/documentation/_build/html/_sources/PythonTutorial/Collections.txt index 3505dc24..1e31d234 100644 --- a/documentation/_build/html/_sources/PythonTutorial/Collections.txt +++ b/documentation/_build/html/_sources/PythonTutorial/Collections.txt @@ -19,7 +19,7 @@ In |Hurricane| all kind of set of objects, whether organized in a real container like a ``map<>`` (dictionary / ``dict``) or a ``vector<>`` (table / ``list``) or an algorithmic walkthrough of the database can be accessed through a Collection_. -C++ Collections object are exposed in |Python| through the *iterable* protocol, +C++ Collections objects are exposed in |Python| through the *iterable* protocol, allowing to simply write: .. code-block:: Python @@ -83,8 +83,8 @@ the ``getCell()`` call wil be: .. note:: It means that if cells with the same name exist in different libraries, only the one in the first library will be ever used. - Be also weary of cell files that may remain in the ``WORK_LIB``, - they may unexpectedly shadow cells from the libraries. + Be also aware that cell files that may remain in the ``WORK_LIB``, + may unexpectedly shadow cells from the libraries. .. code-block:: Python diff --git a/documentation/_build/html/_sources/PythonTutorial/Introduction.txt b/documentation/_build/html/_sources/PythonTutorial/Introduction.txt index bbcd0144..861e85a5 100644 --- a/documentation/_build/html/_sources/PythonTutorial/Introduction.txt +++ b/documentation/_build/html/_sources/PythonTutorial/Introduction.txt @@ -39,7 +39,7 @@ don't. Thus we summarize below the more important ones: Cell_ The model. A Cell does not have terminals, only nets flagged as *external* Instance_ An instance of a model -Net_ A grouping of electrically connecteds components +Net_ A grouping of electrically connected components Plug_ A terminal of an instance RoutingPad_ A physical connexion (*pin*) to an instance =============== ===================================================== diff --git a/documentation/_build/html/_sources/PythonTutorial/Netlist.txt b/documentation/_build/html/_sources/PythonTutorial/Netlist.txt index 3460905c..ae1de186 100644 --- a/documentation/_build/html/_sources/PythonTutorial/Netlist.txt +++ b/documentation/_build/html/_sources/PythonTutorial/Netlist.txt @@ -39,7 +39,7 @@ parameters: 6.2 Creating Nets and connecting to Instances ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -An Instance_ as one Plug_ for each external net of the *master cell*. +An Instance_ has one Plug_ for each external net of the *master cell*. The plug allows to create a **logical** connection bewteen a Net_ of ``fulladder`` and a net from an Instance_ *master cell*. @@ -89,7 +89,7 @@ Building the :cb:`a` net of ``fulladder``: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For supplies, it may be tedious to connect the Plugs_ of each cell one by one -(and create a lot of uneeded objects). To avoid that, we may use **Named +(and create a lot of unneeded objects). To avoid that, we may use **Named connections**. If a signal in ``fulladder`` is set to *global*, then it will be considered as connected to any signal with the *same name* and *global* in the master cell of the instances. diff --git a/documentation/_build/html/_sources/PythonTutorial/index.txt b/documentation/_build/html/_sources/PythonTutorial/index.txt index 324dd20b..bc0ef11f 100644 --- a/documentation/_build/html/_sources/PythonTutorial/index.txt +++ b/documentation/_build/html/_sources/PythonTutorial/index.txt @@ -9,7 +9,7 @@ Hurricane+Python Tutorial Printable version of this document `PythonTutorial.pdf <../../../pdf/main/PythonTutorial.pdf>`_. -First, a small disclaimer. This tutorial assume that you are already familiar +First, a small disclaimer. This tutorial assumes that you are already familiar with the concepts of |VLSI| designs, such as *netlist*, *layout*, *instances* and hierarchical design. diff --git a/documentation/_build/html/_sources/PythonTutorial/pdfHeader.txt b/documentation/_build/html/_sources/PythonTutorial/pdfHeader.txt index 4706e3ba..ff8969b7 100644 --- a/documentation/_build/html/_sources/PythonTutorial/pdfHeader.txt +++ b/documentation/_build/html/_sources/PythonTutorial/pdfHeader.txt @@ -43,7 +43,7 @@ |noindent| -**First, a small disclaimer.** This tutorial assume that you are already familiar +**First, a small disclaimer.** This tutorial assumes that you are already familiar with the concepts of |VLSI| designs, such as *netlist*, *layout*, *instances* and hierarchical design. diff --git a/documentation/_build/html/_sources/UsersGuide/Configuration.txt b/documentation/_build/html/_sources/UsersGuide/Configuration.txt index d05dc69b..6db8baa7 100644 --- a/documentation/_build/html/_sources/UsersGuide/Configuration.txt +++ b/documentation/_build/html/_sources/UsersGuide/Configuration.txt @@ -21,7 +21,7 @@ General Software Architecture ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |Coriolis| has been built with respect of the classical paradigm that the -computational instensive parts have been written in C++, and almost +computational intensive parts have been written in C++, and almost everything else in |Python|. To build the |Python| interface we used two methods: @@ -38,170 +38,136 @@ two methods: |bcenter| |CoriolisSoftSchema| |ecenter| -All configuration & initialization files are Python scripts, despite their -|dot_conf| extention. From a syntactic point of view, there is no difference -between the system-wide configuration files and the user's configuration, -they use the same Python helpers. -|medskip| -Configuration is done in two stages: +Configuration & User's Settings +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#. Selecting the technology. -#. Loading the complete configuration for the given technology - and the user's settings. +All configurations files are shipped under the form of |Python| modules. +They are to be loaded through ``import`` statements. The user's configuration +files must be put in a ``./coriolis2/`` directory under the working directory. +It must be made a |Python| module so it must contains a ``__init__.py`` file +(kept empty most of the time). And as they are true |Python| files, you may use +in them any valid code you see fit. +If no user configuration files are present, |Coriolis| will use the default +``symbolic.cmos`` technology which matches the |Alliance| symbolic default one. -First Stage: Technology Selection -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Contents of the user's configuration directory ``./coriolis2/``: -|noindent| -The initialization process is done by executing, in order, the following file(s): ++----------------------------------+----------------------------------------------+ +| File | Contents/Meaning | ++==================================+==============================================+ +| :cb:`./coriolis2/__init__.py` | **Mandatory.** Tells |Python| this directory | +| | *is* a module. Can be left empty | ++----------------------------------+----------------------------------------------+ +| :cb:`./coriolis2/settings.py` | **Mandatory.** The user's settings, it must | +| | setup the technology intended for use and | +| | perform any configuration variable settings | ++----------------------------------+----------------------------------------------+ +| :cb:`./coriolis2/ioring.py` | **Optional.** Define how the I/O pads are to | +| | be placed on the periphery of the chip along | +| | the chip and core sizes | ++----------------------------------+----------------------------------------------+ +| :cb:`./coriolis2/katana.py` | **Optional.** Hook file for |Katana|, run | +| | just after the tool has been created for a | +| | ``Cell``. Mostly to setup ``Nets`` to be | +| | traced | ++----------------------------------+----------------------------------------------+ -+-------+----------------------------------+----------------------------------------------+ -| Order | Meaning | File | -+=======+==================================+==============================================+ -| **1** | The system setting | :cb:`/etc/coriolis2/techno.conf` | -+-------+----------------------------------+----------------------------------------------+ -| **2** | The user's global setting | :cb:`${HOME}/.coriolis2/techno.py` | -+-------+----------------------------------+----------------------------------------------+ -| **3** | The user's local setting | :cb:`/.coriolis2/techno.py` | -+-------+----------------------------------+----------------------------------------------+ +For example, to use |MOSIS| 180nm, you can put in your :cb:`./coriolis2/setting.py`: -Those files must provide only one variable, the name of the technology. Each technology -will provide configuration for both the symbolic part and the real part. |Coriolis| can -work with purely symbolic technology (``symbolic/cmos``) in that case, the real technology -part is a dummy one. +.. code-block:: python -For example, to use |MOSIS| 180nm: :: - - # -*- Mode:Python -*- + # -*- Mode:Python -*- - technology = '180/scn6m_deep_09' + import node180.scn6m_deep_09 -Second Stage: Technology Configuration Loading -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A Comprehensive Example of :cb:`./coriolis2/setting.py` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -|noindent| -The :cb:`technology` variable is set by the first stage and it's the name of the -technology. A directory of that name, with all the configuration files, -must exist in the configuration directory (:cb:`/etc/coriolis2`). -In addition to the technology-specific directories, a :cb:`common/` directory is -there to provide a trunk for all the identical data across the various technologies. -The initialization process is done by executing, in order, the following file(s): +.. code-block:: python -+-------+----------------------------------+-----------------------------------------------+ -| Order | Meaning | File | -+=======+==================================+===============================================+ -| **1** | The system initialization | :cb:`/etc/coriolis2//.conf` | -+-------+----------------------------------+-----------------------------------------------+ -| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2/settings.py` | -+-------+----------------------------------+-----------------------------------------------+ -| **3** | The user's local initialization | :cb:`/.coriolis2/settings.py` | -+-------+----------------------------------+-----------------------------------------------+ + import os + import Cfg + import Viewer + import CRL + import node180.scn6m_deep_09 + from helpers import l, u, n -.. note:: *The loading policy is not hard-coded.* It is implemented - at Python level in :cb:`/etc/coriolis2/coriolisInit.py`, and thus may be easily - amended to whatever site policy. + 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' + + Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.UserFile ) + + Viewer.Graphics.setStyle( 'Alliance.Classic [black]' ) + + cellsTop = allianceTop+'/cells' + + # Alliance related settings. + af = CRL.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=CRL.Environment.Append ) + env.addSYSTEM_LIBRARY ( library=cellsTop+'/mpxlib', mode=CRL.Environment.Append ) - The truly mandatory requirement is the existence of :cb:`coriolisInit.py` - which *must* contain a :cb:`coriolisConfigure()` function with no argument. + # Misc. setting parameters. + Cfg.getParamBool ( 'misc.logMode' ).setBool ( False ) + Cfg.getParamBool ( 'misc.verboseLevel1' ).setBool ( True ) + Cfg.getParamBool ( 'misc.verboseLevel2' ).setBool ( True ) - The :cb:`coriolisInit.py` script execution is triggered by the *import* of - the ``CRL`` module: + # P&R related parameters. + Cfg.getParamString ( 'anabatic.routingGauge' ).setString ( 'msxlib4' ) + Cfg.getParamString ( 'anabatic.topRoutingLayer' ).setString ( 'METAL4' ) + Cfg.getParamInt ( 'katana.hTracksReservedLocal' ).setInt ( 6 ) + Cfg.getParamInt ( 'katana.vTracksReservedLocal' ).setInt ( 3 ) - .. code:: python - - import sys - import os.path - import Cfg - import Hurricane - import CRL # Triggers execution of "coriolisInit.py". - import Viewer - - -Configuration Helpers -~~~~~~~~~~~~~~~~~~~~~ - -To ease the writing of configuration files, a set of small helpers -is available. They allow to setup the configuration parameters through -simple assembly of tuples. The helpers are installed under the directory: :: - - /etc/coriolis2/ - -Where :cb:`/` is the root of the installation. + Cfg.Configuration.popDefaultPriority() -.. _Alliance Helper: +|noindent| The example above shows the user's configuration file, with all the +available settings for |Alliance| and a small subset for other tools. Some remarks +about this file: -|Alliance| Helper ------------------ +* The ``Cfg.Configuration.pushDefaultPriority()`` and ``Cfg.Configuration.popDefaultPriority()`` + statements are there so the value sets by the user will not be overriden by system + ones event if they are setup afterwards. This priority system is introduced so the + various configuration files could be loaded in out of order. -The configuration file must provide an :cb:`allianceConfig` tuple as shown below. -Like all the |Coriolis| configuration file, it is to be executed through |Python|, -so we can use it to perform a not so dumb search of the |Alliance| installation -directory. Our default policy is to try to read the ``ALLIANCE_TOP`` environment -variable, and if not found, default to ``/soc/alliance``. +* The ``Viewer.Graphics.setStyle()`` allows you to choose the look of your liking from + the start. -.. code:: python - - import os - from helpers.Alliance import AddMode - from helpers.Alliance import Gauge - - allianceTop = None - if os.environ.has_key('ALLIANCE_TOP'): - allianceTop = os.environ['ALLIANCE_TOP'] - if not os.path.isdir(allianceTop): - allianceTop = None - - if not allianceTop: allianceTop = '/soc/alliance' - - cellsTop = allianceTop+'/cells/' - - - allianceConfig = \ - ( ( 'CATALOG' , 'CATAL') - , ( 'WORKING_LIBRARY' , '.') - , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append) - , (cellsTop+'dp_sxlib', AddMode.Append) - , (cellsTop+'ramlib' , AddMode.Append) - , (cellsTop+'romlib' , AddMode.Append) - , (cellsTop+'rflib' , AddMode.Append) - , (cellsTop+'rf2lib' , AddMode.Append) - , (cellsTop+'pxlib' , AddMode.Append) - , (cellsTop+'padlib' , AddMode.Append) ) ) - , ( 'IN_LO' , 'vst') - , ( 'IN_PH' , 'ap') - , ( 'OUT_LO' , 'vst') - , ( 'OUT_PH' , 'ap') - , ( 'POWER' , 'vdd') - , ( 'GROUND' , 'vss') - , ( 'CLOCK' , '.*ck.*|.*nck.*') - , ( 'BLOCKAGE' , '^blockage[Nn]et*') - , ( 'PAD' , '.*_px$') - ) - -|newpage| - - -|noindent| The example above shows the system configuration file, with all the -available settings. Some important remarks about those settings: - -* In its configuration file, the user does not need to redefine all the settings, - just the one he wants to change. In most of the cases, the ``SYSTEM_LIBRARY``, - the ``WORKING_LIBRARY`` and the special net names (at this point there is not +* For |Alliance|, the user does not need to redefine all the settings, + just the one he wants to change. In most of the cases, the ``addSYSTEM_LIBRARY()``, + the ``setWORKING_LIBRARY()`` and the special net names (at this point there is not much alternatives for the others settings). -* ``SYSTEM_LIBRARY`` setting: Setting up the library search path. - Each library entry in the tuple will be added to the search path according - to the second parameter: +* ``addSYSTEM_LIBRARY()`` adds a directory to the library search path. + Each library entry will be added to the search path according to the second parameter: - * :cb:`AddMode::Append`: append to the search path. + * :cb:`CRL.Environment::Append`: append to the search path. - * :cb:`AddMode::Prepend`: insert in head of the search path. + * :cb:`CRL.Environment::Prepend`: insert in head of the search path. - * :cb:`AddMode::Replace`: look for a library of the same name and replace + * :cb:`CRL.Environment::Replace`: look for a library of the same name and replace it, whithout changing the search path order. If no library of that name already exists, it is appended. @@ -211,160 +177,27 @@ available settings. Some important remarks about those settings: the system will browse sequentially through the library list and returns the first |Cell| whose name match. -* For ``POWER``, ``GROUND``, ``CLOCK`` and ``BLOCKAGE`` net names, a regular - expression (|GNU| regexp) is expected. +* For ``setPOWER()``, ``setGROUND()``, ``setCLOCK()`` and ``setBLOCKAGE()`` net names, + a regular expression (|GNU| regexp) is expected. -.. * The ``helpers.sysConfDir`` variable is supplied by the helpers, it is the -.. directory in which the system-wide configuration files are located. -.. For a standard installation it would be: ``/soc/coriolis2``. -.. -.. .. * Trick and naming convention about ``SYMBOLIC_TECHNOLOGY``, ``REAL_TECHNOLOGY`` -.. and ``DISPLAY``. In the previous releases, those files were to be read by -.. XML parsers, and still do if you triggers the XML compatibility mode. -.. But now, they have Python conterparts. In the configuration files, you -.. still have to name them as XML files, the Python file name will be -.. deduced from this one with those two translation rules: -.. -.. #. In the filename, all dots, except for the last (the file extention), -.. are replaced by underscores. -.. -.. #. The ``.xml`` extention is substituted by a ``.conf``. -.. -.. For the symbolic technology, it would give: :: -.. -.. /soc/coriolis2/technology.symbolic.xml -.. --> /soc/coriolis2/technology_symbolic.conf +* For other tools parameters, just use getter and setter according to their types: -A typical user's configuration file would be: :: + +------------------+-----------------------------------------------------------+ + | Type | Getter/Setter | + +==================+===========================================================+ + | ``Bool`` | ``Cgt.getParamBool('name').setBool( True )`` | + +------------------+-----------------------------------------------------------+ + | ``Int`` | ``Cgt.getParamInt('name').setBool( 12 )`` | + +------------------+-----------------------------------------------------------+ + | ``Enumerate`` | ``Cgt.getParamEnumerate('name').setBool( 12 )`` | + +------------------+-----------------------------------------------------------+ + | ``Double`` | ``Cgt.getParamDouble('name').setDouble( 254.5 )`` | + +------------------+-----------------------------------------------------------+ + | ``Percentage`` | ``Cgt.getParamPercentage('name').setPercentage( 75.0 )`` | + +------------------+-----------------------------------------------------------+ + | ``String`` | ``Cgt.getParamString('name').setString( 'machin' )`` | + +------------------+-----------------------------------------------------------+ - import os - - homeDir = os.getenv('HOME') - - allianceConfig = \ - ( ('WORKING_LIBRARY' , homeDir+'/worklib') - , ('SYSTEM_LIBRARY' , ( (homeDir+'/mylib', Environment.Append) ) ) - , ('POWER' , 'vdd.*') - , ('GROUND' , 'vss.*') - ) - - -Tools Configuration Helpers ---------------------------- - -All the tools use the same helper to load their configuration (a.k.a. -*Configuration Helper*). Currently the following configuration system-wide -configuration files are defined: - -* :cb:`misc.conf`: common settings or not belonging specifically to a tool. -* :cb:`etesian.conf`: for the |Etesian| tool. -* :cb:`kite.conf`: for the |Kite| tool. -* :cb:`stratus1.conf`: for the |stratus1| tool. - -|newpage| - - -Here is the contents of :cb:`etesian.conf`: :: - - # Etesian parameters. - parametersTable = \ - ( ('etesian.aspectRatio' , TypePercentage, 100 , { 'min':10, 'max':1000 } ) - , ('etesian.spaceMargin' , TypePercentage, 5 ) - , ('etesian.uniformDensity' , TypeBool , False ) - , ('etesian.routingDriven' , TypeBool , False ) - , ("etesian.effort" , TypeEnumerate , 2 - , { 'values':( ("Fast" , 1) - , ("Standard", 2) - , ("High" , 3) - , ("Extreme" , 4) ) } - ) - , ("etesian.graphics" , TypeEnumerate , 2 - , { 'values':( ("Show every step" , 1) - , ("Show lower bound" , 2) - , ("Show result only" , 3) ) } - ) - ) + Lists of the configurable parameters of most interest to the user are given in + :ref:`Viewer & Tools`. - layoutTable = \ - ( (TypeTab , 'Etesian', 'etesian') - - , (TypeTitle , 'Placement area') - , (TypeOption, "etesian.aspectRatio" , "Aspect Ratio, X/Y (%)", 0 ) - , (TypeOption, "etesian.spaceMargin" , "Space Margin" , 1 ) - , (TypeRule ,) - , (TypeTitle , 'Etesian - Placer') - , (TypeOption, "etesian.uniformDensity", "Uniform density" , 0 ) - , (TypeOption, "etesian.routingDriven" , "Routing driven" , 0 ) - , (TypeOption, "etesian.effort" , "Placement effort" , 1 ) - , (TypeOption, "etesian.graphics" , "Placement view" , 1 ) - , (TypeRule ,) - ) - - -Taxonomy of the file: - -* It must contain, at least, the two tables: - - * ``parametersTable``, defines & initialises the configuration variables. - - * ``layoutTables``, defines how the various parameters will be displayed - in the configuration window (:ref:`The Settings Tab`). - -* The ``parametersTable``, is a tuple (list) of tuples. Each entry in the list - describes a configuration parameter. In its simplest form, it's a quadruplet - :cb:`(TypeOption, 'paramId', ParameterType, DefaultValue)` with: - - #. ``TypeOption``, tells that this tuple describes a parameter. - - #. ``paramId``, the identifier of the parameter. Identifiers are defined - by the tools. The list of parameters is detailed in each tool section. - - #. ``ParameterType``, the kind of parameter. Could be: - - * ``TypeBool``, boolean. - * ``TypeInt``, signed integer. - * ``TypeEnumerate``, enumerated type, needs extra entry. - * ``TypePercentage``, percentage, expressed between 0 and 100. - * ``TypeDouble``, float. - * ``TypeString``, character string. - - #. ``DefaultValue``, the default value for that parameter. - - -Hacking the Configuration Files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Aside from the symbols that get used by the configuration helpers like -:cb:`allianceConfig` or :cb:`parametersTable`, you can put pretty much anything -in :cb:`/.coriolis2/settings.py` (that is, written in |Python|). - -For example: :: - - # -*- Mode:Python -*- - - defaultStyle = 'Alliance.Classic [black]' - - # Regular Coriolis configuration. - parametersTable = \ - ( ('misc.catchCore' , TypeBool , False ) - , ('misc.info' , TypeBool , False ) - , ('misc.paranoid' , TypeBool , False ) - , ('misc.bug' , TypeBool , False ) - , ('misc.logMode' , TypeBool , True ) - , ('misc.verboseLevel1' , TypeBool , False ) - , ('misc.verboseLevel2' , TypeBool , True ) - , ('misc.minTraceLevel' , TypeInt , 0 ) - , ('misc.maxTraceLevel' , TypeInt , 0 ) - ) - - # Some ordinary Python script... - import os - - print ' o Cleaning up ClockTree previous run.' - for fileName in os.listdir('.'): - if fileName.endswith('.ap') or (fileName.find('_clocked.') >= 0): - print ' - <%s>' % fileName - os.unlink(fileName) - - -See :ref:`Python Interface to Coriolis` for more details those capabilities. diff --git a/documentation/_build/html/_sources/UsersGuide/Installation.txt b/documentation/_build/html/_sources/UsersGuide/Installation.txt index 79f0b8bd..e7ee00a7 100644 --- a/documentation/_build/html/_sources/UsersGuide/Installation.txt +++ b/documentation/_build/html/_sources/UsersGuide/Installation.txt @@ -10,7 +10,7 @@ Installation As the sources are being released, the binary packaging is dropped. You may still find (very) old versions here: http://asim.lip6.fr/pub/coriolis/2.0 . -In a nutshell, building source consistis in pulling the |git| repository then +In a nutshell, building source consists in pulling the |git| repository then running the |ccb| installer. .. note:: @@ -40,7 +40,7 @@ Building documentation prerequisites: * latex * python-docutils (for reStructuredText) -The following libraries gets directly bundled with |Coriolis|: +The following libraries get directly bundled with |Coriolis|: * LEF/DEF (from `SI2 `_) * FLUTE (from `Chris C. N. Chu `_) @@ -54,7 +54,7 @@ Fixed Directory Tree In order to simplify the work of the |ccb| installer, the source, build and installation tree is fixed. To successfully compile |Coriolis| you must follow it exactly. The tree is relative to the home directory of the user -building it (noted :fboxtt:`~/` or :fboxtt:`$HOME/`). Only the source +building it (note :fboxtt:`~/` or :fboxtt:`$HOME/`). Only the source directory needs to be manually created by the user, all others will be automatically created either by |ccb| or the build system. @@ -95,7 +95,7 @@ automatically created either by |ccb| or the build system. with shared libraries. But there are also available ``Static`` instead of ``Shared`` and ``Debug`` instead of ``Release`` and any combination of them. - ``Static`` do not work because I don't know yet to mix statically linked binaries + ``Static`` does not work because I don't know yet to mix statically linked binaries and Python modules (which must be dynamic). @@ -122,14 +122,14 @@ The |Coriolis| |git| repository is https://www-soc.lip6.fr/git/coriolis.git .. note:: Under |RHEL| 7 or clones, they upgraded their version of |Qt| 4 (from 4.6 to 4.8) - so the *diagonal line* bug no longer occur. So we can safely use the default + so the *diagonal line* bug no longer occurs. So we can safely use the default system |Qt| again. Installing on |RedHat| or compatible distributions -------------------------------------------------- -1. Install or check that the required prerequisites are installeds : :: +1. Install or check that the required prerequisites are installed : :: dummy@lepka:~> yum install -y git cmake bison flex gcc-c++ libstdc++-devel \ binutils-devel \ @@ -138,7 +138,7 @@ Installing on |RedHat| or compatible distributions python-devel libxml2-devel bzip2-devel \ qt-devel qwt-devel # Qt 4 - Note, that the ``Qwt`` packages are directly availables from the standart distribution + Note, that the ``Qwt`` packages are directly available from the standart distribution when using |Qt| 4. 2. Install the unpackaged prerequisites. Currently, only RapidJSON_. :: @@ -157,7 +157,7 @@ Installing on |RedHat| or compatible distributions 4. Build & install: :: dummy@lepka:src> cd coriolis - dummy@lepka:coriolis> git checkout devel_anabatic + dummy@lepka:coriolis> git checkout devel dummy@lepka:coriolis> ./bootstrap/ccb.py --project=support \ --project=coriolis \ --make="-j4 install" @@ -180,7 +180,7 @@ be given as argument: :: dummy@lepka:coriolis> ./bootstrap/ccb.py --project=coriolis \ --devtoolset=8 --make="-j4 install" -If you want to uses Qt 5 instead of Qt 4 modify the previous steps as follow: +If you want to use Qt 5 instead of Qt 4, modify the previous steps as follows: * At **step 1**, do not install the |QT| 4 related development package (``qt4-devel``), but instead: :: @@ -197,7 +197,7 @@ If you want to uses Qt 5 instead of Qt 4 modify the previous steps as follow: * At **step 4**, add a ``--qt5`` argument to the ``ccb.py`` command line. -* The |Python| scripts that makes uses of |PyQt| in ``crlcore`` and ``cumulus`` must be +* The |Python| scripts that make use of |PyQt| in ``crlcore`` and ``cumulus`` must be edited to import ``PyQt5`` instead of ``PtQt4`` (should find a way to automatically switch between the two of them). @@ -208,10 +208,10 @@ It also may be run in graphical mode (``--gui``). Building a Debug Enabled Version -------------------------------- -The ``Release.Shared`` default version of the |Coriolis| is build stripped of symbols +The ``Release.Shared`` default version of the |Coriolis| is built stripped of symbols and optimized so that it makes analysing a core dump after a crash difficult. In the (unlikely) case of a crash, you may want to build, alongside the optimized version, -a debug one which allow forensic examination by |gdb| (or |valgrind| or whatever). +a debug one which allows forensic examination by |gdb| (or |valgrind| or whatever). Run again ``ccb.py``, adding the ``--debug`` argument: :: @@ -250,7 +250,7 @@ As |cgt| is a |Python| script, the right command to run |gdb| is: :: Installing on |Debian| 9, |Ubuntu| 18 or compatible distributions ----------------------------------------------------------------- -First, install or check that the required prerequisites are installeds : :: +First, install or check that the required prerequisites are installed : :: dummy@lepka:~> sudo apt install -y build-essential binutils-dev \ git cmake bison flex gcc python-dev \ @@ -270,7 +270,7 @@ Second step is to create the source directory and pull the |git| repository: :: Third and final step, build & install: :: dummy@lepka:src> cd coriolis - dummy@lepka:coriolis> git checkout devel_anabatic + dummy@lepka:coriolis> git checkout devel dummy@lepka:coriolis> ./bootstrap/ccb.py --project=coriolis \ --make="-j4 install" @@ -278,7 +278,7 @@ Third and final step, build & install: :: Additionnal Requirement under |MacOS| ------------------------------------- -|Coriolis| make uses of the :cb:`boost::python` module, but the |macports| |boost| +|Coriolis| makes use of the :cb:`boost::python` module, but the |macports| |boost| seems unable to work with the |Python| bundled with |MacOS|. So you have to install both of them from |macports|: :: @@ -314,7 +314,7 @@ packaging, you must configure it so that it can found those libraries. The easiest way is to setup the |Alliance| environment (i.e. sourcing ``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment (see the next section). To understand how |Coriolis| find/setup |Alliance| you may -have look to the :ref:`Alliance Helper`. +have look to the *Configuration and User's Settings* section. Setting up the Environment (coriolisEnv.py) diff --git a/documentation/_build/html/_sources/UsersGuide/Releases.txt b/documentation/_build/html/_sources/UsersGuide/Releases.txt index 2826b32a..fb210145 100644 --- a/documentation/_build/html/_sources/UsersGuide/Releases.txt +++ b/documentation/_build/html/_sources/UsersGuide/Releases.txt @@ -63,7 +63,7 @@ Release `2049` is Alpha. #. More extensive Python support for all the components of |Coriolis|. #. Configuration is now completly migrated under Python. - |XML| loaders can still be useds for compatibilty. + |XML| loaders can still be used for compatibilty. #. The |cgt| main has been rewritten in Python. @@ -105,20 +105,37 @@ Release v2.2 Release v2.3 ~~~~~~~~~~~~ -#. Revert to a more standard organisation of the branchs. **devel_anabatic** is +#. Reverts to a more standard organisation of the branches. **devel_anabatic** is closed and we go on with **master** (stable version) and **devel**. -#. Make |Katana| the default global & detailed router. Put |Knik| & |Kite| in the - obsolete menues. +#. Makes |Katana| the default global & detailed router. Put |Knik| & |Kite| in the + obsolete menus. -#. Finally make uses of |PyQt4| widgets. Seems to integrate without problems +#. Finally makes use of |PyQt4| widgets. Seems to integrate without problems with the |Coriolis| own |Qt| widget. The drawback is that to build against |Qt| 5 - needs to adjustement from the user. + needs adjustement from the user. #. Improved support for whole chip management. The outer part of the chip containing - the pad is decoupled from the core. This allow to cleanly separate real pads from + the pad is decoupled from the core. This allows to cleanly separate real pads from the foundry from a symbolic core. But this does not preclude other combinations as fully symbolic or fully real. - To perform the separation an intermediate hierarchical level ``corona`` between chip + To perform the separation, an intermediate hierarchical level ``corona`` between chip and core has been introduced. + + +Release v2.4 +~~~~~~~~~~~~ + +#. Complete rewrite of the initialisation system. No longer use "configuration like" + files with various list of items. Now the configuration is supplied under the + from of |Python| modules to be imported as the user see fit. + +#. Clean separation between |NDA| protected parts and free ones. Now all the |NDA| + related components are put under one separated tree, whether they are configuration + files or |Python| plugins, so that they be can easily by exported. + +#. In |Anabatic| & |Katana| better accuracy at how obstacles decrease the edges + capacities of the GCells. Reduce the edge capacity of a GCell according to it's + inner cluttering (that is, it's number of terminals). Change of semantics + for ``katana.hReservedLocal`` and ``katana.vReservedLocal`` parameters. diff --git a/documentation/_build/html/_sources/UsersGuide/ScriptsPlugins.txt b/documentation/_build/html/_sources/UsersGuide/ScriptsPlugins.txt index 63186247..cf72255e 100644 --- a/documentation/_build/html/_sources/UsersGuide/ScriptsPlugins.txt +++ b/documentation/_build/html/_sources/UsersGuide/ScriptsPlugins.txt @@ -20,7 +20,7 @@ Python Interface for |Hurricane| / |Coriolis| ============================================= The (almost) complete interface of |Hurricane| is exported as a |Python| module -and some part of the other components of |Coriolis| (each one in a separate +and some parts of the other components of |Coriolis| (each one in a separate module). The interface has been made to mirror as closely as possible the C++ one, so the C++ doxygen documentation could be used to write code with either languages. @@ -31,12 +31,13 @@ A script could be run directly in text mode from the command line or through the graphical interface (see :ref:`Python Scripts in Cgt`). Aside for this requirement, the python script can contain anything valid -in |Python|, so don't hesitate to use any package or extention. +in |Python|, so don't hesitate to use any package or extension. Small example of Python/Stratus script: :: - from Hurricane import * - from Stratus import * + import symbolic.cmos + from Hurricane import * + from Stratus import * def doSomething (): # ... @@ -67,10 +68,17 @@ This typical script can be executed in two ways: if __name__ == "__main__" : part (this is standart |Python|). It is a simple adapter that will - calls :cb:`ScriptMain()`. + call :cb:`ScriptMain()`. + + In this case, the ``import symbolic.cmos`` statement at the begining + is mandatory. + #. Through |cgt|, either in text or graphical mode. In that case, the :cb:`ScriptMain()` is directly called trough a sub-interpreter. The arguments of the script are passed through the ``**kw`` dictionnary. + + In this case, the ``import symbolic.cmos`` statement at the begining + may be omitted. +----------------------+-----------------------------------------------+ | \*\*kw Dictionnary | @@ -79,7 +87,7 @@ This typical script can be executed in two ways: +======================+===============================================+ | ``'cell'`` | A Hurricane cell on which to work. Depending | | | on the context, it may be ``None``. | - | | For example, when run from |cgt|, it the cell | + | | For example, when run from |cgt|, the cell | | | currently loaded in the viewer, if any. | +----------------------+-----------------------------------------------+ | ``'editor'`` | The viewer from which the script is run, when | @@ -100,32 +108,30 @@ through this method. Chip Placement -------------- -Automatically perform the placement of a complete chip. This plugin, as well +Automatically performs the placement of a complete chip. This plugin, as well as the other P&R tools expect a specific top-level hierarchy for the design. -The top-level hierarchy must contains the instances of all the I/O pads and +The top-level hierarchy must contain the instances of all the I/O pads and **exactly one** instance named ``corona`` of an eponym cell ``corona``. -The ``corona`` cell in turn containing the instance of the chip's core model. +The ``corona`` cell in turn contains the instance of the chip's core model. The intermediate ``corona`` hierarchical level has been introduced to handle -the possible discoupling between real I/O pads supplied by a foundry and a +the possible decoupling between real I/O pads supplied by a foundry and a symbolic core. So the *chip* level contains only real layout and the corona and below only symbolic layer. -.. note:: This do not prevent having a design either fully symbolic (pads and core) +.. note:: This does not prevent having a design either fully symbolic (pads and core) or fully real. -.. note:: The ``corona`` also avoid the router to actually have to manage directly - the pads which simplificate it's configuration and accessorily avoid +.. note:: The ``corona`` also avoids the router to actually have to manage directly + the pads which simplify its configuration and besides avoid to have the pads stuffed with blockages. |bcenter| |ChipStructure-1| |ecenter| The designer must provide a configuration file that defines the rules for the placement of the top-level hierarchy (that is, the pads and the core). -This file must be named after the chip's name, by appending ``_ioring.py`` -(obviously, it is a |Python| file). For instance if the chip netlist file -is called ``amd2901.vst``, then the configuration file must be named -``amd2901_ioring.vst``. +This file must be names ``ioring.py`` and put into the user's configuration +directory ``./coriolis2/`` Example of chip placement configuration file (for ``AM2901``): :: @@ -159,24 +165,24 @@ The file must contain *one dictionnary* named ``chip``. | Parameter Key/Name | Value/Contents type | +======================+=======================================================+ | ``'pad.ioPadGauge'`` | The routing gauge to use for the pad. Must be given | -| | as it differs from the one used to route standard | +| | as it differs from the one used to route | | | inside the core | +----------------------+-------------------------------------------------------+ -| ``'pad.south'`` | Ordered list (left to right) of pad instances names | +| ``'pad.south'`` | Ordered list (left to right) of pad instance names | | | to put on the south side of the chip | +----------------------+-------------------------------------------------------+ -| ``'pad.east'`` | Ordered list (down to up) of pad instances names | +| ``'pad.east'`` | Ordered list (down to up) of pad instance names | | | to put on the east side of the chip | +----------------------+-------------------------------------------------------+ -| ``'pad.north'`` | Ordered list (left to right) of pad instances names | +| ``'pad.north'`` | Ordered list (left to right) of pad instance names | | | to put on the north side of the chip | +----------------------+-------------------------------------------------------+ -| ``'pad.west'`` | Ordered list (down to up) of pad instances names | +| ``'pad.west'`` | Ordered list (down to up) of pad instance names | | | to put on the west side of the chip | +----------------------+-------------------------------------------------------+ | ``'core.size'`` | The size of the core (to be used by the placer) | +----------------------+-------------------------------------------------------+ -| ``'chip.size'`` | The size of the whole chip. The sides must be great | +| ``'chip.size'`` | The size of the whole chip. The sides must be large | | | enough to accomodate all the pads | +----------------------+-------------------------------------------------------+ | ``'chip.clockTree'`` | Whether to generate a clock tree or not. This calls | @@ -190,27 +196,27 @@ Configuration parameters, defaults are defined in ``etc/coriolis2//plug +===================================+==================+============================+ | **Chip Plugin Parameters** | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.count`` | TypeInt | :cb:`5` | +|``chip.block.rails.count`` | ``Int`` | :cb:`5` | | +------------------+----------------------------+ | | The minimum number of rails around the core | -| | block. Must be odd and suppérior to 5. | +| | block. Must be odd and above 5. | | | One rail for the clock and at least two pairs | | | of power/grounds | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.hWidth`` | TypeInt | :cb:`12` |lambda| | +|``chip.block.rails.hWidth`` | ``Int`` | :cb:`12` |lambda| | | +------------------+----------------------------+ -| | The horizontal with of the rails | +| | The horizontal width of the rails | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.vWidth`` | TypeInt | :cb:`12` |lambda| | +|``chip.block.rails.vWidth`` | ``Int`` | :cb:`12` |lambda| | | +------------------+----------------------------+ -| | The vertical with of the rails | +| | The vertical width of the rails | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.hSpacing`` | TypeInt | :cb:`6` |lambda| | +|``chip.block.rails.hSpacing`` | ``Int`` | :cb:`6` |lambda| | | +------------------+----------------------------+ | | The spacing, *edge to edge* of two adjacent | | | horizontal rails | +-----------------------------------+------------------+----------------------------+ -|``chip.block.rails.vSpacing`` | TypeInt | :cb:`6` |lambda| | +|``chip.block.rails.vSpacing`` | ``Int`` | :cb:`6` |lambda| | | +------------------+----------------------------+ | | The spacing, *edge to edge* of two adjacent | | | vertical rails | @@ -219,7 +225,7 @@ Configuration parameters, defaults are defined in ``etc/coriolis2//plug .. note:: If no clock tree is generated, then the clock rail is *not* created. So even if the requested number of rails ``chip.block.rails.count`` is, say 5, - only four rails (2* ``power``, 2* ``ground``) will be generateds. + only four rails (2* ``power``, 2* ``ground``) will be generated. Clock Tree @@ -246,7 +252,7 @@ tree. The clock tree plugin works in four steps: -#. Builds the clock tree: creates the top-block abutment box, compute the +#. Builds the clock tree: creates the top-block abutment box, computes the required levels of H tree and places the clock buffers. #. Once the clock buffers are placed, calls the placer (|etesian|) to place the ordinary standard cells, whithout disturbing clock H-tree buffers. @@ -260,7 +266,7 @@ Netlist reorganisation: contain all the clock sub-nets. The interface is *not* changed. * If the top block contains instances of other models *and* those models contain DFFs that get re-connected to the clock sub-nets (from the - top level). Changes both the model netlist and interface to propagate + top level): Changes both the model netlist and interface to propagate the relevant clock sub-nets to the instanciated model. The new model with the added clock signal is renamed with a ``_cts`` suffix. For example, the sub-block model ``ram.vst`` will become ``ram_cts.vst``. @@ -278,12 +284,12 @@ Configuration parameters, defaults are defined in ``etc/coriolis2//plug +===================================+==================+============================+ | **ClockTree Plugin Parameters** | +-----------------------------------+------------------+----------------------------+ -|``clockTree.minimumSide`` | TypeInt | :cb:`300` |lambda| | +|``clockTree.minimumSide`` | ``Int`` | :cb:`300` |lambda| | | +------------------+----------------------------+ | | The minimum size below which the clock tree | | | will stop to perform quadri-partitions | +-----------------------------------+------------------+----------------------------+ -|``clockTree.buffer`` | TypeString | :cb:`buf_x2` | +|``clockTree.buffer`` | ``String`` | :cb:`buf_x2` | | +------------------+----------------------------+ | | The buffer model to use to drive sub-nets | +-----------------------------------+------------------+----------------------------+ @@ -306,7 +312,7 @@ example, derived from the |Alliance| :cb:`AM2901` is supplied. This example contains only the synthetized netlists and the :cb:`doChip.py` script which perform the whole P&R of the design. -You can generate the chip using one of the following method: +You can generate the chip using one of the following methods: #. **Command line mode:** directly run the script: :: @@ -316,6 +322,6 @@ You can generate the chip using one of the following method: then run the |Python| script :cb:`doChip.py`. .. note:: - Between two consecutive run, be sure to erase the netlist/layout generateds: :: + Between two consecutive run, be sure to erase the netlist/layout generated: :: dummy@lepka:AM2901> rm *_cts*.vst *.ap diff --git a/documentation/_build/html/_sources/UsersGuide/ViewerTools.txt b/documentation/_build/html/_sources/UsersGuide/ViewerTools.txt index 94cc226b..a2badb50 100644 --- a/documentation/_build/html/_sources/UsersGuide/ViewerTools.txt +++ b/documentation/_build/html/_sources/UsersGuide/ViewerTools.txt @@ -83,24 +83,24 @@ The |Coriolis| graphical interface is split up into two windows. * The **Viewer**, with the following features: * Basic load/save capabilities. - * Display the current working cell. Could be empty if the design + * Displays the current working cell. Could be empty if the design is not yet placed. - * Execute Stratus Scripts. + * Executes Stratus Scripts. * Menu to run the tools (placement, routage). Features are detailed in `Viewer & Tools`_. |ViewerSnapShot_1| -* The **Controller**, which allows: +* The **Controller**, which allows to: - * Tweak what is displayer by the *Viewer*. Through the *Look*, + * Tweak what is displayed by the *Viewer*. Through the *Look*, *Filter* and *Layers&Gos* tabs. * Browse the |netlist| with eponym tab. * Show the list of selected objects (if any) with *selection* * Walk through the Database, the Cell or the Selection with *Inspector*. This is an advanced feature, reserved for experimented users. - * The tab *Settings* which give access to all the settings. + * The tab *Settings* which gives access to all the settings. They are closely related to Configuration & Initialisation. |bcenter| |ControllerSnapShot_1| |ecenter| @@ -196,9 +196,9 @@ This |Coriolis| tool is actually an encapsulation of |Coloquinte| which *is* the The placement area is defined by the top cell abutment box. When placing a complete hierarchy, the abutment boxes of the cells (models) other than -the top cell are sets identical to the one of the top cell and their instances are +the top cell are set identical to the one of the top cell and their instances are all placed at position ``(0,0,ID)``. That is, all the abutments boxes, whatever the -hierarchical level, defines the same area (they are exactly superposed). +hierarchical level, define the same area (they are exactly superposed). We choose this scheme because the placer will see all the instances as virtually flattened, so they can be placed anywhere inside the top-cell abutment box. @@ -239,34 +239,34 @@ Etesian Configuration Parameters +===================================+==================+============================+ | **Etesian Parameters** | +-----------------------------------+------------------+----------------------------+ -|``etesian.aspectRatio`` | TypePercentage | :cb:`100` | +|``etesian.aspectRatio`` | ``Percentage`` | :cb:`100` | | +------------------+----------------------------+ | | Define the height on width ``H/W`` aspect | | | ratio, can be comprised between 10 and 1000 | +-----------------------------------+------------------+----------------------------+ -|``etesian.spaceMargin`` | TypePercentage | :cb:`5` | +|``etesian.spaceMargin`` | ``Percentage`` | :cb:`5` | | +------------------+----------------------------+ | | The extra white space added to the total area | | | of the standard cells | +-----------------------------------+------------------+----------------------------+ -|``etesian.uniformDensity`` | TypeBool | :cb:`False` | +|``etesian.uniformDensity`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Whether the cells will be spread envenly | | | across the area or allowed to form denser | | | clusters | +-----------------------------------+------------------+----------------------------+ -|``etesian.effort`` | TypeInt | :cb:`2` | +|``etesian.effort`` | ``Int`` | :cb:`2` | | +------------------+----------------------------+ | | Sets the balance between the speed of the | | | placer and the solution quality | +-----------------------------------+------------------+----------------------------+ -|``etesian.routingDriven`` | TypeBool | :cb:`False` | +|``etesian.routingDriven`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Whether the tool will try routing iterations | | | and whitespace allocation to improve | | | routability; to be implemented | +-----------------------------------+------------------+----------------------------+ -|``etesian.graphics`` | TypeInt | :cb:`2` | +|``etesian.graphics`` | ``Int`` | :cb:`2` | | +------------------+----------------------------+ | | How often the display will be refreshed | | | More refreshing slows the placer. | @@ -313,12 +313,12 @@ following configuration parameters: that quantity is substracted from the edge capacities (global routing) to give a sense of the cluttering inside the GCells. #. ``katana.vTrackReservedLocal``, same as above. -#. ``etesian.spaceMargin``, increase the free area of the overall design so the +#. ``etesian.spaceMargin``, increases the free area of the overall design so the routing density decrease. The idea is to increase the horizontal and vertical local track reservation until -the detailed router succeed. But in doing so we make the task of the global router -more and more difficult as the capacity of the edges decrease, and at some point +the detailed router succeeds. But in doing so we make the task of the global router +more and more difficult as the capacity of the edges decreases, and at some point it will fail too. So this is a balance. Routing a design is done in four ordered steps: @@ -328,7 +328,7 @@ Routing a design is done in four ordered steps: #. Detailed routing :math:`\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed Route}` #. Finalize routing :math:`\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Finalize Route}` -It is possible to supply to the router a complete wiring for some nets that the user's +It is possible to supply to the router a complete wiring for some nets that the user wants to be routed according to a specific topology. The supplied topology must respect the building rules of the |Anabatic| database (contacts must be, *terminals*, *turns*, *h-tee* & *v-tee* only). During the first step :fboxtt:`Detailed Pre-Route` the router will solve @@ -342,7 +342,7 @@ the |Katana| data-structure, and it is not advisable to save the design before that step. You may visualize the density (saturation) of either the edges (global routing) -or the GCells (detailed routing) until the routing is finalized. Special layers appears +or the GCells (detailed routing) until the routing is finalized. Special layers appear to that effect in the `The Layers&Go Tab`_. @@ -359,73 +359,79 @@ All the defaults value given below are from the default |Alliance| technology +===================================+==================+============================+ | **Anabatic Parameters** | +-----------------------------------+------------------+----------------------------+ -|``anabatic.topRoutingLayer`` | TypeString | :cb:`METAL5` | +|``anabatic.topRoutingLayer`` | ``String`` | :cb:`METAL5` | | +------------------+----------------------------+ | | Define the highest metal layer that will be | | | used for routing (inclusive). | +-----------------------------------+------------------+----------------------------+ -|``anabatic.globalLengthThreshold`` | TypeInt | :cb:`1450` | +|``anabatic.globalLengthThreshold`` | ``Int`` | :cb:`1450` | | +------------------+----------------------------+ | | This parameter is used by a layer assignment | | | method which is no longer used (did not give | | | good results) | +-----------------------------------+------------------+----------------------------+ -| ``anabatic.saturateRatio`` | TypePercentage | :cb:`80` | +| ``anabatic.saturateRatio`` | ``Percentage`` | :cb:`80` | | +------------------+----------------------------+ | | If ``M(x)`` density is above this ratio, | | | move up feedthru global segments up from | | | depth ``x`` to ``x+2`` | +-----------------------------------+------------------+----------------------------+ -| ``anabatic.saturateRp`` | TypeInt | :cb:`8` | +| ``anabatic.saturateRp`` | ``Int`` | :cb:`8` | | +------------------+----------------------------+ | | If a GCell contains more terminals | | | (:cb:`RoutingPad`) than that number, force a | | | move up of the connecting segments to those | | | in excess | +-----------------------------------+------------------+----------------------------+ +| ``anabatic.globalIterations`` | ``Int`` | :cb:`10` | +| +------------------+----------------------------+ +| | The maximum number of iterations the global | +| | router will try to solve edges overload | ++-----------------------------------+------------------+----------------------------+ | **Katana Parameters** | +-----------------------------------+------------------+----------------------------+ -| ``katana.hTracksReservedLocal`` | TypeInt | :cb:`3` | +| ``katana.hTracksReservedLocal`` | ``Int`` | :cb:`3` | | +------------------+----------------------------+ | | To take account the tracks needed *inside* a | -| | GCell to build the *local* routing, decrease | -| | the capacity of the edges of the global | -| | router. Horizontal and vertical locally | -| | reserved capacity can be distinguished for | -| | more accuracy. | +| | GCell to build the *local* routing the | +| | capacities of the edges needs to be decreased.| +| | The decrease is computed by the GCell and | +| | cannot exceed this number (this is maximum). | +| | For better accuracy vertical and horizontal | +| | edges are distinguisheds | +-----------------------------------+------------------+----------------------------+ -| ``katana.vTracksReservedLocal`` | TypeInt | :cb:`3` | +| ``katana.vTracksReservedLocal`` | ``Int`` | :cb:`3` | | +------------------+----------------------------+ | | cf. ``kite.hTracksReservedLocal`` | +-----------------------------------+------------------+----------------------------+ -| ``katana.eventsLimit`` | TypeInt | :cb:`4000002` | +| ``katana.eventsLimit`` | ``Int`` | :cb:`4000002` | | +------------------+----------------------------+ | | The maximum number of segment displacements, | | | this is a last ditch safety against infinite | | | loop. It's perhaps a little too low for big | | | designs | +-----------------------------------+------------------+----------------------------+ -| ``katana.ripupCost`` | TypeInt | :cb:`3` | +| ``katana.ripupCost`` | ``Int`` | :cb:`3` | | +------------------+----------------------------+ | | Differential introduced between two ripup | -| | cost to avoid a loop between two ripped up | +| | costs to avoid a loop between two ripped up | | | segments | +-----------------------------------+------------------+----------------------------+ -| ``katana.strapRipupLimit`` | TypeInt | :cb:`16` | +| ``katana.strapRipupLimit`` | ``Int`` | :cb:`16` | | +------------------+----------------------------+ | | Maximum number of ripup for *strap* segments | +-----------------------------------+------------------+----------------------------+ -| ``katana.localRipupLimit`` | TypeInt | :cb:`9` | +| ``katana.localRipupLimit`` | ``Int`` | :cb:`9` | | +------------------+----------------------------+ | | Maximum number of ripup for *local* segments | +-----------------------------------+------------------+----------------------------+ -| ``katana.globalRipupLimit`` | TypeInt | :cb:`5` | +| ``katana.globalRipupLimit`` | ``Int`` | :cb:`5` | | +------------------+----------------------------+ | | Maximum number of ripup for *global* segments,| | | when this limit is reached, triggers topologic| | | modification | +-----------------------------------+------------------+----------------------------+ -| ``katana.longGlobalRipupLimit`` | TypeInt | :cb:`5` | +| ``katana.longGlobalRipupLimit`` | ``Int`` | :cb:`5` | | +------------------+----------------------------+ | | Maximum number of ripup for *long global* | | | segments, when this limit is reached, triggers| @@ -443,11 +449,11 @@ Python/Stratus scripts can be executed either in text or graphical mode. .. note:: **How Cgt Locates Python Scripts:** |cgt| uses the Python ``import`` mechanism to load Python scripts. - So you must give the name of your script whitout ``.py`` extention and - it must be reachable through the ``PYTHONPATH``. You may uses the + So you must give the name of your script whithout ``.py`` extension and + it must be reachable through the ``PYTHONPATH``. You may use the dotted module notation. -A Python/Stratus script must contains a function called ``ScriptMain()`` +A Python/Stratus script must contain a function called ``ScriptMain()`` with one optional argument, the graphical editor into which it may be running (will be set to ``None`` in text mode). The Python interface to the editor (type: :cb:`CellViewer`) is limited to basic capabilities @@ -462,15 +468,15 @@ For more explanation on Python scripts see :ref:`Python Interface to Coriolis`. Printing & Snapshots -------------------- -Printing or saving into a |pdf| is fairly simple, just uses the **File -> Print** +Printing or saving into a |pdf| is fairly simple, just use the **File -> Print** menu or the |CTRL_P| shortcut to open the dialog box. The print functionality uses exactly the same rendering mechanism as for the screen, beeing almost *WYSIWYG*. Thus, to obtain the best results it is advisable to select the ``Coriolis.Printer`` look (in the *Controller*), which uses a -white background and much suited for high resolutions ``32x32`` pixels patterns +white background and well suited for high resolutions ``32x32`` pixels patterns -There is also two mode of printing selectable through the *Controller* +There is also two modes of printing selectable through the *Controller* **Settings -> Misc -> Printer/Snapshot Mode**: =============== ================= ===================================================== @@ -500,12 +506,12 @@ The main application binary is |cgt|. +---------------+-------------------+-----------------------------------------------------------+ | Category | Keys | Action | +===============+===================+===========================================================+ -| **Moves** | | |KeyUp|, | Shift the view in the according direction | +| **Moves** | | |KeyUp|, | Shifts the view in the according direction | | | |KeyDown| | | | | | |KeyLeft|, | | | | |KeyRight| | | +---------------+-------------------+-----------------------------------------------------------+ -| **Fit** | |KeyF| | Fit to the Cell abutment box | +| **Fit** | |KeyF| | Fits to the Cell abutment box | +---------------+-------------------+-----------------------------------------------------------+ | **Refresh** | |CTRL_L| | Triggers a complete display redraw | +---------------+-------------------+-----------------------------------------------------------+ @@ -557,19 +563,19 @@ The main application binary is |cgt|. | **Open/Close**| |CTRL_O| | Opens a new design. The design name must be | | | | given without path or extention. | | +-------------------+-----------------------------------------------------------+ -| | |CTRL_W| | Close the current viewer window, but do not quit | +| | |CTRL_W| | Closes the current viewer window, but does not quit | | | | the application. | | +-------------------+-----------------------------------------------------------+ -| | |CTRL_Q| | `CTRL+Q` quit the application | +| | |CTRL_Q| | `CTRL+Q` quits the application | | | | (closing all windows). | +---------------+-------------------+-----------------------------------------------------------+ -| **Hierarchy** | |CTRL_Down| | Go one hierarchy level down. That is, if there | -| | | is an *instance* under the cursor position, load | -| | | it's *model* Cell in place of the current one. | +| **Hierarchy** | |CTRL_Down| | Goes one hierarchy level down. That is, if there | +| | | is an *instance* under the cursor position, loads | +| | | its *model* Cell in place of the current one. | | +-------------------+-----------------------------------------------------------+ -| | |CTRL_Up| | Go one hierarchy level up. if we have entered | +| | |CTRL_Up| | Goes one hierarchy level up. If we have entered | | | | the current model through |CTRL_Down| | -| | | reload the previous model (the one | +| | | reloads the previous model (the one | | | | in which this model is instanciated). | +---------------+-------------------+-----------------------------------------------------------+ @@ -582,9 +588,9 @@ Appart from the obvious ``--text`` options, all can be used for text and graphic +-----------------------------+------------------------------------------------+ | Arguments | Meaning | +=============================+================================================+ -| `-t|--text` | Instruct |cgt| to run in text mode. | +| `-t|--text` | Instructs |cgt| to run in text mode. | +-----------------------------+------------------------------------------------+ -| `-L|--log-mode` | Disable the uses of |ANSI| escape sequence on | +| `-L|--log-mode` | Disables the use of |ANSI| escape sequence on | | | the |tty|. Useful when the output is | | | redirected to a file. | +-----------------------------+------------------------------------------------+ @@ -595,15 +601,15 @@ Appart from the obvious ``--text`` options, all can be used for text and graphic | | (|Etesian|). | +-----------------------------+------------------------------------------------+ | `--events-limit=` | The maximal number of events after which the | -| | router will stops. This is mainly a failsafe | -| | against looping. The limit is sets to 4 | +| | router will stop. This is mainly a failsafe | +| | against looping. The limit is set to 4 | | | millions of iteration which should suffice to | | | any design of `100K`. gates. For bigger | -| | designs you may wants to increase this limit. | +| | designs you may want to increase this limit. | +-----------------------------+------------------------------------------------+ -| `-G|--global-route` | Run the global router (|Katana|). | +| `-G|--global-route` | Runs the global router (|Katana|). | +-----------------------------+------------------------------------------------+ -| `-R|--detailed-route` | Run the detailed router (|Katana|). | +| `-R|--detailed-route` | Runs the detailed router (|Katana|). | +-----------------------------+------------------------------------------------+ | `-s|--save-design=` | The design into which the routed layout will | | | be saved. It is strongly recommanded to choose | @@ -632,43 +638,43 @@ Miscellaneous Settings +=======================================+==================+============================+ | **Verbosity/Log Parameters** | +---------------------------------------+------------------+----------------------------+ -| ``misc.info`` | TypeBool | :cb:`False` | +| ``misc.info`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ -| | Enable display of *info* level message | +| | Enables display of *info* level message | | | (:cb:`cinfo` stream) | +---------------------------------------+------------------+----------------------------+ -| ``misc.bug`` | TypeBool | :cb:`False` | +| ``misc.bug`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ -| | Enable display of *bug* level message | +| | Enables display of *bug* level message | | | (:cb:`cbug` stream), messages can be a little | | | scarry | +---------------------------------------+------------------+----------------------------+ -| ``misc.logMode`` | TypeBool | :cb:`False` | +| ``misc.logMode`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ -| | If enabled, assume that the output device | -| | is not a ``tty`` and suppress any escaped | +| | If enabled, assumes that the output device | +| | is not a ``tty`` and suppresses any escape | | | sequences | +---------------------------------------+------------------+----------------------------+ -| ``misc.verboseLevel1`` | TypeBool | :cb:`True` | +| ``misc.verboseLevel1`` | ``Bool`` | :cb:`True` | | +------------------+----------------------------+ -| | First level of verbosity, disable level 2 | +| | First level of verbosity, disables level 2 | +---------------------------------------+------------------+----------------------------+ -| ``misc.verboseLevel2`` | TypeBool | :cb:`False` | +| ``misc.verboseLevel2`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ | | Second level of verbosity | +---------------------------------------+------------------+----------------------------+ | **Development/Debug Parameters** | +---------------------------------------+------------------+----------------------------+ -| ``misc.minTraceLevel`` | TypeInt | :cb:`0` | +| ``misc.minTraceLevel`` | ``Int`` | :cb:`0` | +---------------------------------------+------------------+----------------------------+ -| ``misc.maxTraceLevel`` | TypeInt | :cb:`0` | +| ``misc.maxTraceLevel`` | ``Int`` | :cb:`0` | | +------------------+----------------------------+ -| | Display trace information *between* those two | +| | Displays trace information *between* those two| | | levels (:cb:`cdebug` stream) | +---------------------------------------+------------------+----------------------------+ -| ``misc.catchCore`` | TypeBool | :cb:`False` | +| ``misc.catchCore`` | ``Bool`` | :cb:`False` | | +------------------+----------------------------+ -| | By default, |cgt| do not dump core. | +| | By default, |cgt| does not dump core. | | | To generate one set this flag to :cb:`True` | +---------------------------------------+------------------+----------------------------+ @@ -688,10 +694,10 @@ The *Controller* window is composed of seven tabs: #. `The Layers&Go Tab`_ to selectively hide/display layers. #. `The Netlist Tab`_ to browse through the |netlist|. Works in association with the *Selection* tab. -#. `The Selection Tab`_ allow to view all the currently selected elements. -#. `The Inspector Tab`_ browse through either the DataBase, the Cell or +#. `The Selection Tab`_ allows to view all the currently selected elements. +#. `The Inspector Tab`_ browses through either the DataBase, the Cell or the current selection. -#. `The Settings Tab`_ access all the tool's configuration settings. +#. `The Settings Tab`_ accesses all the tool's configuration settings. .. _The Look Tab: @@ -714,12 +720,12 @@ The Filter Tab -------------- The filter tab let you select what hierarchical levels of your design will be -displayed. Hierarchy level are numbered top-down: the level 0 correspond to +displayed. Hierarchy level are numbered top-down: the level 0 corresponds to the top-level cell, the level one to the instances of the top-level Cell and so on. There are also check boxes to enable/disable the processing of Terminal Cell, -Master Cells and Compnents. The processing of Terminal Cell (hierarchy leaf +Master Cells and Components. The processing of Terminal Cell (hierarchy leaf cells) is disabled by default when you load a hierarchical design and enabled when you load a single Cell. @@ -731,8 +737,8 @@ unit used to display coordinates. connect two or more parts of net, a *rubber* will be drawn between them to signal the gap. - For example, after the detailed routing no *rubbers* should remains. - They have been made *very* visibles as big violet lines... + For example, after the detailed routing no *rubber* should remain. + They have been made *very* visible as big violet lines... |bcenter| |ControllerFilter_1| |ecenter| @@ -746,7 +752,7 @@ The Layers&Go Tab Control the individual display of all *layers* and *Gos*. -* *Layers* correspond to a true physical layer. From a |Hurricane| point of +* *Layers* correspond to true physical layers. From a |Hurricane| point of view they are all the *BasicLayers* (could be matched to GDSII). * *Gos* stands from *Graphical Objects*, they are drawings that have no physical existence but are added by the various tools to display extra @@ -771,10 +777,10 @@ The *Netlist* tab shows the list of nets... By default the tab is not **Sync Netlist** checkbox. You can narrow the set of displayed nets by using the filter pattern (supports regular expressions). -An very useful feature is to enable the **Sync Selection**, which will +A very useful feature is to enable the **Sync Selection**, which will automatically select all the components of the selected net(s). You can select multiple nets. In the figure the net ``auxsc35`` is selected and -is highlited in the *Viewer*. +is highlighted in the *Viewer*. |bcenter| |ControllerNetlist_1| |ecenter| |bcenter| |ViewerNetlist_1| |ecenter| @@ -785,7 +791,7 @@ is highlited in the *Viewer*. The Selection Tab ----------------- -The *Selection* tab list all the components currently selecteds. They +The *Selection* tab lists all the components currently selected. They can be filtered thanks to the filter pattern. Used in conjunction with the *Netlist* **Sync Selection** you will all see @@ -806,14 +812,14 @@ The Inspector Tab ----------------- This tab is very useful, but mostly for |Coriolis| developpers. It allows -to browse through the live DataBase. The *Inspector* provide three entry points: +to browse through the live DataBase. The *Inspector* provides three entry points: * **DataBase**: Starts from the whole |Hurricane| DataBase. -* **Cell**: Inspect the currently loaded Cell. -* **Selection**: Inspect the object currently highlited in the *Selection* tab. +* **Cell**: Inspects the currently loaded Cell. +* **Selection**: Inspects the object currently highlighted in the *Selection* tab. Once an entry point has been activated, you may recursively expore all -it's fields using the right/left arrows. +its fields using the right/left arrows. .. note:: *Do not put your fingers in the socket:* when inspecting anything, do not modify the DataBase. If any object under inspection diff --git a/documentation/_build/html/_sources/etc/definitions.txt b/documentation/_build/html/_sources/etc/definitions.txt index e9fcc144..d982b82c 100644 --- a/documentation/_build/html/_sources/etc/definitions.txt +++ b/documentation/_build/html/_sources/etc/definitions.txt @@ -26,6 +26,7 @@ .. Acronyms & names. +.. |NDA| replace:: :sc:`nda` .. |OS| replace:: :sc:`os` .. |GNU| replace:: :sc:`gnu` .. |LGPL| replace:: :sc:`lgpl` diff --git a/documentation/_build/html/_sources/index.txt b/documentation/_build/html/_sources/index.txt index 128ae2b5..dfb158f6 100644 --- a/documentation/_build/html/_sources/index.txt +++ b/documentation/_build/html/_sources/index.txt @@ -15,7 +15,6 @@ Contents: UsersGuide/index.rst PythonTutorial/index.rst Stratus/index.rst - ConfigurationTechnology/index.rst Hurricane/Hurricane.rst Viewer/Viewer.rst CrlCore/CrlCore.rst diff --git a/documentation/_build/html/defapi/defapi.html b/documentation/_build/html/defapi/defapi.html index 6b7985e1..152a33aa 100644 --- a/documentation/_build/html/defapi/defapi.html +++ b/documentation/_build/html/defapi/defapi.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -534,7 +524,7 @@ under the Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -543,7 +533,7 @@ under the Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/etc/definitions.html b/documentation/_build/html/etc/definitions.html index becc3729..bab3a603 100644 --- a/documentation/_build/html/etc/definitions.html +++ b/documentation/_build/html/etc/definitions.html @@ -83,6 +83,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -103,14 +104,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -389,11 +384,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -517,7 +507,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -526,7 +516,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/genindex.html b/documentation/_build/html/genindex.html index 884cfb5f..3347753a 100644 --- a/documentation/_build/html/genindex.html +++ b/documentation/_build/html/genindex.html @@ -84,6 +84,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -104,14 +105,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -390,11 +385,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -524,7 +514,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -533,7 +523,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/index.html b/documentation/_build/html/index.html index 7338e4c3..3a8d808b 100644 --- a/documentation/_build/html/index.html +++ b/documentation/_build/html/index.html @@ -84,6 +84,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -104,14 +105,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -390,11 +385,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -508,7 +498,7 @@

    Coriolis 2 documentation

    - Documentation generated on May 27, 2019. + Documentation generated on Oct 28, 2019.

    Documentation Topics

    @@ -606,7 +596,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -615,7 +605,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/lefapi/lefapi.html b/documentation/_build/html/lefapi/lefapi.html index dbc8ed23..c51a8c90 100644 --- a/documentation/_build/html/lefapi/lefapi.html +++ b/documentation/_build/html/lefapi/lefapi.html @@ -85,6 +85,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -105,14 +106,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -391,11 +386,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -565,7 +555,7 @@ and configured when the subsequent Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -574,7 +564,7 @@ and configured when the subsequent Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/lefdef/lefdef.html b/documentation/_build/html/lefdef/lefdef.html index b77dea74..5a002372 100644 --- a/documentation/_build/html/lefdef/lefdef.html +++ b/documentation/_build/html/lefdef/lefdef.html @@ -84,6 +84,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -104,14 +105,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -390,11 +385,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -531,7 +521,7 @@ under the Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -540,7 +530,7 @@ under the Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/objects.inv b/documentation/_build/html/objects.inv index 7a7e06fe..1c6a3455 100644 Binary files a/documentation/_build/html/objects.inv and b/documentation/_build/html/objects.inv differ diff --git a/documentation/_build/html/search.html b/documentation/_build/html/search.html index ffe85a26..ea100862 100644 --- a/documentation/_build/html/search.html +++ b/documentation/_build/html/search.html @@ -83,6 +83,7 @@
  • Release v2.1
  • Release v2.2
  • Release v2.3
  • +
  • Release v2.4
  • Complete Design Flow & Examples
  • @@ -103,14 +104,8 @@
  • Coriolis Configuration & Initialisation
  • CGT - The Graphical Interface
      @@ -389,11 +384,6 @@
  • -
  • Configuration & Technonology -
  • Hurricane Reference
  • Viewer Reference
  • CRL Core Reference
  • @@ -527,7 +517,7 @@ Generated by Sphinx - using a RTD theme on May 27, 2019. + using a RTD theme on Oct 28, 2019. @@ -536,7 +526,7 @@ Coriolis 2 Documentation - © Copyright 2000-2018, UPMC. + © Copyright 2000-2019, Sorbonne Université. diff --git a/documentation/_build/html/searchindex.js b/documentation/_build/html/searchindex.js index 37240a83..b4216bbe 100644 --- a/documentation/_build/html/searchindex.js +++ b/documentation/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:49,filenames:["Analog/Analog","ConfigurationTechnology/Architecture","ConfigurationTechnology/index","ConfigurationTechnology/pdfHeader","Contents","CrlCore/CrlCore","Hurricane/Hurricane","Katabatic/Katabatic","Kite/Kite","Oroshi/Oroshi","PythonCpp/Configuration","PythonCpp/DBoHierarchy","PythonCpp/DBoStandalone","PythonCpp/DbU","PythonCpp/Introduction","PythonCpp/Name","PythonCpp/NonDBo","PythonCpp/index","PythonTutorial/AdvancedTopics","PythonTutorial/CellNetComponent","PythonTutorial/CgtScript","PythonTutorial/Collections","PythonTutorial/Environment","PythonTutorial/Introduction","PythonTutorial/Netlist","PythonTutorial/RealDesigns","PythonTutorial/ToolEngines","PythonTutorial/definitions","PythonTutorial/index","PythonTutorial/pdfHeader","RDS/RDSpage","RDS/index","Stratus/Developper","Stratus/DpGen","Stratus/Language","Stratus/Patterns","Stratus/index","Unicorn/Unicorn","UsersGuide/Configuration","UsersGuide/DesignFlow","UsersGuide/Installation","UsersGuide/LicenseCredits","UsersGuide/Releases","UsersGuide/ScriptsPlugins","UsersGuide/ViewerTools","UsersGuide/index","Viewer/Viewer","defapi/defapi","etc/definitions","index","lefapi/lefapi","lefdef/lefdef"],objects:{},objnames:{},objtypes:{},terms:{"005\u00b5m":30,"01\u00b5m":50,"09\u00b5m":30,"0b0001":33,"0b000111":33,"0b0010":34,"0b0110":34,"0b10":34,"0b1001":34,"0b1010":33,"0b1100":33,"0b1110":34,"0b1111":33,"0cm":29,"0x0000ffff":33,"0x14":34,"100k":44,"150k":44,"180nm":38,"18\u00b5m":30,"1\u00b5m":30,"1cm":29,"2\u00b5m":30,"2cm":29,"32b":40,"32x32":44,"3cm":29,"45nm":[22,25],"4cm":29,"64b":40,"8cm":29,"abstract":11,"boolean":[4,12,32],"case":[1,4],"catch":12,"char":12,"class":[4,10],"const":[33,34],"default":[11,22,30,32,33,34,35,38,40,42,43,44,50],"else":33,"export":[10,11,12,23,40,42,43],"final":[19,30,40,42,44],"float":[19,35,38],"function":[4,10,11,12,13,14,16],"goto":44,"import":[1,11,12,14,19,23,24,25,26,33,34,38,40,41,42,43,44],"int":16,"long":[13,23,44],"new":[11,12,16],"null":[11,12,13,14,16,33],"public":[23,42],"r\u00e9my":41,"return":[11,12,13,14,16,19,20,21,23,24,26,33,34,38,43,44],"short":[14,40],"static":[11,12,13,14,16,23,25,33,40],"supp\u00e9rior":43,"switch":40,"transient":[19,50],"true":[1,19,20,22,24,26,30,32,33,34,38,43,44],"try":[19,34,38,44],"universit\u00e9":[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],"void":[11,12,16,23],"while":[13,19,21,23,24,39,44,50],__add__:32,__and__:32,__c:[11,12,14,16],__div__:32,__geslice__:32,__getitem__:32,__init__:32,__invert__:32,__le__:32,__main__:43,__mul__:32,__name__:43,__or__:32,__python_module:14,__python_module__:[11,14,16],__str__:23,__xor__:32,_add:32,_alia:32,_and:32,_ariti:32,_baseobject:11,_bl:43,_br:43,_buff:32,_clock:38,_comp:32,_ct:43,_db:32,_direct:32,_div:32,_ext:32,_h_type:32,_hur_cel:32,_hur_inst:32,_hur_mastercel:32,_hur_net:32,_ind:32,_insref:32,_ior:43,_lib0:32,_map:32,_model:32,_mult:32,_mux:32,_name:[32,35],_nb_alims_vertical:32,_nb_inst:32,_nb_pin:32,_nb_vdd_pin:32,_nb_vss_pin:32,_not:32,_object:[11,12,13,16],_or:32,_param:32,_plac:32,_px:38,_pyobject:11,_real_model:32,_real_net:32,_reg:32,_shift:32,_st_cell:32,_st_ck:32,_st_inst:32,_st_mastercel:32,_st_merg:32,_st_port:32,_st_sig:32,_st_vdd:32,_st_vsss:32,_stim:34,_sym:32,_tab_nets_cat:32,_tab_nets_out:32,_tl:43,_to_cat:32,_to_merg:32,_tr:43,_type:32,_undercel:32,_xor:32,a2_1:[24,26],a2_2:[24,26],a2_x2:[24,26,34],abc:42,abil:34,abl:[14,20,23,25],about:[4,12],abov:[12,19,20,34,38,44],absolut:[16,19,35],abtument:34,abut:[19,24,26,34,43,44],abutmentbox:34,accept:[35,44],access:[11,21,24,34,35,40,42,44],access_class:11,access_object:11,accessor:12,accessorili:43,accomod:43,accord:[1,30,38,43,44],accordingli:14,account:44,accross:14,accumul:35,accur:42,accuraci:44,achiev:42,acknowledg:33,across:[30,38,44],act:10,action:44,activ:[4,20,30],actual:[30,33,35,43,44],adapt:[22,43],add:[4,12,20,24],add_python_modul:[10,14],add_sub:33,addaccu:4,addd:34,added:42,adder:[33,34],adder_8:33,adding:12,addit:[22,33,34,38,39,40,44],addition:34,additionn:4,addmode:38,addon:[39,40],addpat:4,address:33,addtyp:[11,12],adjac:[18,43],adjust:42,adopt:19,adr:33,advantag:1,advis:44,adw:33,affect:4,affect_ani:4,affect_fix:4,affect_int:4,affili:42,after:[12,19,20,24,25,26,32,34,35,40,43,44],afterward:33,again:[11,12,22,25,40],against:[12,14,25,42,44],ago:14,aim:[23,42],alc_env:40,alexandr:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],algorithm:[21,42,44],alia:[22,32,34,40],alias:44,alim:34,alimconnector:34,aliment:[4,32],alimhorizontalrail:34,alimverticalrail:34,all:[12,14,18,19,21,23,24,26,30,32,34,35,38,40,41,42,43,44],allianc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30],alliance_top:38,allianceconfig:38,alliancetop:38,alloc:[12,23,44],allow:[12,18,19,21,24,30,33,34,35,38,40,42,44],almost:[11,22,38,43,44],alon:[19,39],along:[16,44],alongsid:40,alpha:42,alphanumer:34,alreadi:[14,21,28,29,34,38,40,44],also:[8,19,21,23,24,25,30,34,40,43,44],altern:[38,42,44],alternat:40,although:[30,42,44],alu1:[30,34],alu2:34,alu3:34,alu4:34,alu5:34,alu6:34,alu:34,alux:30,alwai:[12,14,24,33,34,35,50],am2901:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42],amd2901:43,amd2901_ior:43,amd64:40,amend:38,among:19,amount:[33,50],amp:41,ana:8,anabat:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],analys:40,analysi:44,analyt:[42,44],and2:[33,34],and2_8:33,and3:33,and3_16:33,and4:33,and4_2:33,anded:33,ani:[1,14,16,19,20,21,22,23,24,25,30,34,35,40,43,44],anneal:42,anonym:21,anoth:[4,14,25,32],another:14,ansi:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],anti:44,any:44,anymor:30,anyth:[38,43,44],anywher:44,apach:[47,50,51],api:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],appart:44,appear:[12,24,44],append:[21,34,38,43],appertur:44,appli:[14,24,30,33,34,35,38],applic:44,appropri:[12,34],approx:44,apt:40,architectur:4,archiv:25,area:[24,26,30,38,44],arg0:[12,13,16],arg1:[12,16],arg:[11,12,13,14,16,34],argument:[4,11,12,13,19,20,24,32,33],arith:34,arithmet:[4,32,33],ariti:[32,34,35],army:44,around:[13,26,34,43,44],arrow:44,art:44,articul:[19,24],aside:[38,43],asign:35,asim:[34,40],asimut:34,ask:[24,30],aspect:[14,26,38,44],aspectratio:[26,38,44],assembl:38,assign:44,assignment:44,associ:[10,11,12,14,16,24,30,44],associat:[4,11],assum:[25,28,29,44],assume:24,asymetr:30,attempt:13,attribut:[4,11,16,23,29],author:34,autocmd:34,automat:[22,26,32,34,35,40,43,44],automaticali:34,autotool:40,auxsc35:44,avail:[0,5,6,7,8,9,14,19,22,34,37,38,39,40,42,46,47,50,51],avala:[42,44],avoid:[24,30,43,44,50],avot:35,awar:[24,30,33,44],axi:30,back:[34,40,42],background:44,backquot:22,bad:11,balanc:44,base:[4,7,8],bashrc:[22,40],basi:33,basic:4,basiclay:44,bdo:16,becaus:[11,20,26,30,40,42,44],becom:[11,23,34,43,44],bee:[34,44],been:[12,14,19,20,21,23,24,32,33,34,38,42,43,44],befor:[20,24,32,34,35,40,44,50],before:35,beforehand:44,begin:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],behav:33,behavior:[12,14,16,32,33,34],behaviour:44,belloeil:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],belong:[19,34,38,50],below:[12,14,23,24,26,30,32,34,38,43,44],benchmark:44,bend:30,best:[16,44],better:24,between:[14,18,23,24,30,33,34,35,38,40,42,43,44],bewteen:24,bfd:40,big:[30,34,44],bigger:44,biggest:24,biggestarea:24,bigvia:30,biject:24,bin:[19,24,26,34,40],binari:[34,35,40,44],bind:38,binutil:40,bison:40,bit:[30,32,33,34,44],black:[22,38],bleugri:29,blif:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],blink:44,blob:42,block:[14,23,33,43],blockag:[30,38,43],blockage:38,bluntli:16,blur:44,boil:30,bood:34,boost:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],booth:34,bootstrap:40,borrow:14,botch:4,both:[19,26,30,32,34,38,40,43,44],bother:12,bottom:[30,34,43],bound:[38,44],bourn:22,box:14,brace:23,branch:4,breakpoint:19,bring:14,brows:[38,44],buf:34,buf_x2:43,buff_32:33,buffer:[4,32,33],bufnewfil:34,bufread:34,bug:[22,38,40,42,44],build:[4,10,12,14,19,24,30,38,39],buildfulladd:[24,26],buildinvertor:[19,20],built:38,bull:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],bunch:12,bundl:40,buri:18,buse:[32,34],buse_8:33,buss:33,button:44,bzip2:40,c2r:[22,40],c30:33,c31:33,c_temp:34,c_x_n:30,c_x_p:30,ca2:[34,35],cach:43,cad:34,cadenc:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],calcul:[34,35],call:[11,12,13,14,16,19,20,21,22,23,24,25,26,32,33,34,35,40,43,44,49],callback:49,calu1:34,calu2:34,calu3:34,calu4:34,calu5:34,calu6:34,calu:34,calux:30,camel:12,can:[1,11,14,18,19,20,21,22,23,24,25,26,30,33,34,35,38,39,40,42,43,44,50],candid:24,cannot:[14,19,23,24,30,33,44],capabl:[14,38,40,43,44],capac:44,capacitor:33,capit:12,captur:4,care:[14,26,34,43,44],carry_1:[24,26],carry_2:[24,26],cast:[11,12],cat:34,catal:38,catalog:[19,21,24,26,38],catchcor:[1,22,38,44],categori:44,caus:[22,40],cbug:44,ccb:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],cdebug:44,ceil:33,cell:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],cell_1:34,cellnet:21,cellstop:38,cellview:[20,44],center:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],centerend:30,cerr:[11,12],certain:[16,35],cfg:38,cgt:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],ch_htree_bl_tl:43,cham:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],chang:[11,16,23,24,33,34,38,42,43,44],chaput:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],charact:[33,38],check:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],checkbox:44,checker:30,checkout:40,chip:[4,34,42],chmod:34,choic:4,choos:[1,12,34,44],chosen:[32,34],chotin:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],chri:[40,41],christian:41,christoph:41,chu:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],cian:39,cif:30,cin:[24,26,34],cinfo:44,circuit:4,circular:34,ck_htree:43,ck_htree_bl:43,ck_htree_bl_bl:43,ckin:[32,34,35],ckok:33,clariti:[11,19],class_nam:34,classic:[14,22,38,40],clean:38,cleaner:24,cleanli:[12,42],clear:[16,43,44],clearer:34,clement:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],click:44,clifford:39,clock:[4,32,33,34,38],clocktre:[38,43],clone:[22,40,44],close:[12,19,20,23,24,26,38,40,42,43,44],closer:34,clue:14,cluster:44,clutter:44,cmake:[0,1,2,3,4,5,6,7,8,9],cmd0:34,cmd1:34,cmd2:34,cmd:[33,34],cmo:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],cnchu:41,cnrs:29,cobject:13,code:[11,12,14,16,19,22,23,24,38,42,43],coher:[23,44],collect:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],collector:23,coloquint:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],color:34,com:[40,47,50,51],combin:[24,40,42],come:44,command:[4,34,40,43],commit:40,common:[12,14,29,30,33,34,38,42,43,44],commpos:44,commun:[12,14,16],comp:11,compar:35,comparaison:34,comparison:[4,32],compat:4,compatibilti:42,compil:[14,40,44],complement:[33,35],complet:[4,10,12,14],completli:[14,19,42,44],complex:[1,14,30],compliant:40,compnent:44,compon:[4,11,14,18],compos:[24,44],compris:44,comput:[1,14,19,24,33,34,35,38,43,44],concaten:34,concept:[19,23,24,28,29],conceptor:[32,34],concret:[11,34],conditionn:33,conf:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],configurationtechnolog:2,confus:24,congest:44,conjunct:44,connect:[18,19,23],connectmap:34,connector:[4,19,30],connexion:[23,32,34],consecut:43,consequ:[11,24,30,42,50],consid:[10,24,30],consisti:40,const_0x0000ffff:33,constant:[4,30,33],construct:[16,23,24,34],constructor:[12,14,16],constructorerror:[12,14,16],constval0:33,constval1:33,constval2:33,constval3:33,constval:33,cont_body_n:[30,34],cont_body_p:[30,34],cont_dif_n:[19,30,34],cont_dif_p:[19,30,34],cont_poly:[19,30,34],cont_turn1:34,cont_turn2:34,cont_turn3:34,cont_turn4:34,cont_turn5:34,cont_turn6:34,cont_via2:30,cont_via3:30,cont_via4:30,cont_via5:30,cont_via:30,cont_viax:30,contact1:24,contact2:24,contact:[11,14,19,24,30,34,44],contain:[10,14,19,20,21,22,23,25,30,34,35,38,42,43,44],contdifn:19,contdifp:19,content:1,conterpart:[7,8,30],contest:44,context:43,contpoli:19,contributor:41,control:[4,14,23,24,30,33,34],conveni:12,convent:[14,19],convers:[4,12,19,21],convert:[12,13,16,19,23,30,35],coodin:34,coordin:[19,23,24,30,32,34,44],copi:[16,23,34,40,44],copuupseg:34,copyright:[41,47,50,51],copyupseg:4,copyupsegmentseccopi:34,cordin:34,core:4,corioli:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37],coriolis2:[1,10,19,22,24,26,38,40,42,43],coriolis_install:22,coriolis_top:[1,22],coriolisconfigur:38,coriolisenv:[4,22],coriolisinit:38,corner:[19,24,30,34],corona:[42,43],correct:[34,44],correctli:[26,34],correspond:[32,34,35,44],corrioli:40,cost:44,cougar:30,could:[1,21,23,34,38,43,44],count:[14,43,44],coupl:44,cours:23,cout:[21,24,26,34],cover:30,cpp:[10,12,14],craft:43,crash:[40,44],creat:[10,11,12,14,16],createcel:[19,20,24,26],creation:[4,19,23,24,26,32],creativ:29,creativecommon:29,credit:4,crl:[0,1,2,3,4],crl_cata_lib:34,crlcore:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],crude:44,crypt:1,csh:40,ctrl:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],cumbersom:14,cumulu:40,current:[19,26,34,35,38,40,43,44],cursor:44,cwd:38,cycl:35,cyclop:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],cygwin:40,damien:41,dangl:14,darwin:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],data:[4,33],databas:[12,14,19,21,23,24,32,42,44,50],database:50,datain0:33,datain1:33,datain:33,dataout:33,date:35,dbit:34,dbo:4,dbodeletemethod:[11,12],dbodestroyattribut:[11,12],dbolinkcreatemethod:[11,12,16],dbu:4,debian:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39],debug:[4,20],decim:34,declar:[4,12,19],declar_interfac:4,decod:33,decor:44,decoupl:42,decreas:44,dedic:[1,11,23,34],deep:42,deeper:11,deepli:[18,44],def:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46],defab:4,defaultstyl:[22,38],defaultvalu:38,defin:[10,11,12,14,16,19,30,32,33,34,35,38,42,43,44],define:30,definit:[10,11,12,22],degre:34,delet:[12,14,16,21,23,32,38,44],delta:[30,34],demo:39,demot:30,denser:44,densiti:[38,44],depend:[1,10,30,34,40,42,43],deplib:10,depth:44,deriv:4,derivedobject:11,describ:[25,30,34,35,38,43],descript:[4,11],descrob:34,design:4,design_r:44,desir:34,despit:38,destroi:[11,12,16,21,23],detail:[4,19,22,24,26,38,41,42],detector:33,deterior:34,determin:12,determinist:44,dev:40,devel:[40,42],devel_anabat:[40,42],develop:[4,26],developp:4,devic:44,devtoolset:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],dff:43,dff_4:33,dfft_4:33,diagon:40,dialog:44,dict:[21,34],dictionari:[12,20,21],dictionnari:[12,20,32,34,43],did:[14,25,40,44],differ:[11,16,21,24,30,32,33,34,38,43,44],differenti:44,difficult:[40,44],diffus:30,digit:[26,34],digitalinit:26,dimens:[30,34,44],direct:[11,12,14,16,30,32,34,35,38,44],directdeletemethod:16,directdestroymethod:16,directgetlongattribut:[11,13,16],directionn:16,directli:[14,20,23,25,26,35,40,43,44],directsetlongattribut:[13,16],disabl:[23,35,44],disambigu:30,disclaim:4,disconnect:24,discoupl:43,discrep:25,diseappear:30,displac:44,displai:[12,24,38,44],display:44,distanc:[25,30,50],distinguish:[30,44],distribut:[4,39],disturb:43,ditch:44,divid:35,divis:34,dksdir:25,dl_export:[11,12],dobreak:[19,20,24,26],doc:[16,19,24,26,34,40],dochip:43,document:[2,14,17,18,23,24,28,31,34,36,38,40,42,43,44,45],docutil:40,doe:[12,23,25,34,38,40,42],doesn:[34,44],dogleg:44,don:[12,22,23,40,43,44],done:[12,19,34,38,44],dosometh:[23,43],dot:[42,44],dotfil:41,doubl:14,down:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],download:[40,44],doxygen:[0,5,6,7,8,9,37,40,43,46],dozen:44,dp_sxlib:38,dpgen:4,dpgenadsb2f:4,dpgenand2:4,dpgenand3:4,dpgenand4:4,dpgenbuff:4,dpgenbus:4,dpgenconst:4,dpgendff:4,dpgendfft:4,dpgenfifo:4,dpgeninv:4,dpgenmux2:4,dpgennand2:4,dpgennand2mask:4,dpgennand3:4,dpgennand4:4,dpgennbus:4,dpgennmux2:4,dpgennor2:4,dpgennor2mask:4,dpgennor3:4,dpgennor4:4,dpgennul:4,dpgenor2:4,dpgenor3:4,dpgenor4:4,dpgenram:4,dpgenrf1:4,dpgenrf1d:4,dpgenrf1dr0:33,dpgenrf1r0:33,dpgenrom2:4,dpgenrom4:4,dpgensff:4,dpgensfft:4,dpgenshift:4,dpgenshrot:4,dpgenxnor2:4,dpgenxnor2mask:4,dpgenxor2:4,dpi:44,drain:30,draw:[19,30,44],drawback:42,drawn:44,drc:30,drive:[33,43],driven:38,drop:[40,42],druc:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],due:[38,44],dumb:38,dummi:[22,38,40,43],dump:[21,40,42,44],duplic:34,dupui:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],dure:[35,44],durole:41,dvipng:40,dx1:34,dx2:34,dy1:34,dy2:34,dyld_framework_path:40,dyld_library_path:22,dynam:[14,23,33,40],dynamic_cast:11,each:[1,12,14,16,24,30,32,33,34,35,38,43,44],eas:[20,38],easi:34,easier:[30,32,34],easiest:40,easili:[23,38,44],east:[34,43],edg:[30,43,44],edit:40,editor:[4,19,20,24,26,30,32],edu:41,effect:[33,35,44],effort:[26,38,44],egin:35,ego:20,eight:34,either:[12,30,33,34,35,40,43,44],el7_64:40,electr:23,electric:30,element:[1,19,21,32,44],elif:34,els:[1,11,12,14,16,34,38],emit:12,empti:[29,33,44],emul:[12,40],enabl:[4,33],encapsul:[4,11,12],encompass:14,encount:50,encrypt:1,end:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],endif:[11,12,14,16],endl:[11,12,21],endswith:[21,38],enforc:24,eng:41,engin:26,engineloadgrbynet:26,enginenonetlayerassign:26,enough:[24,34,43],enrich:23,ent:11,enter:44,entir:14,entiti:11,entitycast:11,entri:[22,38,43,44],enumer:[34,38],env:34,envelop:34,envenli:44,environ:[4,19],epel:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],eplac:44,eponym:[43,44],equal:[33,34,44],equip:39,equival:[23,24,34,44,50],eras:[43,44],error:[1,4,11,12,14,26,33],esc:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],escap:44,escassut:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],especi:19,essai:34,essenti:[40,44],etc:[1,19,22,29,34,38,40,43],etesian:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],etesianengin:26,eval:[22,40],even:[24,30,33,42,43],event:[35,44],eventslimit:44,ever:21,everi:[12,32,34,38,44],everybodi:26,everyth:[12,38,44],exacltli:30,exact:[19,43],exactli:[20,30,40,43,44],examin:40,exampl:[1,4,10,11,12,13],except:[12,19,32,34],excess:44,execut:4,exempl:[32,34,44],exist:[1,21,22,34,38,44,50],exit:[43,44],expand:30,expansion:34,expect:[1,13,24,38,43],expens:13,experi:44,explain:24,explan:[19,44],explanat:30,explanatori:[12,23],explicit:[13,19,24],explicitli:23,expor:44,expos:[12,14,21],exposur:14,express:[19,23,25,30,34,38,44,50],ext:30,extand:34,extend:[30,32,34],extens:[4,19,20],extent:[38,43,44],extern:[11,12,14,16,19,23,24,32,34],extra:[38,40,44],extract:[12,35],extractor:30,extreme:38,face:34,facil:4,fact:[11,14,39],factor:[42,44,50],fail:[11,12,44],failsaf:44,failur:44,fairli:44,fall:40,fals:[1,11,12,22,32,33,34,38,44],familiar:[14,28,29],fanci:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],far:[14,31],fashion:14,fast:[38,44],fc13:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],fc23:40,fc_64:40,featur:44,fedora:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],feedthru:44,feel:23,fgr:44,fhs:40,field:[11,12,16,44],fifo:33,fifo_4_16:33,figur:[30,34,44],file_nam:34,filenam:[34,35,38],filesystem:[1,40],fillcel:4,filler:24,filler_1:24,filler_2:24,filter:[4,24],find:[24,34,38,40],fine:44,finger:44,finish:[19,32,34],first:[4,10,12],fit:[19,20,24,26,34,44],five:30,fix:[4,19,30,35],flag:[19,23,24,26,30,33,40,44],flatten:[18,43,44],flavor:[12,16],flex:40,flip:33,flop:33,flow:[4,34],flute:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],fly:24,follow:[10,11,12,14,19,23,30,33,34,35,38,40,43,44],fonction:34,font:40,footprint:44,forc:[12,35,43,44],forens:40,forget:22,forgot:1,forgotten:34,form:[1,34,38,44],format:[1,25,34,35,42,44],found:[14,19,24,26,34,38,40],founder:30,foundri:[19,30,42,43],four:[12,30,33,43,44],fourth:33,framework:[19,21,24,26,40,42],franck:30,free:[26,44],freebsd:40,freed:23,freedpk:22,freepdk45:25,freepdk:25,freepdk_45:[1,22],french:40,from:[11,12,13,14,16,19,21,23],fromlambda:[19,23,24,26],ftp:39,full:[1,33],fulladd:[24,26,34],fulli:[19,26,42,43],fuse:[19,23],futur:14,gabriel:41,gap:44,garbag:23,gate:[30,33,44],gaug:[30,38,43,44],gcc:40,gcell:44,gdb:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],gdsii:44,gener:[0,4,5,6,7,8,9],generic_method_head:[11,12,16],genlib:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],geometr:[30,34,43],get:[12,13,14,18],get_cata_lib:32,getcel:[11,12,21,24,26],getcompon:21,getdb:[19,24],getenv:38,getheight:11,gethostnam:1,getlay:[19,24],getmasternet:24,getnam:21,getnet:[11,21,24,26],getobjectid:[12,16],getplug:[24,26],getrefxy:4,getstr:[23,44],gettechnolog:[19,24],getwidth:11,getx:[11,13,16],gety:[11,16],ghdl:34,gigant:14,git:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],github:40,give:[10,11,19,30,32,33,34,42,44],given:[11,12,14,19,20,24,30,32,33,34,35,38,40,43,44],global:[4,12,24,30,38,41,42],globallengththreshold:44,globalripuplimit:44,gnu:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],goal:23,goe:14,good:[10,44],gouvin:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],gpl:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],graal:30,graphic:[4,22,38,40,42,43],graphviz:40,great:43,greater:[34,42],grew:44,grid:[4,19],ground:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],group:[23,42],gscl45nm:25,guarded:33,gui:40,guid:4,hack:4,had:30,halfadd:34,hand:30,handl:[19,34,43],hard:[33,38],has_kei:[19,20,24,26,38,43],hasn:44,have:[1,11,12,14,16,19,21,23,24,26,30,32,33,34,35,38,40,42,43,44,50],haven:34,hcatch:[11,12,13,14,16],head:4,header:4,hecadecim:34,height:[11,14,29,30,34,44],help:[20,40],helper:[4,12,22],here:[0,5,6,7,8,9,12,14,24,25,30,35,37,38,39,40,44,46,47,50,51],herit:32,hesit:43,hexa:34,hexadecim:[34,35],hfill:29,hidden:42,hide:44,hierach:34,hierarchi:4,high:[26,38,44],highest:44,highlight:4,highlit:44,himself:[32,34],histor:30,hmeti:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],hoc:[42,44],hold:[11,14,19,44],holder:18,hole:30,home:[1,20,25,34,38,40,41],homedir:38,hook:[4,12],hope:14,horizont:[11,19,23,24,30,34,43,44],hostnam:1,how:[4,18,19,21,23,24,30,33],howev:38,href:29,hspace:43,html:[34,39,40],htrackreservedloc:44,htracksreservedloc:44,htry:[11,12,13,14,16],http:[29,39,40,41,47,50,51],huge:29,hugo:41,hundredth:19,hur_techno_name:34,hurricaneerror:11,hurricaneplug:32,hwidth:43,hypernet:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17],i0_20:34,i386:40,iastat:41,idea:44,ident:[11,34,38,44],identifi:[38,43,44],ifndef:[11,12,16],illegal:34,illustr:[19,24,25,43],imag:[29,44],imcomplet:42,immediatli:44,implant:30,implement:[12,14,23,26,38,42,44,49],implemet:38,impli:[16,23],imposs:34,improv:44,improve:42,in0:34,in1:[33,34],in2:[33,34],in3:[33,34],in4:33,in_lo:38,in_ph:38,includ:[10,11,12,14,16,23,34,40,42,44],include:40,includegraph:29,inclus:44,incompat:34,increas:[30,44],inde:44,indeed:[32,34],indent:23,index:[30,34,49],indic:[32,34],indirect:11,individu:[30,44],infinit:[22,40,44],info:[22,38,44],inform:[14,19,20,30,44,50],inherit:[12,32],init:[12,16],inithurrican:[11,12],initi:[11,12,35,38,44],initialis:[4,12,22,32,34,35],innov:42,inout:[32,34],input:[32,33,34,35,42],insert:[19,38,43],insid:[12,19,20,26,30,43,44],inspect:44,inspector:4,inst:[32,33,34],inst_adsb2f:33,inst_and2:33,inst_and3:33,inst_and4:33,inst_buff:33,inst_bus:33,inst_const:33,inst_dff:33,inst_dfft:33,inst_fifo:33,inst_inv:33,inst_mux2:33,inst_nand2:33,inst_nand2mask:33,inst_nand3:33,inst_nand4:33,inst_nbus:33,inst_nmux2:33,inst_nor2:33,inst_nor2mask:33,inst_nor3:33,inst_nor4:33,inst_nul:33,inst_or2:33,inst_or3:33,inst_or4:33,inst_ram:33,inst_rf1:33,inst_rf1d:33,inst_rom2:33,inst_rom4:33,inst_sff:33,inst_sfft:33,inst_shift:33,inst_shrot:33,inst_xnor2:33,inst_xnor2mask:33,inst_xor2:33,instal:[1,10,19,22,24,25,26,38,40,44],install:4,installat:4,instanc:[4,14,19,23],instanci:[4,11,32],instanciat:[4,32],instanti:4,instantiat:[32,34],instead:[1,11,14,16,22,25,34,40,44],instens:38,insti:33,insto:33,instop:33,instruct:[34,40,44],instshamt:33,insul:12,integ:[19,35,38],integer_word_length:35,integr:[12,42,43],intend:44,interact:20,interfac:[4,12,14,19,22,23,24,32,33,34,35,38,42],intermedi:4,intern:[32,34,35],internat:29,interpret:[22,43],interrupt:12,intersect:30,intert:33,interv:34,introduc:[19,42,43,44],introduct:4,inv:34,inv_54:33,inv_x1:21,invalid:[11,12,14,16],inversor:34,invert:[30,33],inverter:33,invertor:[19,20],invok:34,iopadgaug:43,iowa:41,isdir:[1,38],isn:[34,35],isobar:[10,11,12,13,14,16],isobar_py_component_h:11,isobar_py_contact_h:11,isobar_py_entity_h:11,isobar_py_point_h:16,ispd:44,ispycompon:11,ispycontact:11,ispyentiti:11,ispyhorizont:11,ispylibrari:12,ispypoint:16,ispyvert:11,issu:[14,26],istself:10,ital:44,item:44,iter:[21,44],itself:[1,12,30],iwl:35,jean:[29,41],json:42,just:[13,14,20,21,24,25,30,34,38,40,44],katabat:[0,1,2,3,5,6],katana:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],katanaengin:26,keep:[16,26],kei:[12,32,34,43,44],kept:30,keyword:20,kgr:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],kind:[1,19,21,22],kit:8,kite:[0,1,2,3,5,6,7],knife:44,knik:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],know:[12,40,43],known:[24,44,50],kwarg:16,laboratori:29,lambda:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29],lanch:22,lang:40,langag:1,languag:[4,34,35],larg:[29,44],last:[12,35,38,40,44],lastli:[1,12,16],latch:33,later:[16,19,24,42,44],latest:34,latex:40,lauch:43,launch:[20,22,40,43],layer:4,layerassign:26,layout:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],layoutt:38,lbd:19,lcw:30,ld_library_path:22,lead:44,leaf:[18,43,44],least:[38,40,43],lef:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],lefconvertfactor:50,lefdef:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],lefimport:25,lefimporttmpcel:50,left:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],legal:[34,35,42],leght:34,lenght:34,length:[19,30,35],lepka:[22,40,43],less:[14,30,44],let:[16,24,44],letter:34,level:[11,12,13,14,18,19,20,24,30,38,40,42,43,44],lex:40,lgpl:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],lib:[12,25,40,44],libboost:40,libbz2:40,liberti:44,libisobar:14,libqt5svg5:40,libqwt5:40,libqwt:40,librari:[4,10,11],libstdc:40,libxml2:40,licens:[4,29],life:[16,30],like:[11,12,14,20,21,22,23,26,32,33,34,38,40],limit:[23,24,44],line:[4,40,43],linear:44,linebreak:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],link:4,linker:14,linux:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],lip6:[29,39,40],list:[4,10,21,24,32],listdir:38,littl:[20,30,44],live:[14,44],load:[4,19,20],loader:[25,42],loadglobalrout:26,local:[1,38,40,44],localinstal:40,localripuplimit:44,locat:[34,43,44],lofig:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],log2:33,log:44,logic:[8,19,23,24,25,34,35,42,44],logiciel:39,logicin:32,logicinout:32,logicout:32,logicunknown:32,logmod:[1,22,38,44],logo:29,logocc:29,longer:[14,40,44],longglobalripuplimit:44,look:[4,12,16,19,25,38,40],loop:[21,22,33,34,40,44],lot:[24,50],low:44,lower:[19,24,33,34,38,44],lowercas:[12,19],lsb:[32,34],lybrari:12,maco:40,macos:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39],macport:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],macro:[10,11,12,14,16,33,44,50],made:[14,24,25,26,30,32,33,34,40,43,44],mai:[14,16,19,20,21,22,23,24,30,34,38,40,43,44],mailto:29,main:[23,40,42,44],mainli:[38,42,44],maintain:44,make:[12,18],makefil:40,manag:[14,19,23,25,42,43],mandatori:[12,19,22,32,33,34,38],mani:[14,23,30,34],manipul:13,manual:[4,14],map:[4,21,32,33],marek:41,margin:[26,38,44],mark:35,mask:33,masson:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],master:[14,24,26,32,40,42,44],mastercel:[32,34],masterlibrari:12,masternet:24,match:[21,34,38,44],materi:44,matrix:30,mauka:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],max:38,maxim:44,maximum:44,maxtracelevel:[38,44],mayb:34,mbk:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],mbk_:19,mbk_to_rds_bigvia_hole:4,mbk_to_rds_bigvia_metal:4,mbk_to_rds_segment:4,mbk_to_rds_via:4,mbk_wiresetting:4,mean:[14,21,23,25,30,34,38,40,44,50],meaning:[30,33,34],mechan:[12,14,16,18],medskip:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],member:42,memento:4,memori:[19,21,23,43,44],menu:[20,42,44],merg:32,messag:[19,20,24,44],metal1:[19,30],metal2:[24,30],metal3:24,metal5:44,metal:[30,44],meth_noargs:[11,12,16],meth_static:[11,12],meth_varargs:[11,12,16],method:[4,12,13,14,16,23,30],method_head:[11,12,16],micromet:[30,50],micron:25,microns:50,middl:34,migrat:42,million:44,miloyip:40,mimic:[12,38],min:38,minim:30,minimum:[43,44],minimumsid:43,minipag:41,minor:[38,40,44],mintracelevel:[38,44],minut:44,mip:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],mirror:43,misc:[1,22,38,44],miscellan:4,miss:44,mistak:[12,19,34],mistral:34,mix:[7,8,14,26,40],mkdir:40,mode:4,model:[4,19,23,24,30],modelnam:[33,34],modif:[19,21,34,40,44],modifi:[16,21,22,34,40,43,44],modul:[4,10],modular:14,modules_stratu:34,mofi:20,monolith:14,more:[1,11,19,21,23,30,34,38,39,40,42,44],moreov:14,mosi:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],most:[34,38,44],mostli:[10,23,44],mount:1,mous:44,movabl:44,move:44,msb:[32,34],much:[14,32,34,38,44],multipl:[25,30,34,42,44,50],multiplex:33,multiplexor:[4,32],multipli:[30,34],must:[1,10,11,12,14,19,20,22,23,24,25,30,34,35,38,40,43,44],mutat:12,mux2_8:33,mux:[32,34],mx2:34,my_addaccu_:34,my_and2_4bit:34,my_dpgen_and2:34,my_inv:19,myclass:[32,34],myfunc:23,myinst1:34,myinst2:34,myinst3:34,myinst:34,mylib:38,mymap:32,mynet:34,myparam:32,myref:34,myself:18,na2:34,na3:34,na4:34,name:[4,10,11,12,14],namespac:[4,10,11],nand2:33,nand2_8:33,nand2mask_0x0000ffff:33,nand3:33,nand3_20:33,nand4:33,nand4_9:33,nand:33,narrow:44,navig:21,nbit:[33,34],nbit_cmd:33,nbsp:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],nbuse29:33,nck:38,ncsu:25,nda:1,ndadirectori:1,ndif:[19,30,34],nearest:43,need:[10,11,12,14,16,19,22,23,24,26,30,34,38,40,42,44],neg:34,neither:[12,34],nero:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],net8:34,net:[4,11,14,18],neta:34,netb:34,netc:34,netck:34,netcmd:34,netcout:34,netexternalcompon:[19,24],neti0:34,neti1:34,netin:34,netinput:32,netlist:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],netnam:34,neton:34,netout:34,netq:34,nets:34,netv:34,netvdd:34,netvss:34,network:1,never:21,nevertheless:34,newli:[19,34],newnet:34,newpag:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],next:[34,35,40],nimbu:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],nmux2_5:33,nmx2:34,nnnn:44,no2:34,no3:34,no4:34,noflag:26,noindent:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],non:[4,12,14],noncommerci:29,none:[19,20,24,26,32,38,43,44],nor2:33,nor2_8:33,nor2mask_000111:33,nor3:33,nor3_3:33,nor4:33,nor4_15:33,nor:[12,33,34],normal:[26,44],normals:29,north:[34,43],nosym:[33,34],notat:[32,34,44],note:[4,11,12,30,33,34,40],now:[11,24,40,42,44],nterfac:35,ntie:[19,30,34],ntran:[19,34],ntrans:[19,30,34],nul:33,nul_4:33,number:[12,14,16,19,30,32,33,34,35,43,44],nutshel:40,nwell:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],nword:[33,34],nxr2:34,nymous_:21,o2_1:[24,26],o2_x2:[24,26],ob_typ:[11,12,16],object:[11,12,13,14,16,19,20,21,23,24,30,34,38,44],observ:35,obsolet:42,obtain:[30,34,44],obviou:[16,44],obvious:[14,43],obviousli:[14,24,30,43],occur:[14,19,33,34,40],occurr:11,ocp:30,octal:35,odd:[30,43],off:[14,30,34],offset:[30,34],offsetx:34,offsety:34,often:[30,44],old:[14,26,40,42],older:44,ommit:44,onc:[12,14,34],once:[19,43,44],one:[11,24,33,34,43,44],onli:[11,13,14,18,19,20,21,23,24,25,26,30,32,33,34,35,38,40,42,43,44],only:[12,32,33,34,40],open:[19,20,23,24,26,32,34,44],opencham:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],oper:[4,14,23,24,32,33],operand:33,operat:33,opt:40,optim:[33,40],option:[4,12,20,22,32,33,34,35],optional:35,optionali:1,optionn:[33,34],or2:[33,34],or2_8:33,or3:33,or3_5:33,or4:33,or4_16:33,order:[21,24,32,33,34,38,40,44,49],ordere:43,ordinari:[24,38,43],ored:33,org:29,organ:[12,21],organis:42,orient:30,orientat:24,origin:[14,30,44],osu_soc:25,other:[12,13,14,19,20,23,24,30,34,35,38,40,41,42,43,44],otherwis:[14,32,33,34,44],ouput:33,our:[12,14,23,38,40],out:[14,32,33,34],out_lo:38,out_ph:38,outdat:40,outer:42,outil:34,outlin:44,output:[32,33,34,35,42,44],outsid:[10,19,21],over:[13,21,24,26,30],overal:44,overflow:33,overhang:30,overlap:[30,44],overload:[12,19],overloard:[32,34],overrid:22,overwritten:44,own:[11,34,38,40,42,44],owner:19,p_a0:43,p_a1:43,p_a2:43,p_a3:43,p_b0:43,p_b1:43,p_b2:43,p_b3:43,p_cin:[34,43],p_ck:43,p_cout:[34,43],p_d0:43,p_d1:43,p_d2:43,p_d3:43,p_f3:43,p_i0:43,p_i1:43,p_i2:43,p_i3:43,p_i4:43,p_i5:43,p_i6:43,p_i7:43,p_i8:43,p_ng:[34,43],p_noe:43,p_np:[34,43],p_ovr:43,p_q0:43,p_q3:43,p_r0:43,p_r3:43,p_vddeck0:[34,43],p_vddeck1:[34,43],p_vddick0:43,p_vsseck0:43,p_vsseck1:[34,43],p_vssick0:[34,43],p_y0:43,p_y1:43,p_y2:43,p_y3:43,p_y:34,p_zero:43,packag:4,pad:[4,19],pad_east:32,pad_north:32,pad_south:32,pad_west:32,padeast:34,padlib:38,padnorth:34,padsouth:34,padwest:34,page:[24,49],pagestyl:29,pair:[19,34,43],paper:44,para:34,paradigm:38,parallel:40,param:[4,32,33],paramet:[4,12,14,16,24,26],parameterst:[1,22,26,38],parametertyp:38,paramid:38,paranoid:[22,38],parent:12,pars:[11,34],parser:[30,42],part:[4,11],partial:[11,14,42],particular:[12,20,23],partit:43,paseast:34,pass:[14,24,43],paswest:34,pat:35,patamet:34,path:[1,4],pathnam:34,patli:30,pattern:[4,32],pattern_begin:4,pattern_end:4,patwrit:4,paul:[29,41],pdf:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],pdif:[19,30,34],peopl:14,per:34,percentag:[38,44],perform:[12,33,34,38,40,42,43,44],perhap:44,peripheri:34,permit:[33,34],persist:14,phfig:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],phseg:30,phvia:30,physic:[4,19,23],physical:34,physical_grid:30,pictur:[34,44],piec:34,pin:[23,24,34,50],pitch:[30,34],pixel:44,pixmap:44,place:[4,14,18,19,23],placeandrout:26,placebottom:4,placecentr:4,placecontact:4,placed:24,placeglu:4,placeleft:4,placement:[4,24,26,32,34,38,42],placementstatu:24,placepin:4,placer:4,placeref:4,placeright:4,placeseg:4,placetop:4,plain:13,plane:43,pleas:[19,34,40],plot:34,plu:34,plug:[18,19,23],plugin:4,point1:34,point2:34,point:[12,13,14,16,19,23,24,30,34,35,38,43,44],pointer:[11,12,14,16],poli:[19,30,34],polici:38,poly:[19,30,34],polysilicium:30,pop:33,popup:44,port:[32,34,35,40,42],posit:[19,30,34,43,44],possibl:[12,20,23,24,30,34,38,40,43,44],postfix:43,power:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],powerr:4,practic:[10,30],pre:[40,44],preced:35,precis:[14,19,34,50],preclud:42,predic:12,prefix:[30,43],preliminari:42,prepend:38,prerequisit:40,presenc:11,present:[11,21,23,44],press:44,pretti:[25,38],prevent:43,previou:[30,34,38,40,44],previous:[11,12,26,43],print:[1,4,21,23,38],printabl:[2,17,28,31,36,45],printer:44,prior:[19,25,26,44],problem:42,proce:40,procedur:[34,35,36,44],process:[21,22,24,34,38,42,44],produc:35,profil:40,progess:23,program:[12,14,34],programm:33,progress:20,project:40,propag:[43,44],properti:[12,35],proprieti:35,protocol:21,provid:[1,4,12,13,14,19,22],proxyerror:13,ptie:[30,34],ptqt4:40,ptran:[19,34],ptrans:[19,30,34],pub:[39,40],pull:40,pure:[22,23,38,44],purist:30,purpos:[20,34,44],push:33,pust:34,put:[12,14,16,30,34,38,42,43,44],pwell:[30,34],pxlib:[38,43],py_incref:[11,12],py_initmodul:[11,12],py_library_h:12,py_return_none:[11,13],pyany_aslong:[13,16],pyarg_parsetupl:[12,13,14,16],pycel:[11,12],pycell_link:[11,12],pycfunct:[11,12,16],pycompon:[11,14],pycomponent:11,pycomponent_destroi:11,pycomponent_getnet:11,pycomponent_getx:11,pycomponent_gety:11,pycomponent_link:11,pycomponent_linkpytyp:11,pycomponent_method:11,pycomponent_o:[11,14],pycontact:11,pycontact_cr:[11,14],pycontact_destroi:11,pycontact_getheight:11,pycontact_getwidth:11,pycontact_link:[11,14],pycontact_linkpytyp:11,pycontact_method:11,pycontact_o:11,pycpp:10,pydatabas:12,pydatabase_o:12,pydatabse_o:12,pydbu_fromlong:13,pyentiti:11,pyentity:11,pyentity_destroi:11,pyentity_getcel:11,pyentity_link:11,pyentity_linkpytyp:11,pyentity_method:11,pyentity_new:11,pyentity_o:11,pyerr_clear:14,pyerr_setstr:[11,12,13,14,16],pyhorizont:11,pyhorizontal_link:11,pyhorizontal_o:11,pyhurrican:[10,11,12,16],pyhurricane_method:[11,12],pyinclud:10,pyinstanc:14,pyinstance_link:14,pylay:14,pylayer_o:14,pylibrari:[10,12,14],pylibrary:12,pylibrary_cr:12,pylibrary_dealloc:12,pylibrary_destroi:12,pylibrary_getcel:12,pylibrary_link:12,pylibrary_linkpytyp:12,pylibrary_method:12,pylibrary_o:12,pymethoddef:[11,12,16],pymodule_addobject:[11,12],pynet:[11,14],pynet_link:11,pynet_o:14,pyobject:[11,12,13,14,16],pyobject_head:[11,12,16],pyobject_new:16,pypoint:[13,16],pypoint_dealloc:16,pypoint_getx:[13,16],pypoint_gety:16,pypoint_init:16,pypoint_link:16,pypoint_linkpytyp:16,pypoint_method:16,pypoint_new:16,pypoint_o:16,pypoint_setx:[13,16],pypoint_sety:16,pyqt4:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],pyqt5:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],pyqt:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],pyseg:11,pystring_asstr:12,python27:40,python2:40,python:[0,1,2,3,4,5,6,7,8,9,10],pythoncpp:17,pythonpath:[22,44],pythontutori:28,pytype_ready:[11,12],pytype_ready_sub:11,pytypecompon:[11,14],pytypecontact:11,pytypeent:11,pytypeinheritedobjectdefinit:11,pytypelay:14,pytypelibrari:[10,12],pytypenet:14,pytypeobject:[11,12,16],pytypeobjectdefinit:[12,16],pytypeobjectlinkpytyp:[11,12],pytypeobjectlinkpytypenewinit:16,pytypepoint:16,pytyperootobjectdefinit:11,pyvert:11,pyvertical_link:11,pyvertical_o:11,qt4:40,qt5:40,qtbase5:40,qtbase:40,qtsvg:40,quadri:43,quadruplet:38,quadtre:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],qualiti:44,quantiti:44,quarter:43,queri:19,quit:[32,44],qwt:40,rail:4,ram:[33,43],ram_32_32:33,ram_ct:43,ramlib:38,rang:[34,35],rapidjson:40,rather:44,ratio:[26,38,44],rcw:30,rds:4,rds_activ:30,rds_alu1:30,rds_alu2:30,rds_alu3:30,rds_alu4:30,rds_alu5:30,rds_alu6:30,rds_cont:30,rds_gate:30,rds_ndif:30,rds_nimp:30,rds_pdif:30,rds_pimp:30,rds_poly:30,rds_via1:30,rds_via2:30,rds_via3:30,rds_via4:30,rds_via5:30,reach:[14,44],reachabl:44,read:[12,33,38,42,50],readabl:44,readi:19,real:[4,12,19,21],realli:[40,44],reason:30,recent:[30,34],recommand:44,recommended:35,record:44,rectang:30,rectangl:30,recurs:4,red:44,redefin:[11,38],redefinit:11,redhat:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39],redirect:44,redraw:44,redund:30,ref:33,refin:12,reflect:44,refnam:34,refresh:[32,34,44],reg:[32,34],regard:[23,34],regener:40,regex:40,regexp:38,regist:[4,10,12,32,33],regnumb:33,rel:[19,30,34,35,40],relat:[11,16,24,35,38,40,44],releas:[4,40,41],relev:[11,12,43],reli:[14,30,40,44],reload:44,remain:[11,12,16,21,44],remark:[11,38,44],rememb:11,remind:18,remov:[21,43,44],ren:33,renam:[43,50],render:44,reopen:20,reorganis:43,repeatedli:44,replac:[23,38,42,44],replic:12,repositori:[39,40,42],repoview:39,repres:[24,30,34,35,44,50],represent:44,request:[21,33,43],requir:[4,14,32,38],reserv:44,reset:[12,33,44],resizeab:4,resolut:[23,44],respect:[14,38,44],respons:[12,44],rest:[20,26],restart:[43,44],restructuredtext:40,result:[12,14,20,21,23,24,33,38,44],retain:14,revers:[11,14],revert:[40,42],rewrit:[14,42],rewritten:[42,44],rf1_4_16:33,rf1d_4_16:33,rf2lib:38,rflib:38,rhel6:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],rhel7:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],rhel:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],right:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],ring:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],rip:44,ripup:44,ripupcost:44,rise:[30,34],risk:30,rok:33,rom2_0b1010_0b1100:33,rom4_0b1010_0b1100_0b1111_0b0001:33,rom:33,romlib:38,root:[1,12,14,19,24,26,38,40],roselyn:[35,41],rot_m:34,rot_p:34,rotat:[24,33,34],rotop:33,rout:[4,23,26,30,32],routabl:44,routag:44,routageck:34,routeck:4,router:[4,19],routingdriven:[38,44],row:24,rowend_x0:24,rp1:24,rp2:24,rpm:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],rsave:4,rubber:44,rule:[30,43,44],ruler:44,run:[19,20,22,25,26,34,38,40,43,44],runglobalrout:26,runnabl:19,runnegoci:26,runtim:44,s2r:30,safe:40,safeti:44,sai:[14,22,24,40,43],said:19,sake:[11,19],same:[10,11,14,19,21,24,30,32,34,35,38,44],sarri:33,satur:44,saturateratio:44,saturaterp:44,save:[4,11,12],savecel:[19,24,26],scale:29,scan:33,scarri:44,scheme:[40,43,44],scientif:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],scin:33,scn6m_deep_09:38,scope:23,scout:33,screen:44,script:[1,4,19],scriptmain:[19,20,24,26,43,44],scrub:12,search:[21,38,49],second:[1,4,14,19,24,30,33,34],section:[38,40,50],secur:38,see:[12,14,19,20,23,24,30,32,34,35,38,40,43,44],seem:[30,34,40,42,50],seen:[12,26],sefl:34,segment:[4,19,24],sel0:33,sel1:33,sel:33,select:[4,24,33],self:[11,12,13,16,23,32,33,34,35,38],selr:33,selram:33,selw:33,semant:23,send:30,sens:44,sensit:34,sentinel:[11,12,16],separ:[1,12,14,30,32,40,42,43,44],sequenc:[26,34,44],sequenti:38,serv:[7,8],set:[1,4,10,12,13],setabutmentbox:[19,20,24],setadd:34,setand:34,setbuff:34,setcel:[19,20,24,26],setcomp:34,setdiv:34,seteditor:43,setextern:[19,24,26],setglob:[19,24,26],setmult:34,setmux:34,setnet:[24,26],setnot:34,setor:34,setplacementstatu:24,setrefin:4,setreg:34,setshift:34,settermin:[19,20],settransform:24,setup:[12,19,22,26,38,40],setx:[13,16],setxor:34,sety:16,seven:44,sever:[14,32,34,44],sff2:34,sff3:34,sff:34,sff_4:33,sfft_4:33,shadow:21,shamt:33,shape:[26,30],share:[4,10,11],sharealik:29,she:11,shelf:14,shell:[22,34,40],shellsuccess:43,shift:[32,33,34,44],shifter:[4,32,33],shifter_4:33,ship:42,shortcut:4,should:[14,16,22,34,35,40,44],shouldn:30,show:[14,19,21,30,38,44],shown:[12,30,34,38,43],shrot_4:33,si2:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],side:[30,34,43,44],sig:32,sign:[33,34,38],signal:[4,7,8,24,32,33],signalin:[33,34,35],signalinout:[33,34,35],signalout:[33,34,35],signalunknown:34,signatur:[11,12,14],silli:30,similar:[11,44],similarli:35,simpl:[4,25,30,38],simpler:40,simplest:[1,19,38],simpli:[19,21,30,34],simplif:43,simplifi:[22,24,34,40],simul:[34,35,42],sinc:21,singl:44,site:38,size:[30,33,34,35,43,44],skip:21,slanski:34,slice:34,slight:23,sligthli:40,slot:44,slow:44,slsoc6x:40,slsoc6x_64:40,slsoc:39,small:[26,28,29,30,34,38,43,44],smallest:[33,50],smallskip:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],snapshot:4,snx:25,soc:[38,39,40],socket:[1,44],softwar:4,sole:20,solut:44,solv:44,some:[4,14,19,21,23,30,32],someth:[19,23],sometim:24,somewhat:24,sophi:[32,33,34,41],sorbonn:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],sourc:[19,30,34,40,42,44],sout:[24,26,34],sout_1:[24,26],south:[34,43],space:[26,30,34,38,43,44],spacemargin:[26,38,44],span:16,spec:40,special:[12,22,23],specif:[1,12,23,38,43,44],specifi:[33,34,44],speed:44,speedup:42,sphinx:40,spl1:34,split:[14,43,44],spread:[26,44],squar:[26,30],src:40,sroka:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],st_config:34,stabl:[40,42],stack:12,stage:4,stai:30,stamp:35,stand:[39,44],standalon:4,standard:[12,14,16],standard_instances_list:32,standart:[40,43],standpoint:30,start:[23,30,34,44],starter:18,startswith:1,state:[19,21,23,24,26,41,44],statement:50,static_cast:[11,13],statu:24,stechno:43,step:[11,12,30,34,38,40,43,44,50],still:[11,16,31,40,42,44],stimuli:4,stimulu:35,stl:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],stop:[19,20,24,26,43,44],storag:50,store:[12,13,19,23,33,44],straightforward:25,straigthforward:24,strap:44,strapripuplimit:44,strategi:43,stratu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31],stratus1:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],stratus2:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],stratus:34,stratus_mapping_name:34,stream:44,strict:[24,30],string:[12,19,23,33,34,35,38],strip:40,stroke:44,strongli:44,strongly:35,struct:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],stuck:[30,33],stuf:43,stuff:32,stupid:1,style:[12,44],sub:[22,34,35,43],subject:44,subsequ:50,substract:[33,34,44],substractor:33,subtli:21,succe:44,success:43,successful:44,successfulli:[40,44],sudo:40,suffer:44,suffic:44,suffix:43,suit:44,summar:23,summari:43,superpos:44,supli:33,suppli:[12,19],support:[10,12,14,16,23,26,35,40,42,44],suppress:44,sure:43,svn:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],swig:14,swiss:44,sxlib:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],sy_rm:34,sy_rp:34,sym:34,sym_x:34,sym_y:34,symbol:[4,12,19,22,25],symetr:34,symetri:[32,34],symmetri:24,symxy:34,sync:44,synch:44,synonym:26,synopsi:4,syntact:38,syntax:[4,12,23],synthesi:[4,25],synthet:[4,25,42,43],system:[1,24,34,38,40],system_library:38,tab:[4,24,32,34,38],table:30,tailor:12,take:[1,12,19,20,26,34,35,44],taken:[14,34,35],talu1:34,talu2:34,talu3:34,talu4:34,talu5:34,talu6:34,talux:30,target:[19,30],task:[11,22,40,44],taxonomi:38,technic:4,techno:1,technolog:1,tediou:[22,24,40],tee:44,tell:[12,19,22,30,32,33,38,40,43],temp:34,temp_ext:34,tempext:34,templat:14,temporari:50,ten:14,term:[34,41],termin:4,terminolog:19,test:[4,32],testbench:34,texliv:40,text:[34,43,44],textbf:29,textsc:29,textwidth:41,than:[14,30,34,42,44],thank:[14,32,34,43,44],thei:[12,14,19,21,22,23,30,32,34,38,40,42,43,44],them:[12,14,23,26,30,40,43,44],therefor:[24,33],thesi:44,thi:[1,2,11,12,14,16,17,18,19,21,22,23,24,26,28,29,30,31,32,33,34,35,36,38,40,42,43,44,45,50],thing:35,third:[24,30,33,40],thispagestyl:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],those:[11,12,21,22,24,30,32,33,34,38,40,43,44],though:14,three:[1,10,12,24,30,33,44],through:[12,14,18,19],througout:30,thu:[12,23,38,44],tie:30,tie_x0:24,time:[11,14,34,35,44],tmp:23,todai:19,todbu:[19,20,24,26],togeth:[33,42],toggl:44,tolambda:19,too:[14,26,30,34,44],tool:[4,14,20,22,23],toolchain:44,toolengin:26,toolkit:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],top:[34,40,43,44],topolog:44,toproutinglay:44,total:44,toward:[14,22,34],tp_compar:12,tp_dealloc:12,tp_hash:12,tp_init:16,tp_method:12,tp_new:16,tp_repr:12,tp_str:12,trace:[12,44],track:44,track_spacing_alu1:30,track_spacing_alu2:30,track_spacing_alu3:30,track_spacing_alu4:30,track_spacing_alu5:30,track_spacing_alu6:30,track_spacing_alu7:30,track_spacing_alu8:30,track_width_alu1:30,track_width_alu2:30,track_width_alu3:30,track_width_alu4:30,track_width_alu5:30,track_width_alu6:30,track_width_alu7:30,track_width_alu8:30,transform:[12,23],transistor:30,transit:35,translat:[24,30],transmiss:14,transpar:30,tricki:14,trigger:[38,44],tristat:[32,33,34,35],tristate:32,trough:43,truli:38,trunk:38,tty:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],tupl:[1,38],turn:[19,24,43,44],tutori:4,tweak:44,twenti:34,twentu:34,twice:[14,21,34],two:[11,14,18,19,20,22,23,24,26,30,32,33,34,35,38,40,42,43,44],type:[1,4,10,11],typebool:[1,22,26,38,44],typedef:[11,12,13,16],typedoubl:38,typeenumer:[26,38],typeint:[38,43,44],typeopt:38,typepercentag:[26,38,44],typerul:38,typestr:[38,43,44],typetab:38,typetitl:38,typic:[12,38,43],ubuntu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39],uint64_t:13,unabl:40,unbound:13,uncheck:24,undef:[11,34],undefined:34,under:[4,12,14,19,20,22,24,25,26,29,30,38],underli:14,underscor:34,understand:[14,40,49],uneed:24,unexpectedli:21,unicorn:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36],unifi:44,uniform:[26,38],uniformdens:[26,38,44],uniquif:44,uniquifi:44,unit:[13,14],units:50,univers:41,unknown:32,unlik:40,unlike:[18,19,42],unlink:38,unmov:44,unpackag:40,unplaced:32,unpredict:21,unrout:44,unselect:44,unsign:33,until:[24,26,44],unzoom:44,updat:12,updatesess:[19,20,23,24,26],upgrad:40,upmc:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],upon:[14,34,36,39,44],upper:[19,30,33,34,44],uppercas:19,usabl:[16,19,30],usage:[30,44],use:[22,34,35,40],used:[33,44],useful:[4,32],user:4,usersguid:45,using:19,usr:[19,24,26,34],usual:[11,12,19,23],utf:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],val0:33,val1:33,val2:33,val3:33,val:44,valgrind:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],valid:[12,14,33,43],valu:[1,4,11,12,16,22],variabl:[1,12,19,22,30,34,38],variable_nam:1,variant:33,variou:[12,14,19],vbe:[32,44],vdd:[19,24,26,32,33,34,35,38],vddin:[32,33,34,35],vector:[21,34,35],verbos:44,verboselevel1:[1,22,38,44],verboselevel2:[1,22,38,44],veri:[26,38,40,44],version:[2,4,10,17,28,31,36,39],vertic:[11,19,24,30,34,43,44],vertiv:34,vhdl:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],via12:[24,34],via1:34,via23:[24,34],via24:34,via25:34,via26:34,via2:34,via34:34,via35:34,via36:34,via3:34,via45:34,via46:34,via4:34,via56:34,via5:34,via:30,view:[12,19,21,23],viewer:[0,4,19,20,24,38,42,43],vim:34,vimrc:34,violet:44,virtual:[4,18],visibl:[19,44],visual:[30,44],visualis:19,vlsi:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],vlsisapd:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],vspace:43,vss:[19,24,26,32,33,34,35,38],vssin:[32,33,34,35],vst:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],vtrackreservedloc:44,vtracksreservedloc:44,vwidth:43,w7_64:40,w8_64:40,wai:[12,13,14,19,23,26,30,34,40,43,44],walk:44,walkthrough:21,wallac:34,want:[11,12,14,19,20,21,22,24,32,34,38,40,44],warn:14,wave:40,weak:44,weakli:19,weari:21,weekli:24,well:[18,24,30,32,34,43,44],wen:33,were:[40,44],west:[34,43],wether:34,what:[12,14,20,24,30,34,44],whatev:[38,40,44],when:[1,13,14,22,30,32,33,34,38,40,43,44,50],where:[10,24,25,35,38,40,44],whether:[11,21,43,44],which:[1,10,11,12,16,19,20,22,23,24,30,32,34,35,38,40,41,42,43,44,50],white:44,whitespac:44,whithout:[38,43],whitout:44,whole:[11,30,33,42,43,44,50],whose:[23,38],why:[12,14],wich:34,wide:38,widget:[40,42],width:[11,14,19,30,33,34,44],width_vdd:30,width_vss:30,wil:21,window:[38,40,44],witch:20,within:[34,44],without:[19,20,30,32,33,34,42,44],wok:33,won:14,word:[33,34,35],word_length:35,work_dir:19,work_lib:21,workhors:18,working_library:38,worklib:38,world:19,wors:44,would:[13,14,21,34,38],wrap:[10,12,14],wrapper:[12,14,26,38],write:[14,18,21,33,34,35,38,43,44],written:[12,14,15,16,19,21,23,38],wrong:34,www:[39,40,47,50,51],wysiwyg:44,x86_64:[39,40],x_grid:30,xml:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,34,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],xnor2:33,xnor2_8:33,xnor2mask_0b000111:33,xnor:33,xor2:[33,34],xor2_8:33,xor:33,xored:33,xoring:33,xr2:34,xr2_1:[24,26],xr2_2:[24,26],xr2_x1:[24,26],xr2_x2:[24,26],xxxx:40,y_grid:30,y_slice:30,yacc:40,year:[14,44],yet:[11,34,40,44],yield:34,yifei:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51],yosi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],you:[1,14,19,20,21,22,23,24,25,26,28,29,30,33,34,35,38,40,43,44],your:[4,14,19,20,22,25],yum:40,zero:[14,30,33,34],zoom:44},titles:["Hurricane/Analog Reference","1. Configuration File Workings","Configuration & Technonology","Configuration & Technology","Comprenhensive Table of Contents","CRL Core Reference","Hurricane Reference","Katabatic Reference","Kite Reference","Oroshi Reference","2. Basic File Structure and CMake configuration","4. Case 2 - Hierarchy of DBo Derived Classes","3. Case 1 - DBo Derived, Standalone","6. Encapsulating DbU","1. Introduction","7. No C++ Hurricane::Name encapsulation","5. Case 3 - Non-DBo Standalone Classe","Hurricane Python/C++ API Tutorial","9. Advanced Topics","3. Making a Standard Cell – Layout","5. Make a script runnable through cgt","4. Manipulating Cells, Nets and Components","2. Setting up the Environment","1. Introduction","6. Making a hierarchical Cell – Netlist","7. Working in real mode","8. Tool Engines (CRL Core)","<no title>","Hurricane+Python Tutorial","<no title>","Symbolic Layout","RDS – Symbolic to Real Conversion in Alliance","Stratus Developper’s Guide","DpGen generators manual","Stratus User’s Guide","Patterns module User’s Guide","Stratus : Netlist Capture Language","Unicorn Reference","Coriolis Configuration & Initialisation","Complete Design Flow & Examples","Installation","Credits & License","Release Notes","Python Interface for Hurricane / Coriolis","CGT - The Graphical Interface","Coriolis User’s Guide","Viewer Reference","DEF API Reference","<no title>","Welcome to Coriolis’s documentation!","LEF API Reference","LEF/DEF Language Reference"],titleterms:{"boolean":34,"case":[11,12,16,24],"class":[11,12,16,32],"function":[18,34],"new":19,about:[14,21],abutment:19,activ:40,add:34,addaccu:34,adding:19,additionn:40,addpat:35,advanc:18,affect:34,affect_ani:35,affect_fix:35,affect_int:35,aliment:34,allianc:[31,38,40,44],allianceframework:[19,21],am2901:43,analog:0,anoth:34,api:[17,47,50],architectur:38,argument:34,arithmet:34,associat:12,attribut:32,base:[11,44],basic:10,blif:25,botch:14,box:19,branch:40,breakpoint:20,buffer:34,build:40,call:50,callback:50,captur:[36,44],cell:[19,21,24,34],cgt:[20,44],chip:43,choic:14,circuit:34,clock:43,cmake:10,collect:21,command:44,comparison:34,compat:40,complet:[19,24,26,39],compon:[19,21,30],comprenhens:4,configur:[1,2,3,10,22,34,38,44],connect:24,connector:34,constant:34,constructor:23,content:[3,4],control:44,convers:31,copyupseg:34,core:[5,19,26],corioli:[38,40,43,45,49],coriolisenv:40,creat:[19,24],creation:34,credit:41,crl:[5,19,26],data:[34,44],dbo:[11,12,16],dbu:[13,19],debian:40,debug:40,declar:35,declar_interfac:35,def:[47,51],defab:34,deriv:[11,12],descript:[32,34,35],design:[14,39,44],detail:44,develop:40,developp:32,directori:[1,40],disclaim:14,disk:19,distribut:40,document:49,dpgen:[33,34],dpgenadsb2f:33,dpgenand2:33,dpgenand3:33,dpgenand4:33,dpgenbuff:33,dpgenbus:33,dpgenconst:33,dpgendff:33,dpgendfft:33,dpgenfifo:33,dpgeninv:33,dpgenmux2:33,dpgennand2:33,dpgennand2mask:33,dpgennand3:33,dpgennand4:33,dpgennbus:33,dpgennmux2:33,dpgennor2:33,dpgennor2mask:33,dpgennor3:33,dpgennor4:33,dpgennul:33,dpgenor2:33,dpgenor3:33,dpgenor4:33,dpgenram:33,dpgenrf1:33,dpgenrf1d:33,dpgenrom2:33,dpgenrom4:33,dpgensff:33,dpgensfft:33,dpgenshift:33,dpgenshrot:33,dpgenxnor2:33,dpgenxnor2mask:33,dpgenxor2:33,editor:34,enabl:40,encapsul:[13,15],engine:26,environ:[22,40],error:34,etesian:[26,44],exampl:[19,24,26,34,35,39,43],execut:[34,44],extens:34,facil:34,file:[1,10,11,12,16,19,22,24,25,30,34,38],fillcel:34,filter:44,first:[14,38],fix:40,flow:39,from:24,gener:[23,33,34,38],get:19,getrefxy:34,global:44,graphic:44,grid:30,guid:[32,34,35,45],hack:38,head:12,header:[11,12,16],helper:38,hierarch:[18,24],hierarchi:11,highlight:34,hook:40,how:34,hurrican:[0,6,15,17,19,21,28,43,44],hypernet:18,implement:50,indice:49,initialis:38,inspector:44,install:40,installat:40,instanc:[24,32,34],instanci:34,instanciat:34,instanti:34,interfac:[43,44],intermedi:11,introduct:[14,23,34],katabat:7,katana:[26,44],kind:23,kite:8,lambda:30,languag:[36,51],layer:[19,44],layout:[19,30,34],lef:[25,50,51],librari:[12,34],licens:41,line:44,link:[12,34],list:34,load:[21,25,38,44],look:44,macos:40,make:[19,20,24],manipul:21,manual:33,map:34,mbk_to_rds_bigvia_hole:30,mbk_to_rds_bigvia_metal:30,mbk_to_rds_segment:30,mbk_to_rds_via:30,mbk_wiresetting:30,measur:19,mechan:19,memento:44,method:[32,34,35],miscella:18,miscellan:44,mode:[25,44],model:32,modul:[11,12,34,35],multiplexor:34,name:[15,34],namespac:12,net:[19,21,24,32,34],netlist:[24,34,36,44],non:16,note:[42,50],occurrenc:18,oper:34,option:44,order:50,oroshi:9,packag:[34,40],pad:34,param:34,paramet:[32,34,35,44],part:[12,35],path:[22,34],pattern:[34,35],pattern_begin:35,pattern_end:35,patwrit:35,physic:[24,30],place:[24,34],placebottom:34,placecentr:34,placecontact:34,placeglu:34,placeleft:34,placement:43,placepin:34,placer:[26,44],placeref:34,placeright:34,placeseg:34,placetop:34,plug:24,plugin:43,power:24,powerr:34,print:44,provid:34,python:[11,12,17,28,43,44],rail:34,rds:[30,31],real:[25,31],recurs:43,redhat:40,refer:[0,5,6,7,8,9,37,46,47,50,51],regist:34,regular:24,releas:42,requir:40,resizeab:34,restrict:21,rout:34,routeck:34,router:[26,44],routingpad:[18,24],rsave:43,runnabl:20,save:[19,43],script:[20,44],second:38,segment:30,select:[38,44],session:19,set:[19,22,40,44],setrefin:34,share:12,shifter:34,shortcut:44,signal:34,simpl:43,snapshot:44,softwar:38,some:34,special:24,stage:38,standalon:[12,16],standard:19,stimuli:34,stratu:[32,34,36,44],structur:[1,10],suppli:24,symbol:[30,31],synopsi:[32,34],syntax:[34,35],synthesi:44,synthet:44,tab:44,tabl:[4,30,49],technic:14,techno:22,technolog:[3,38],technonolog:2,termin:11,terminolog:23,test:34,through:20,tool:[26,38,44],topic:18,tran:18,transform:24,tree:[1,40,43],tutori:[17,28],type:12,ubuntu:40,under:[40,44],understand:50,unicorn:37,unit:[19,50],useful:34,user:[22,34,35,45],using:20,valu:[30,34],variou:23,version:40,view:24,viewer:[44,46],virtual:34,welcom:49,wire:24,work:[1,25],yosi:[25,44],your:34}}) \ No newline at end of file +Search.setIndex({envversion:49,filenames:["Analog/Analog","Contents","CrlCore/CrlCore","Hurricane/Hurricane","Katabatic/Katabatic","Kite/Kite","Oroshi/Oroshi","PythonCpp/Configuration","PythonCpp/DBoHierarchy","PythonCpp/DBoStandalone","PythonCpp/DbU","PythonCpp/Introduction","PythonCpp/Name","PythonCpp/NonDBo","PythonCpp/index","PythonTutorial/AdvancedTopics","PythonTutorial/CellNetComponent","PythonTutorial/CgtScript","PythonTutorial/Collections","PythonTutorial/Environment","PythonTutorial/Introduction","PythonTutorial/Netlist","PythonTutorial/RealDesigns","PythonTutorial/ToolEngines","PythonTutorial/definitions","PythonTutorial/index","PythonTutorial/pdfHeader","RDS/RDSpage","RDS/index","Stratus/Developper","Stratus/DpGen","Stratus/Language","Stratus/Patterns","Stratus/index","Unicorn/Unicorn","UsersGuide/Configuration","UsersGuide/DesignFlow","UsersGuide/Installation","UsersGuide/LicenseCredits","UsersGuide/Releases","UsersGuide/ScriptsPlugins","UsersGuide/ViewerTools","UsersGuide/index","Viewer/Viewer","defapi/defapi","etc/definitions","index","lefapi/lefapi","lefdef/lefdef"],objects:{},objnames:{},objtypes:{},terms:{"005\u00b5m":27,"01\u00b5m":47,"09\u00b5m":27,"0b0001":30,"0b000111":30,"0b0010":31,"0b0110":31,"0b10":31,"0b1001":31,"0b1010":30,"0b1100":30,"0b1110":31,"0b1111":30,"0cm":26,"0x0000ffff":30,"0x14":31,"100k":41,"150k":41,"180nm":35,"18\u00b5m":27,"1\u00b5m":27,"1cm":26,"2\u00b5m":27,"2cm":26,"32b":37,"32x32":41,"3cm":26,"45nm":[19,22],"4cm":26,"64b":37,"8cm":26,"abstract":8,"boolean":[1,9,29],"case":1,"catch":9,"char":9,"class":[1,7],"const":[30,31],"default":[8,19,27,29,30,31,32,35,37,39,40,41,47],"else":30,"export":[7,8,9,20,37,39,40],"final":[16,27,37,39,41],"float":[16,32],"function":[1,7,8,9,10,11,13],"goto":41,"import":[8,9,11,16,20,21,22,23,30,31,35,37,38,39,40,41],"int":[13,35,40,41],"long":[10,20,41],"new":[8,9,13],"null":[8,9,10,11,13,30],"public":[20,39],"r\u00e9my":38,"return":[8,9,10,11,13,16,17,18,20,21,23,30,31,35,40,41],"short":[11,37],"static":[8,9,10,11,13,20,22,30,37],"switch":37,"transient":[16,47],"true":[16,17,19,21,23,27,29,30,31,35,40,41],"try":[16,31,41],"universit\u00e9":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],"void":[8,9,13,20],"while":[10,16,18,20,21,36,41,47],__add__:29,__and__:29,__c:[8,9,11,13],__div__:29,__geslice__:29,__getitem__:29,__init__:[29,35],__invert__:29,__le__:29,__main__:40,__mul__:29,__name__:40,__or__:29,__python_module:11,__python_module__:[8,11,13],__str__:20,__xor__:29,_add:29,_alia:29,_and:29,_ariti:29,_baseobject:8,_bl:40,_br:40,_buff:29,_comp:29,_ct:40,_db:29,_direct:29,_div:29,_ext:29,_h_type:29,_hur_cel:29,_hur_inst:29,_hur_mastercel:29,_hur_net:29,_ind:29,_insref:29,_lib0:29,_map:29,_model:29,_mpx:35,_mult:29,_mux:29,_name:[29,32],_nb_alims_vertical:29,_nb_inst:29,_nb_pin:29,_nb_vdd_pin:29,_nb_vss_pin:29,_not:29,_object:[8,9,10,13],_or:29,_param:29,_plac:29,_pyobject:8,_real_model:29,_real_net:29,_reg:29,_shift:29,_st_cell:29,_st_ck:29,_st_inst:29,_st_mastercel:29,_st_merg:29,_st_port:29,_st_sig:29,_st_vdd:29,_st_vsss:29,_stim:31,_sym:29,_tab_nets_cat:29,_tab_nets_out:29,_tl:40,_to_cat:29,_to_merg:29,_tr:40,_type:29,_undercel:29,_xor:29,a2_1:[21,23],a2_2:[21,23],a2_x2:[21,23,31],abc:39,abil:31,abl:[11,17,20,22],about:[1,9],abov:[9,16,17,31,35,40,41],absolut:[13,16,32],abtument:31,abut:[16,21,23,31,40,41],abutmentbox:31,accept:[32,41],access:[8,18,21,31,32,37,39,41],access_class:8,access_object:8,accessor:9,accomod:40,accord:[27,35,39,40,41],accordingli:11,account:41,accross:11,accumul:32,accur:39,accuraci:[39,41],achiev:39,acknowledg:30,across:[27,41],act:7,action:41,activ:[1,17,27],actual:[27,30,32,40,41],adapt:[19,40],add:[1,9,17,21],add_python_modul:[7,11],add_sub:30,addaccu:1,addd:31,added:39,adder:[30,31],adder_8:30,adding:9,addit:[19,30,31,36,37,41],addition:31,additionn:1,addon:[36,37],addpat:1,address:30,addsystem_library:35,addtyp:[8,9],adjac:[15,40],adjust:39,adopt:16,adr:30,advis:41,adw:30,affect:1,affect_ani:1,affect_fix:1,affect_int:1,affili:39,after:[9,16,17,21,22,23,29,31,32,35,37,40,41],afterward:[30,35],again:[8,9,19,22,37],against:[9,11,22,39,41],ago:11,aim:[20,39],alc_env:37,alexandr:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],algorithm:[18,39,41],alia:[19,29,31,37],alias:41,alim:31,alimconnector:31,aliment:[1,29],alimhorizontalrail:31,alimverticalrail:31,all:[9,11,15,16,18,20,21,23,27,29,31,32,35,37,38,39,40,41],allianc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27],alliance_top:35,alliancetop:35,alloc:[9,20,41],allow:[9,15,16,18,21,27,30,31,32,35,37,39,41],almost:[8,19,35,40,41],alon:[16,36],along:[13,35,41],alongsid:37,alpha:39,alphanumer:31,alreadi:[11,18,25,26,31,35,37,41],also:[5,16,18,20,21,22,27,31,37,40,41],altern:[35,39,41],alternat:37,although:[27,39,41],alu1:[27,31],alu2:31,alu3:31,alu4:31,alu5:31,alu6:31,alu:31,alux:27,alwai:[9,11,21,30,31,32,47],am2901:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39],amd2901:40,amd64:37,among:16,amount:[30,47],amp:38,ana:5,anabat:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],analys:37,analysi:41,analyt:[39,41],and2:[30,31],and2_8:30,and3:30,and3_16:30,and4:30,and4_2:30,anded:30,ani:[11,13,16,17,18,19,20,21,22,27,31,32,35,37,40,41],anneal:39,anonym:18,anoth:[1,11,22,29],another:11,ansi:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],anti:41,any:41,anymor:27,anyth:[40,41],anywher:41,apach:[44,47,48],api:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],appart:41,appear:[9,21,41],append:[18,31,35],appertur:41,appli:[11,21,27,30,31,32,35],applic:41,appropri:[9,31],approx:41,apt:37,architectur:1,archiv:22,area:[21,23,27,41],arg0:[9,10,13],arg1:[9,13],arg:[8,9,10,11,13,31],argument:[1,8,9,10,16,17,21,29,30],arith:31,arithmet:[1,29,30],ariti:[29,31,32],army:41,around:[10,23,31,40,41],arrow:41,art:41,articul:[16,21],aside:40,asign:32,asim:[31,37],asimut:31,ask:[21,27],aspect:[11,23,41],aspectratio:[23,41],assign:41,assignment:41,associ:[7,8,9,11,13,21,27,41],associat:[1,8],assum:[22,25,26,41],assume:21,asymetr:27,attempt:10,attribut:[1,8,13,20,26],author:31,autocmd:31,automat:[19,23,29,31,32,37,40,41],automaticali:31,autotool:37,auxsc35:41,avail:[0,2,3,4,5,6,11,16,19,31,34,35,36,37,39,43,44,47,48],avala:[39,41],avoid:[21,27,40,41,47],avot:32,awar:[18,21,27,30,41],axi:27,back:[31,37,39],background:41,backquot:19,bad:8,balanc:41,base:[1,4,5],bashrc:[19,37],basi:30,basic:1,basiclay:41,bdo:13,becaus:[8,17,23,27,37,39,41],becom:[8,20,31,40,41],bee:[31,41],been:[9,11,16,17,18,20,21,29,30,31,35,39,40,41],befor:[17,21,29,31,32,37,41,47],before:32,beforehand:41,begin:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],behav:30,behavior:[9,11,13,29,30,31],behaviour:41,belloeil:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],belong:[16,31,47],below:[9,11,20,21,23,27,29,31,40,41],benchmark:41,bend:27,besid:40,best:[13,41],better:[21,39,41],between:[11,15,20,21,27,30,31,32,35,37,39,40,41],bewteen:21,bfd:37,big:[27,31,41],bigger:41,biggest:21,biggestarea:21,bigvia:27,biject:21,bin:[16,21,23,31,37],binari:[31,32,37,41],bind:35,binutil:37,bison:37,bit:[27,29,30,31,41],black:[19,35],bleugri:26,blif:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],blink:41,blob:39,block:[11,20,30,40],blockag:[27,35,40],bluntli:13,blur:41,boil:27,bood:31,bool:[35,41],boost:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],booth:31,bootstrap:37,borrow:11,botch:1,both:[16,23,27,29,31,35,37,40,41],bother:9,bottom:[27,31,40],bound:41,bourn:19,box:11,brace:20,branch:1,breakpoint:16,bring:11,brows:[35,41],buf:31,buf_x2:40,buff_32:30,buffer:[1,29,30],bufnewfil:31,bufread:31,bug:[19,37,39,41],build:[1,7,9,11,16,21,27,35,36],buildfulladd:[21,23],buildinvertor:[16,17],built:[35,37],bull:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],bunch:9,bundl:37,buri:15,buse:[29,31],buse_8:30,buss:30,button:41,bzip2:37,c2r:[19,37],c30:30,c31:30,c_temp:31,c_x_n:27,c_x_p:27,ca2:[31,32],cach:40,cad:31,cadenc:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],calcul:[31,32],call:[8,9,10,11,13,16,17,18,19,20,21,22,23,29,30,31,32,37,40,41,46],callback:46,calu1:31,calu2:31,calu3:31,calu4:31,calu5:31,calu6:31,calu:31,calux:27,camel:9,can:[8,11,15,16,17,18,19,20,21,22,23,27,30,31,32,35,36,37,39,40,41,47],candid:21,cannot:[11,16,20,21,27,30,41],capabl:[11,37,40,41],capac:[39,41],capacitor:30,capit:9,captur:1,care:[11,23,31,40,41],carry_1:[21,23],carry_2:[21,23],cast:[8,9],cat:31,catal:35,catalog:[16,18,21,23],catchcor:[19,41],categori:41,caus:[19,37],cbug:41,ccb:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],cdebug:41,ceil:30,cell:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],cell_1:31,cellnet:18,cellstop:35,cellview:[17,41],center:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],centerend:27,cerr:[8,9],certain:[13,32],cfg:35,cgt:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],ch_htree_bl_tl:40,cham:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],chang:[8,13,20,21,30,31,35,39,40,41],chaput:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],charact:30,check:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],checkbox:41,checker:27,checkout:37,chip:[1,31,35,39],chmod:31,choic:1,choos:[9,31,35,41],chosen:[29,31],chotin:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],chri:[37,38],christian:38,christoph:38,chu:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],cian:36,cif:27,cin:[21,23,31],cinfo:41,circuit:1,circular:31,ck_htree:40,ck_htree_bl:40,ck_htree_bl_bl:40,ckin:[29,31,32],ckok:30,clariti:[8,16],class_nam:31,classic:[11,19,35,37],clean:39,cleaner:21,cleanli:[9,39],clear:[13,40,41],clearer:31,clement:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],click:41,clifford:36,clock:[1,29,30,31],clocktre:40,clone:[19,37,41],close:[9,16,17,20,21,23,35,37,39,40,41],closer:31,clue:11,cluster:41,clutter:[39,41],cmake:[0,1,2,3,4,5,6],cmd0:31,cmd1:31,cmd2:31,cmd:[30,31],cmo:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],cnchu:38,cnrs:26,cobject:10,code:[8,9,11,13,16,19,20,21,35,39,40],coher:[20,41],collect:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],collector:20,coloquint:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],color:31,com:[37,44,47,48],combin:[21,37,39],come:41,command:[1,31,37,40],commit:37,common:[9,11,26,27,30,31,39,40,41],commpos:41,commun:[9,11,13],comp:8,compar:32,comparaison:31,comparison:[1,29],compat:1,compatibilti:39,compil:[11,37,41],complement:[30,32],complet:[1,7,9,11],completli:[11,16,39,41],complex:[11,27],compliant:37,compon:[1,8,11,15],compos:[21,41],comprehens:1,compris:41,comput:[11,16,21,30,31,32,35,40,41],concaten:31,concept:[16,20,21,25,26],conceptor:[29,31],concret:[8,31],conditionn:30,conf:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],configur:1,confus:21,congest:41,conjunct:41,connect:[15,16,20],connectmap:31,connector:[1,16,27],connexion:[20,29,31],consecut:40,consequ:[8,21,27,39,47],consid:[7,21,27],consist:37,const_0x0000ffff:30,constant:[1,27,30],construct:[13,20,21,31],constructor:[9,11,13],constructorerror:[9,11,13],constval0:30,constval1:30,constval2:30,constval3:30,constval:30,cont_body_n:[27,31],cont_body_p:[27,31],cont_dif_n:[16,27,31],cont_dif_p:[16,27,31],cont_poly:[16,27,31],cont_turn1:31,cont_turn2:31,cont_turn3:31,cont_turn4:31,cont_turn5:31,cont_turn6:31,cont_via2:27,cont_via3:27,cont_via4:27,cont_via5:27,cont_via:27,cont_viax:27,contact1:21,contact2:21,contact:[8,11,16,21,27,31,41],contain:[7,11,16,17,18,19,20,22,27,31,32,35,39,40,41],contdifn:16,contdifp:16,conterpart:[4,5,27],contest:41,context:40,contpoli:16,contributor:38,control:[1,11,20,21,27,30,31],conveni:9,convent:[11,16],convers:[1,9,16,18],convert:[9,10,13,16,20,27,32],coodin:31,coordin:[16,20,21,27,29,31,41],copi:[13,20,31,37,41],copuupseg:31,copyright:[38,44,47,48],copyupseg:1,copyupsegmentseccopi:31,cordin:31,core:1,corioli:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34],coriolis2:[1,7,16,19,21,23],coriolis_install:19,coriolis_top:19,coriolisenv:[1,19],corner:[16,21,27,31],corona:[39,40],correct:[31,41],correctli:[23,31],correspond:[29,31,32,41],corrioli:37,cost:41,cougar:27,could:[18,20,31,35,40,41],count:[11,40,41],coupl:41,cours:20,cout:[18,21,23,31],cover:27,cpp:[7,9,11],craft:40,crash:[37,41],creat:[7,8,9,11,13],createcel:[16,17,21,23],creation:[1,16,20,21,23,29],creativ:26,creativecommon:26,credit:1,crl:[0,1],crl_cata_lib:31,crlcore:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],crude:41,csh:37,ctrl:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],cumbersom:11,cumulu:37,current:[16,23,31,32,37,40,41],cursor:41,cycl:32,cyclop:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],cygwin:37,damien:38,dangl:11,darwin:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],data:[1,30],databas:[9,11,16,18,20,21,29,39,41,47],database:47,datain0:30,datain1:30,datain:30,dataout:30,date:32,dbit:31,dbo:1,dbodeletemethod:[8,9],dbodestroyattribut:[8,9],dbolinkcreatemethod:[8,9,13],dbu:1,debian:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36],debug:[1,17],decim:31,declar:[1,9,16],declar_interfac:1,decod:30,decor:41,decoupl:[39,40],decreas:[39,41],dedic:[8,20,31],deep:39,deeper:8,deepli:[15,41],def:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43],defab:1,defaultstyl:19,defin:[7,8,9,11,13,16,27,29,30,31,32,35,39,40,41],define:27,definit:[7,8,9,19],degre:31,delet:[9,11,13,18,20,29,35,41],delta:[27,31],demo:36,demot:27,denser:41,densiti:41,depend:[7,27,31,37,39,40],deplib:7,depth:41,deriv:1,derivedobject:8,describ:[22,27,31,32,40],descript:[1,8],descrob:31,design:1,design_r:41,desir:31,destroi:[8,9,13,18,20],detail:[1,16,19,21,23,38,39],detector:30,deterior:31,determin:9,determinist:41,dev:37,devel:[37,39],devel_anabat:[37,39],develop:[1,23],developp:1,devic:41,devtoolset:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],dff:40,dff_4:30,dfft_4:30,diagon:37,dialog:41,dict:[18,31],dictionari:[9,17,18],dictionnari:[9,29,31,40],did:[11,22,37,41],differ:[8,13,18,21,27,29,30,31,40,41],differenti:41,difficult:[37,41],diffus:27,digit:[23,31],digitalinit:23,dimens:[27,31,41],direct:[8,9,11,13,27,29,31,32,35,41],directdeletemethod:13,directdestroymethod:13,directgetlongattribut:[8,10,13],directionn:13,directli:[11,17,20,22,23,32,37,40,41],directori:[1,16,19,21,22,23,31,35],directsetlongattribut:[10,13],disabl:[20,32,41],disambigu:27,disclaim:1,disconnect:21,discrep:22,diseappear:27,displac:41,displai:[9,21,41],distanc:[22,27,47],distinguish:[27,41],distribut:[1,36],disturb:40,ditch:41,divid:32,divis:31,dksdir:22,dl_export:[8,9],dobreak:[16,17,21,23],doc:[13,16,21,23,31,37],dochip:40,document:[11,14,15,20,21,25,28,31,33,35,37,39,40,41,42],docutil:37,doe:[9,20,22,31,35,37,39,40,41],doesn:[31,41],dogleg:41,don:[9,19,20,37,40,41],done:[9,16,31,41],dosometh:[20,40],dot:[39,41],dotfil:38,doubl:[11,35],down:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],download:[37,41],doxygen:[0,2,3,4,5,6,34,37,40,43],dozen:41,dpgen:1,dpgenadsb2f:1,dpgenand2:1,dpgenand3:1,dpgenand4:1,dpgenbuff:1,dpgenbus:1,dpgenconst:1,dpgendff:1,dpgendfft:1,dpgenfifo:1,dpgeninv:1,dpgenmux2:1,dpgennand2:1,dpgennand2mask:1,dpgennand3:1,dpgennand4:1,dpgennbus:1,dpgennmux2:1,dpgennor2:1,dpgennor2mask:1,dpgennor3:1,dpgennor4:1,dpgennul:1,dpgenor2:1,dpgenor3:1,dpgenor4:1,dpgenram:1,dpgenrf1:1,dpgenrf1d:1,dpgenrf1dr0:30,dpgenrf1r0:30,dpgenrom2:1,dpgenrom4:1,dpgensff:1,dpgensfft:1,dpgenshift:1,dpgenshrot:1,dpgenxnor2:1,dpgenxnor2mask:1,dpgenxor2:1,dpi:41,drain:27,draw:[16,27,41],drawback:39,drawn:41,drc:27,drive:[30,40],drop:[37,39],druc:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],due:[35,41],dummi:[19,37,40],dump:[18,37,39,41],duplic:31,dupui:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],dure:[32,41],durole:38,dvipng:37,dx1:31,dx2:31,dy1:31,dy2:31,dyld_framework_path:37,dyld_library_path:19,dynam:[11,20,30,37],dynamic_cast:8,each:[9,11,13,21,27,29,30,31,32,35,40,41],eas:17,easi:31,easier:[27,29,31],easiest:37,easili:[20,39,41],east:[31,40],edg:[27,39,40,41],edit:37,editor:[1,16,17,21,23,27,29],edu:38,effect:[30,32,41],effort:[23,41],egin:32,ego:17,eight:31,either:[9,27,30,31,32,37,40,41],el7_64:37,electr:20,electric:27,element:[16,18,29,41],elif:31,els:[8,9,11,13,31,35],emit:9,empti:[26,30,35,41],emul:[9,37],enabl:[1,30],encapsul:[1,8,9],encompass:11,encount:47,end:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],endif:[8,9,11,13],endl:[8,9,18],endswith:18,enforc:21,eng:38,engin:23,engineloadgrbynet:23,enginenonetlayerassign:23,enough:[21,31,40],enrich:20,ent:8,enter:41,entir:11,entiti:8,entitycast:8,entri:[19,35,40,41],enumer:[31,35],env:[31,35],envelop:31,envenli:41,environ:[1,16],epel:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],eplac:41,eponym:[40,41],equal:[30,31,41],equip:36,equival:[20,21,31,41,47],eras:[40,41],error:[1,8,9,11,23,30],esc:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],escap:41,escassut:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],especi:16,essai:31,essenti:[37,41],etc:[16,19,26,31,37,40],etesian:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],etesianengin:23,eval:[19,37],even:[21,27,30,39,40],event:[32,35,41],eventslimit:41,ever:18,everi:[9,29,31,41],everybodi:23,everyth:[9,35,41],exacltli:27,exact:[16,40],exactli:[17,27,37,40,41],examin:37,exampl:[1,7,8,9,10],exce:41,except:[9,16,29,31],excess:41,execut:1,exempl:[29,31,41],exist:[18,19,31,35,41,47],exit:[40,41],expand:27,expansion:31,expect:[10,21,35,40],expens:10,experi:41,explain:21,explan:[16,41],explanat:27,explanatori:[9,20],explicit:[10,16,21],explicitli:20,expor:41,expos:[9,11,18],exposur:11,express:[16,20,22,27,31,35,41,47],ext:27,extand:31,extend:[27,29,31],extens:[1,16,17],extent:41,extern:[8,9,11,13,16,20,21,29,31],extra:[37,41],extract:[9,32],extractor:27,face:31,facil:1,fact:[8,11,36],factor:[39,41,47],fail:[8,9,41],failsaf:41,failur:41,fairli:41,fall:37,fals:[8,9,19,29,30,31,35,41],familiar:[11,25,26],fanci:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],far:[11,28],fashion:11,fast:41,fc13:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],fc23:37,fc_64:37,featur:41,fedora:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],feedthru:41,feel:20,fgr:41,fhs:37,field:[8,9,13,41],fifo:30,fifo_4_16:30,figur:[27,31,41],file:1,file_nam:31,filenam:[31,32],filesystem:37,fillcel:1,filler:21,filler_1:21,filler_2:21,filter:[1,21],find:[21,31,37],fine:41,finger:41,finish:[16,29,31],first:[1,7,9],fit:[16,17,21,23,31,35,39,41],five:27,fix:[1,16,27,32],flag:[16,20,21,23,27,30,37,41],flatten:[15,40,41],flavor:[9,13],flex:37,flip:30,flop:30,flow:[1,31],flute:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],fly:21,follow:[7,8,9,11,16,20,27,30,31,32,37,40,41],fonction:31,font:37,footprint:41,forc:[9,32,40,41],forens:37,forget:19,forgotten:31,form:[31,35,41],format:[22,31,32,39,41],found:[11,16,21,23,31,37],founder:27,foundri:[16,27,39,40],four:[9,27,30,40,41],fourth:30,framework:[16,18,21,23,37,39],franck:27,free:[23,39,41],freebsd:37,freed:20,freedpk:19,freepdk45:22,freepdk:22,freepdk_45:19,french:37,from:[8,9,10,11,13,16,18,20],fromlambda:[16,20,21,23],ftp:36,full:30,fulladd:[21,23,31],fulli:[16,23,39,40],fuse:[16,20],futur:11,gabriel:38,gap:41,garbag:20,gate:[27,30,41],gaug:[27,40,41],gcc:37,gcell:[39,41],gdb:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],gdsii:41,gener:[0,1,2,3,4,5,6],generic_method_head:[8,9,13],genlib:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],geometr:[27,31,40],get:[9,10,11,15],get_cata_lib:29,getcel:[8,9,18,21,23],getcompon:18,getdb:[16,21],getenviron:35,getheight:8,getlay:[16,21],getmasternet:21,getnam:18,getnet:[8,18,21,23],getobjectid:[9,13],getparambool:35,getparamdoubl:35,getparamenumer:35,getparamint:35,getparampercentag:35,getparamstr:35,getplug:[21,23],getrefxy:1,getstr:[20,41],gettechnolog:[16,21],getter:35,getwidth:8,getx:[8,10,13],gety:[8,13],ghdl:31,gigant:11,git:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],github:37,give:[7,8,16,27,29,30,31,39,41],given:[8,9,11,16,17,21,27,29,30,31,32,35,37,40,41],global:[1,9,21,27,38,39],globaliter:41,globallengththreshold:41,globalripuplimit:41,gnu:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],goal:20,goe:[11,41],good:[7,41],gouvin:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],gpl:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],graal:27,graphic:[1,19,35,37,39,40],graphviz:37,greater:[31,39],grew:41,grid:[1,16],ground:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],group:[20,39],gscl45nm:22,guarded:30,gui:37,guid:1,had:27,halfadd:31,hand:27,handl:[16,31,40],hard:30,has_kei:[16,17,21,23,35,40],hasn:41,have:[8,9,11,13,16,18,20,21,23,27,29,30,31,32,35,37,39,40,41,47],haven:31,hcatch:[8,9,10,11,13],head:1,header:1,hecadecim:31,height:[8,11,26,27,31,41],help:[17,37],helper:[9,19,35,37,40],here:[0,2,3,4,5,6,9,11,21,22,27,32,34,36,37,41,43,44,47,48],herit:29,hesit:40,hexa:31,hexadecim:[31,32],hfill:26,hidden:39,hide:41,hierach:31,hierarchi:1,high:[23,41],highest:41,highlight:1,himself:[29,31],histor:27,hmeti:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],hoc:[39,41],hold:[8,11,16,41],holder:15,hole:27,home:[17,22,31,37,38],hook:[1,9,35],hope:11,horizont:[8,16,20,21,27,31,40,41],how:[1,15,16,18,20,21,27,30],howev:35,href:26,hreservedloc:39,hspace:40,html:[31,36,37],htrackreservedloc:41,htracksreservedloc:[35,41],htry:[8,9,10,11,13],http:[26,36,37,38,44,47,48],huge:26,hugo:38,hundredth:16,hur_techno_name:31,hurricaneerror:8,hurricaneplug:29,hwidth:40,hypernet:[0,2,3,4,5,6,7,8,9,10,11,12,13,14],i0_20:31,i386:37,iastat:38,idea:41,ident:[8,31,41],identifi:[35,40,41],ifndef:[8,9,13],illegal:31,illustr:[16,21,22,40],imag:[26,41],imcomplet:39,immediatli:41,implant:27,implement:[9,11,20,23,35,39,41,46],implemet:35,impli:[13,20],imposs:31,improv:41,improve:39,in0:31,in1:[30,31],in2:[30,31],in3:[30,31],in4:30,includ:[7,8,9,11,13,20,31,37,39,41],include:37,includegraph:26,inclus:41,incompat:31,increas:[27,41],inde:41,indeed:[29,31],indent:20,index:[27,31,46],indic:[29,31],indirect:8,individu:[27,41],infinit:[19,37,41],info:[19,41],inform:[11,16,17,27,41,47],inherit:[9,29],init:[9,13],inithurrican:[8,9],initi:[8,9,32,41],initialis:[1,9,19,29,31,32],inner:39,innov:39,inout:[29,31],input:[29,30,31,32,39],insert:[16,35,40],insid:[9,16,17,23,27,40,41],inspect:41,inspector:1,inst:[29,30,31],inst_adsb2f:30,inst_and2:30,inst_and3:30,inst_and4:30,inst_buff:30,inst_bus:30,inst_const:30,inst_dff:30,inst_dfft:30,inst_fifo:30,inst_inv:30,inst_mux2:30,inst_nand2:30,inst_nand2mask:30,inst_nand3:30,inst_nand4:30,inst_nbus:30,inst_nmux2:30,inst_nor2:30,inst_nor2mask:30,inst_nor3:30,inst_nor4:30,inst_nul:30,inst_or2:30,inst_or3:30,inst_or4:30,inst_ram:30,inst_rf1:30,inst_rf1d:30,inst_rom2:30,inst_rom4:30,inst_sff:30,inst_sfft:30,inst_shift:30,inst_shrot:30,inst_xnor2:30,inst_xnor2mask:30,inst_xor2:30,instal:[7,16,19,21,22,23,37,41],install:1,installat:1,instanc:[1,11,16,20],instanci:[1,8,29],instanciat:[1,29],instanti:1,instantiat:[29,31],instead:[8,11,13,19,22,31,37,41],insti:30,insto:30,instop:30,instruct:[31,37,41],instshamt:30,insul:9,integ:[16,32],integer_word_length:32,integr:[9,39,40],intend:[35,41],intens:35,interact:17,interest:35,interfac:[1,9,11,16,19,20,21,29,30,31,32,35,39],intermedi:1,intern:[29,31,32],internat:26,interpret:[19,40],interrupt:9,intersect:27,intert:30,interv:31,introduc:[16,35,39,40,41],introduct:1,inv:31,inv_54:30,inv_x1:18,invalid:[8,9,11,13],inversor:31,invert:[27,30],inverter:30,invertor:[16,17],invok:31,iopadgaug:40,ior:[35,40],iowa:38,isdir:35,isn:[31,32],isobar:[7,8,9,10,11,13],isobar_py_component_h:8,isobar_py_contact_h:8,isobar_py_entity_h:8,isobar_py_point_h:13,ispd:41,ispycompon:8,ispycontact:8,ispyentiti:8,ispyhorizont:8,ispylibrari:9,ispypoint:13,ispyvert:8,issu:[11,23],istself:7,ital:41,item:[39,41],iter:[18,41],itself:[9,27],iwl:32,jean:[26,38],json:39,just:[10,11,17,18,21,22,27,31,35,37,41],katabat:[0,2,3],katana:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],katanaengin:23,keep:[13,23],kei:[9,29,31,40,41],kept:[27,35],keyword:17,kgr:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],kind:[16,18,19],kit:5,kite:[0,2,3,4],knife:41,knik:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],know:[9,37,40],known:[21,41,47],kwarg:13,laboratori:26,lambda:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26],lanch:19,lang:37,languag:[1,31,32],larg:[26,40,41],last:[9,32,35,37,41],lastli:[9,13],latch:30,later:[13,16,21,39,41],latest:31,latex:37,lauch:40,launch:[17,19,37,40],layer:1,layerassign:23,layout:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],lbd:16,lcw:27,ld_library_path:19,lead:41,leaf:[15,40,41],least:[37,40],lef:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],lefconvertfactor:47,lefdef:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],lefimport:22,lefimporttmpcel:47,left:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],legal:[31,32,39],leght:31,lenght:31,length:[16,27,32],lepka:[19,37,40],less:[11,27,41],let:[13,21,41],letter:31,level:[8,9,10,11,15,16,17,21,27,37,39,40,41],lex:37,lgpl:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],lib:[9,22,37,41],libboost:37,libbz2:37,liberti:41,libisobar:11,libqt5svg5:37,libqwt5:37,libqwt:37,librari:[1,7,8],libstdc:37,libxml2:37,licens:[1,26],life:[13,27],like:[8,9,11,17,18,19,20,23,29,30,31,35,37,39],limit:[20,21,41],line:[1,37,40],linear:41,linebreak:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],link:1,linker:11,linux:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],lip6:[26,36,37],list:[1,7,18,21,29],littl:[17,27,41],live:[11,41],load:[1,16,17],loader:[22,39],loadglobalrout:23,local:[37,41],localinstal:37,localripuplimit:41,locat:[31,40,41],lofig:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],log2:30,log:41,logic:[5,16,20,21,22,31,32,39,41],logiciel:36,logicin:29,logicinout:29,logicout:29,logicunknown:29,logmod:[19,35,41],logo:26,logocc:26,longer:[11,37,39,41],longglobalripuplimit:41,look:[1,9,13,16,22,35,37],loop:[18,19,30,31,37,41],lot:[21,47],low:41,lower:[16,21,30,31,41],lowercas:[9,16],lsb:[29,31],lybrari:9,machin:35,maco:37,macos:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36],macport:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],macro:[7,8,9,11,13,30,41,47],made:[11,21,22,23,27,29,30,31,35,37,40,41],mai:[11,13,16,17,18,19,20,21,27,31,35,37,40,41],mailto:26,main:[20,37,39,41],mainli:[35,39,41],maintain:41,make:[9,15],makefil:37,manag:[11,16,20,22,39,40],mandatori:[9,16,19,29,30,31,35,40],mani:[11,20,27,31],manipul:10,manual:[1,11],map:[1,18,29,30],marek:38,margin:[23,41],mark:32,mask:30,masson:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],master:[11,21,23,29,37,39,41],mastercel:[29,31],masterlibrari:9,masternet:21,match:[18,31,35,41],materi:41,matrix:27,mauka:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],maxim:41,maximum:41,maxtracelevel:41,mayb:31,mbk:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],mbk_:16,mbk_to_rds_bigvia_hole:1,mbk_to_rds_bigvia_metal:1,mbk_to_rds_segment:1,mbk_to_rds_via:1,mbk_wiresetting:1,mean:[11,18,20,22,27,31,35,37,41,47],meaning:[27,30,31],mechan:[9,11,13,15],medskip:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],member:39,memento:1,memori:[16,18,20,40,41],menu:[17,39,41],merg:29,messag:[16,17,21,41],metal1:[16,27],metal2:[21,27],metal3:21,metal4:35,metal5:41,metal:[27,41],meth_noargs:[8,9,13],meth_static:[8,9],meth_varargs:[8,9,13],method:[1,9,10,11,13,20,27],method_head:[8,9,13],micromet:[27,47],micron:22,microns:47,middl:31,migrat:39,million:41,miloyip:37,mimic:[9,35],minim:27,minimum:[40,41],minimumsid:40,minipag:38,minor:[35,37,41],mintracelevel:41,minut:41,mip:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],mirror:40,misc:[19,35,41],miscellan:1,miss:41,mistak:[9,16,31],mistral:31,mix:[4,5,11,23,37],mkdir:37,mode:1,model:[1,16,20,21,27],modelnam:[30,31],modif:[16,18,31,37,41],modifi:[13,18,19,31,37,40,41],modul:[1,7],modular:11,modules_stratu:31,mofi:17,monolith:11,more:[8,16,18,20,27,31,36,37,39,41],moreov:11,mosi:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],most:[31,35,41],mostli:[7,20,35,41],mous:41,movabl:41,move:41,mpxlib:35,msb:[29,31],msxlib4:35,much:[11,29,31,35],multipl:[22,27,31,39,41,47],multiplex:30,multiplexor:[1,29],multipli:[27,31],must:[7,8,9,11,16,17,19,20,21,22,27,31,32,35,37,40,41],mutat:9,mux2_8:30,mux:[29,31],mx2:31,my_addaccu_:31,my_and2_4bit:31,my_dpgen_and2:31,my_inv:16,myclass:[29,31],myfunc:20,myinst1:31,myinst2:31,myinst3:31,myinst:31,mymap:29,mynet:31,myparam:29,myref:31,myself:15,na2:31,na3:31,na4:31,name:[1,7,8,9,11],namespac:[1,7,8],nand2:30,nand2_8:30,nand2mask_0x0000ffff:30,nand3:30,nand3_20:30,nand4:30,nand4_9:30,nand:30,narrow:41,navig:18,nbit:[30,31],nbit_cmd:30,nbsp:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],nbuse29:30,nck:35,ncsu:22,nda:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],ndif:[16,27,31],nearest:40,need:[7,8,9,11,13,16,19,20,21,23,27,31,35,37,39,41],neg:31,neither:[9,31],nero:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],net8:31,net:[1,8,11,15],neta:31,netb:31,netc:31,netck:31,netcmd:31,netcout:31,netexternalcompon:[16,21],neti0:31,neti1:31,netin:31,netinput:29,netlist:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],netnam:31,neton:31,netout:31,netq:31,nets:31,netv:31,netvdd:31,netvss:31,never:18,nevertheless:31,newli:[16,31],newnet:31,newpag:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],next:[31,32,37],nimbu:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],nmux2_5:30,nmx2:31,nnnn:41,no2:31,no3:31,no4:31,node180:35,noflag:23,noindent:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],non:[1,9,11],noncommerci:26,none:[16,17,21,23,29,35,40,41],nor2:30,nor2_8:30,nor2mask_000111:30,nor3:30,nor3_3:30,nor4:30,nor4_15:30,nor:[9,30,31],normal:[23,41],normals:26,north:[31,40],nosym:[30,31],notat:[29,31,41],note:[1,8,9,27,30,31,37],now:[8,21,37,39,41],nsxlib:35,nterfac:32,ntie:[16,27,31],ntran:[16,31],ntrans:[16,27,31],nul:30,nul_4:30,number:[9,11,13,16,27,29,30,31,32,39,40,41],nutshel:37,nwell:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],nword:[30,31],nxr2:31,nymous_:18,o2_1:[21,23],o2_x2:[21,23],ob_typ:[8,9,13],object:[8,9,10,11,13,16,17,18,20,21,27,31,35,41],observ:32,obsolet:39,obstacl:39,obtain:[27,31,41],obviou:[13,41],obvious:11,obviousli:[11,21,27,40],occur:[11,16,30,31,37],occurr:8,ocp:27,octal:32,odd:[27,40],off:[11,27,31],offset:[27,31],offsetx:31,offsety:31,often:[27,41],old:[11,23,37,39],older:41,omit:40,ommit:41,onc:[9,11,31],once:[16,40,41],one:[8,21,30,31,40,41],onli:[8,10,11,15,16,17,18,20,21,22,23,27,29,30,31,32,35,37,39,40,41],only:[9,29,30,31,37],open:[16,17,20,21,23,29,31,41],opencham:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],oper:[1,11,20,21,29,30],operand:30,operat:30,opt:37,optim:[30,37],option:[1,9,17,19,29,30,31,32],optional:[32,35],optionn:[30,31],or2:[30,31],or2_8:30,or3:30,or3_5:30,or4:30,or4_16:30,order:[18,21,29,30,31,35,37,41,46],ordere:40,ordinari:[21,40],ored:30,org:26,organ:[9,18],organis:39,orient:27,orientat:21,origin:[11,27,41],osu_soc:22,other:[9,10,11,16,17,20,21,27,31,32,35,37,38,39,40,41],otherwis:[11,29,30,31,41],ouput:30,our:[9,11,20,35,37],out:[11,29,30,31,35],outdat:37,outer:39,outil:31,outlin:41,output:[29,30,31,32,39,41],outsid:[7,16,18],over:[10,18,21,23,27],overal:41,overflow:30,overhang:27,overlap:[27,41],overload:[9,16,41],overloard:[29,31],overrid:19,overriden:35,overwritten:41,own:[8,31,35,37,39,41],owner:16,p_a0:40,p_a1:40,p_a2:40,p_a3:40,p_b0:40,p_b1:40,p_b2:40,p_b3:40,p_cin:[31,40],p_ck:40,p_cout:[31,40],p_d0:40,p_d1:40,p_d2:40,p_d3:40,p_f3:40,p_i0:40,p_i1:40,p_i2:40,p_i3:40,p_i4:40,p_i5:40,p_i6:40,p_i7:40,p_i8:40,p_ng:[31,40],p_noe:40,p_np:[31,40],p_ovr:40,p_q0:40,p_q3:40,p_r0:40,p_r3:40,p_vddeck0:[31,40],p_vddeck1:[31,40],p_vddick0:40,p_vsseck0:40,p_vsseck1:[31,40],p_vssick0:[31,40],p_y0:40,p_y1:40,p_y2:40,p_y3:40,p_y:31,p_zero:40,packag:1,pad:[1,16],pad_east:29,pad_north:29,pad_south:29,pad_west:29,padeast:31,padnorth:31,padsouth:31,padwest:31,page:[21,46],pagestyl:26,pair:[16,31,40],paper:41,para:31,paradigm:35,parallel:37,param:[1,29,30],paramet:[1,9,11,13,21,23],parameterst:[19,23],paranoid:19,parent:9,pars:[8,31],parser:[27,39],part:[1,8],partial:[8,11,39],particular:[9,17,20],partit:40,paseast:31,pass:[11,21,40],paswest:31,pat:32,patamet:31,path:1,pathnam:31,patli:27,pattern:[1,29],pattern_begin:1,pattern_end:1,patwrit:1,paul:[26,38],pdf:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],pdif:[16,27,31],peopl:11,per:31,percentag:[35,41],perform:[9,30,31,35,37,39,40,41],perhap:41,peripheri:[31,35],permit:[30,31],persist:11,phfig:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],phseg:27,phvia:27,physic:[1,16,20],physical:31,physical_grid:27,pictur:[31,41],piec:31,pin:[20,21,31,47],pitch:[27,31],pixel:41,pixmap:41,place:[1,11,15,16,20],placeandrout:23,placebottom:1,placecentr:1,placecontact:1,placed:21,placeglu:1,placeleft:1,placement:[1,21,23,29,31,39],placementstatu:21,placepin:1,placer:1,placeref:1,placeright:1,placeseg:1,placetop:1,plain:10,plane:40,pleas:[16,31,37],plot:31,plu:31,plug:[15,16,20],plugin:[1,39],point1:31,point2:31,point:[9,10,11,13,16,20,21,27,31,32,35,40,41],pointer:[8,9,11,13],poli:[16,27,31],poly:[16,27,31],polysilicium:27,pop:30,popdefaultprior:35,popup:41,port:[29,31,32,37,39],posit:[16,27,31,40,41],possibl:[9,17,20,21,27,31,35,37,40,41],postfix:40,power:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],powerr:1,practic:[7,27],pre:[37,41],preced:32,precis:[11,16,31,47],preclud:39,predic:9,prefix:[27,40],preliminari:39,prepend:35,prerequisit:37,presenc:8,present:[8,18,20,35,41],press:41,pretti:22,prevent:40,previou:[27,31,37,41],previous:[8,9,23,40],print:[1,18,20],printabl:[14,25,28,33,42],printer:41,prior:[16,22,23,41],prioriti:35,problem:39,proce:37,procedur:[31,32,33,41],process:[18,19,21,31,39,41],produc:32,profil:37,progess:20,program:[9,11,31],programm:30,progress:17,project:37,propag:[40,41],properti:[9,32],proprieti:32,protect:39,protocol:18,provid:[1,9,10,11,16,19],proxyerror:10,ptie:[27,31],ptqt4:37,ptran:[16,31],ptrans:[16,27,31],pub:[36,37],pull:37,pure:[19,20,41],purist:27,purpos:[17,31,41],push:30,pushdefaultprior:35,pust:31,put:[9,11,13,27,31,35,39,40,41],pwell:[27,31],pxlib:40,py_incref:[8,9],py_initmodul:[8,9],py_library_h:9,py_return_none:[8,10],pyany_aslong:[10,13],pyarg_parsetupl:[9,10,11,13],pycel:[8,9],pycell_link:[8,9],pycfunct:[8,9,13],pycompon:[8,11],pycomponent:8,pycomponent_destroi:8,pycomponent_getnet:8,pycomponent_getx:8,pycomponent_gety:8,pycomponent_link:8,pycomponent_linkpytyp:8,pycomponent_method:8,pycomponent_o:[8,11],pycontact:8,pycontact_cr:[8,11],pycontact_destroi:8,pycontact_getheight:8,pycontact_getwidth:8,pycontact_link:[8,11],pycontact_linkpytyp:8,pycontact_method:8,pycontact_o:8,pycpp:7,pydatabas:9,pydatabase_o:9,pydatabse_o:9,pydbu_fromlong:10,pyentiti:8,pyentity:8,pyentity_destroi:8,pyentity_getcel:8,pyentity_link:8,pyentity_linkpytyp:8,pyentity_method:8,pyentity_new:8,pyentity_o:8,pyerr_clear:11,pyerr_setstr:[8,9,10,11,13],pyhorizont:8,pyhorizontal_link:8,pyhorizontal_o:8,pyhurrican:[7,8,9,13],pyhurricane_method:[8,9],pyinclud:7,pyinstanc:11,pyinstance_link:11,pylay:11,pylayer_o:11,pylibrari:[7,9,11],pylibrary:9,pylibrary_cr:9,pylibrary_dealloc:9,pylibrary_destroi:9,pylibrary_getcel:9,pylibrary_link:9,pylibrary_linkpytyp:9,pylibrary_method:9,pylibrary_o:9,pymethoddef:[8,9,13],pymodule_addobject:[8,9],pynet:[8,11],pynet_link:8,pynet_o:11,pyobject:[8,9,10,11,13],pyobject_head:[8,9,13],pyobject_new:13,pypoint:[10,13],pypoint_dealloc:13,pypoint_getx:[10,13],pypoint_gety:13,pypoint_init:13,pypoint_link:13,pypoint_linkpytyp:13,pypoint_method:13,pypoint_new:13,pypoint_o:13,pypoint_setx:[10,13],pypoint_sety:13,pyqt4:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],pyqt5:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],pyqt:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],pyseg:8,pystring_asstr:9,python27:37,python2:37,python:[0,1,2,3,4,5,6,7],pythoncpp:14,pythonpath:[19,41],pythontutori:25,pytype_ready:[8,9],pytype_ready_sub:8,pytypecompon:[8,11],pytypecontact:8,pytypeent:8,pytypeinheritedobjectdefinit:8,pytypelay:11,pytypelibrari:[7,9],pytypenet:11,pytypeobject:[8,9,13],pytypeobjectdefinit:[9,13],pytypeobjectlinkpytyp:[8,9],pytypeobjectlinkpytypenewinit:13,pytypepoint:13,pytyperootobjectdefinit:8,pyvert:8,pyvertical_link:8,pyvertical_o:8,qt4:37,qt5:37,qtbase5:37,qtbase:37,qtsvg:37,quadri:40,quadtre:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],qualiti:41,quantiti:41,quarter:40,queri:16,quit:[29,41],qwt:37,rail:1,ram:[30,40],ram_32_32:30,ram_ct:40,rang:[31,32],rapidjson:37,rather:41,ratio:[23,41],rcw:27,rds:1,rds_activ:27,rds_alu1:27,rds_alu2:27,rds_alu3:27,rds_alu4:27,rds_alu5:27,rds_alu6:27,rds_cont:27,rds_gate:27,rds_ndif:27,rds_nimp:27,rds_pdif:27,rds_pimp:27,rds_poly:27,rds_via1:27,rds_via2:27,rds_via3:27,rds_via4:27,rds_via5:27,reach:[11,41],reachabl:41,read:[9,30,39,47],readabl:41,readi:16,real:[1,9,16,18],realli:[37,41],reason:27,recent:[27,31],recommand:41,recommended:32,record:41,rectang:27,rectangl:27,recurs:1,red:41,redefin:[8,35],redefinit:8,redhat:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36],redirect:41,redraw:41,reduc:39,redund:27,ref:30,refin:9,reflect:41,refnam:31,refresh:[29,31,41],reg:[29,31],regard:[20,31],regener:37,regex:37,regexp:35,regist:[1,7,9,29,30],regnumb:30,rel:[16,27,31,32,37],relat:[8,13,21,32,35,37,39,41],releas:[1,37,38],relev:[8,9,40],reli:[11,27,37,41],reload:41,remain:[8,9,13,18,41],remark:[8,35,41],rememb:8,remind:15,remov:[18,40,41],ren:30,renam:[40,47],render:41,reopen:17,reorganis:40,repeatedli:41,replac:[20,35,39,41],replic:9,repositori:[36,37,39],repoview:36,repres:[21,27,31,32,41,47],represent:41,request:[18,30,40],requir:[1,11,29,35],reserv:41,reset:[9,30,41],resizeab:1,resolut:[20,41],respect:[11,35,41],respons:[9,41],rest:[17,23],restart:[40,41],restructuredtext:37,result:[9,11,17,18,20,21,30,41],retain:11,revers:[8,11],revert:[37,39],rewrit:[11,39],rewritten:[39,41],rf1_4_16:30,rf1d_4_16:30,rhel6:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],rhel7:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],rhel:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],right:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],ring:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],rip:41,ripup:41,ripupcost:41,rise:[27,31],risk:27,rok:30,rom2_0b1010_0b1100:30,rom4_0b1010_0b1100_0b1111_0b0001:30,rom:30,root:[9,11,16,21,23,37],roselyn:[32,38],rot_m:31,rot_p:31,rotat:[21,30,31],rotop:30,rout:[1,20,23,27,29],routabl:41,routag:41,routageck:31,routeck:1,router:[1,16],routingdriven:41,routinggaug:35,row:21,rowend_x0:21,rp1:21,rp2:21,rpm:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],rsave:1,rubber:41,rule:[27,40,41],ruler:41,run:[16,17,19,22,23,31,35,37,40,41],runglobalrout:23,runnabl:16,runnegoci:23,runtim:41,s2r:27,safe:37,safeti:41,sai:[11,19,21,37,40],said:16,sake:[8,16],same:[7,8,11,16,18,21,27,29,31,32,35,41],sarri:30,satur:41,saturateratio:41,saturaterp:41,save:[1,8,9],savecel:[16,21,23],scale:26,scan:30,scarri:41,scheme:[37,40,41],scientif:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],scin:30,scn6m_deep_09:35,scope:20,scout:30,screen:41,script:[1,16],scriptmain:[16,17,21,23,40,41],scrub:9,search:[18,35,46],second:[11,16,21,27,30,31,35,37,41],section:[37,47],secur:35,see:[9,11,16,17,20,21,27,29,31,32,35,37,39,40,41],seem:[27,31,37,39,47],seen:[9,23],sefl:31,segment:[1,16,21],sel0:30,sel1:30,sel:30,select:[1,21,30,37],self:[8,9,10,13,20,29,30,31,32,35],selr:30,selram:30,selw:30,semant:[20,39],send:27,sens:41,sensit:31,sentinel:[8,9,13],separ:[9,11,27,29,37,39,40,41],sequenc:[23,31,41],sequenti:35,serv:[4,5],set:[1,7,9,10],setabutmentbox:[16,17,21],setadd:31,setand:31,setblockage:35,setbool:35,setbuff:31,setcatalog:35,setcel:[16,17,21,23],setclock:35,setcomp:31,setdiv:31,setdoubl:35,seteditor:40,setextern:[16,21,23],setglob:[16,21,23],setground:35,setin_lo:35,setin_ph:35,setint:35,setmult:31,setmux:31,setnet:[21,23],setnot:31,setor:31,setout_lo:35,setout_ph:35,setpad:35,setpercentag:35,setplacementstatu:21,setpower:35,setrefin:1,setreg:31,setscale_x:35,setshift:31,setstr:35,setstyl:35,setter:35,settermin:[16,17],settransform:21,setup:[9,16,19,23,35,37],setworking_library:35,setx:[10,13],setxor:31,sety:13,seven:41,sever:[11,29,31,41],sff2:31,sff3:31,sff:31,sff_4:30,sfft_4:30,shadow:18,shamt:30,shape:[23,27],share:[1,7,8],sharealik:26,she:8,shelf:11,shell:[19,31,37],shellsuccess:40,shift:[29,30,31,41],shifter:[1,29,30],shifter_4:30,ship:[35,39],shortcut:1,should:[11,13,19,31,32,37,41],shouldn:27,show:[11,16,18,27,35,41],shown:[9,27,31,40],shrot_4:30,si2:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],side:[27,31,40,41],sig:29,sign:[30,31],signal:[1,4,5,21,29,30],signalin:[30,31,32],signalinout:[30,31,32],signalout:[30,31,32],signalunknown:31,signatur:[8,9,11],silli:27,similar:[8,41],similarli:32,simpl:[1,22,27],simpler:37,simplest:16,simpli:[16,18,27,31],simplifi:[19,21,31,37,40],simul:[31,32,39],sinc:18,singl:41,size:[27,30,31,32,35,40,41],skip:18,slanski:31,slice:31,slight:20,sligthli:37,slot:41,slow:41,slsoc6x:37,slsoc6x_64:37,slsoc:36,small:[23,25,26,27,31,35,40,41],smallest:[30,47],smallskip:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],snapshot:1,snx:22,soc:[35,36,37],socket:41,softwar:1,sole:17,solut:41,solv:41,some:[1,11,16,18,20,27,29],someth:[16,20],sometim:21,somewhat:21,sophi:[29,30,31,38],sorbonn:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],sourc:[16,27,31,37,39,41],sout:[21,23,31],sout_1:[21,23],south:[31,40],space:[23,27,31,40,41],spacemargin:[23,41],span:13,spec:37,special:[9,19,20],specif:[9,20,35,40,41],specifi:[30,31,41],speed:41,speedup:39,sphinx:37,spl1:31,split:[11,40,41],spread:[23,41],squar:[23,27],src:37,sroka:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],st_config:31,stabl:[37,39],stack:9,stage:[37,41],stai:27,stamp:32,stand:[36,41],standalon:1,standard:[9,11,13],standard_instances_list:29,standart:[37,40],standpoint:27,start:[20,27,31,35,41],starter:15,state:[16,18,20,21,23,38,41],statement:[35,40,47],static_cast:[8,10],statu:21,stechno:40,step:[8,9,27,31,37,40,41,47],still:[8,13,28,37,39,41],stimuli:1,stimulu:32,stl:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],stop:[16,17,21,23,40,41],storag:47,store:[9,10,16,20,30,41],straightforward:22,straigthforward:21,strap:41,strapripuplimit:41,strategi:40,stratu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28],stratus1:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],stratus2:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],stratus:31,stratus_mapping_name:31,stream:41,strict:[21,27],string:[9,16,20,30,31,32,35,40,41],strip:37,stroke:41,strongli:41,strongly:32,struct:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],structur:1,stuck:[27,30],stuf:40,stuff:29,style:[9,41],sub:[19,31,32,40],subject:41,subsequ:47,subset:35,substract:[30,31,41],substractor:30,subtli:18,succe:41,success:40,successful:41,successfulli:[37,41],sudo:37,suffer:41,suffic:41,suffix:40,suit:41,summar:20,summari:40,superpos:41,supli:30,suppli:[9,16],support:[7,9,11,13,20,23,32,37,39,41],suppress:41,sure:40,svn:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],swig:11,swiss:41,sxlib:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],sy_rm:31,sy_rp:31,sym:31,sym_x:31,sym_y:31,symbol:[1,9,16,19,22],symetr:31,symetri:[29,31],symmetri:21,symxy:31,sync:41,synch:41,synonym:23,synopsi:1,syntact:35,syntax:[1,9,20],synthesi:[1,22],synthet:[1,22,39,40],system:[21,31,35,37,39],tab:[1,21,29,31],table:27,tailor:9,take:[9,16,17,23,31,32,41],taken:[11,31,32],talu1:31,talu2:31,talu3:31,talu4:31,talu5:31,talu6:31,talux:27,target:[16,27],task:[8,19,37,41],technic:1,technolog:[16,19,21,22,31,35,41],tediou:[19,21,37],tee:41,tell:[9,16,19,27,29,30,35,37,40],temp:31,temp_ext:31,tempext:31,templat:11,temporari:47,ten:11,term:[31,38],termin:1,terminolog:16,test:[1,29],testbench:31,texliv:37,text:[31,40,41],textbf:26,textsc:26,textwidth:38,than:[11,27,31,39,41],thank:[11,29,31,40,41],thei:[9,11,16,19,20,27,29,31,35,37,39,40,41],them:[9,11,20,23,27,35,37,40,41],therefor:[21,30],thesi:41,thi:[8,9,11,13,14,15,16,18,19,20,21,23,25,26,27,28,29,30,31,32,33,35,37,39,40,41,42,47],thing:32,third:[21,27,30,37],thispagestyl:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],those:[8,9,18,19,21,27,29,30,31,37,40,41],though:11,three:[7,9,21,27,30,41],through:[9,11,15,16],througout:27,thu:[9,20,41],tie:27,tie_x0:21,time:[8,11,31,32,35,41],tmp:20,todai:16,todbu:[16,17,21,23],togeth:[30,39],toggl:41,tolambda:16,too:[11,23,27,31,41],tool:[1,11,17,19,20],toolchain:41,toolengin:23,toolkit:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],top:[31,37,40,41],topolog:41,toproutinglay:[35,41],total:41,toward:[11,19,31],tp_compar:9,tp_dealloc:9,tp_hash:9,tp_init:13,tp_method:9,tp_new:13,tp_repr:9,tp_str:9,trace:[9,35,41],track:41,track_spacing_alu1:27,track_spacing_alu2:27,track_spacing_alu3:27,track_spacing_alu4:27,track_spacing_alu5:27,track_spacing_alu6:27,track_spacing_alu7:27,track_spacing_alu8:27,track_width_alu1:27,track_width_alu2:27,track_width_alu3:27,track_width_alu4:27,track_width_alu5:27,track_width_alu6:27,track_width_alu7:27,track_width_alu8:27,transform:[9,20],transistor:27,transit:32,translat:[21,27],transmiss:11,transpar:27,tree:[1,8,11,31],tricki:11,trigger:41,tristat:[29,30,31,32],tristate:29,trough:40,tty:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],turn:[16,21,40,41],tutori:1,tweak:41,twenti:31,twentu:31,twice:[11,18,31],two:[8,11,15,16,17,19,20,21,23,27,29,30,31,32,35,37,39,40,41],type:[1,7,8],typebool:[19,23],typedef:[8,9,10,13],typeenumer:23,typepercentag:23,typic:[9,40],ubuntu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36],uint64_t:10,unabl:37,unbound:10,uncheck:21,undef:[8,31],undefined:31,under:[1,9,11,16,17,19,21,22,23,26,27,35],underli:11,underscor:31,understand:[11,37,46],unexpectedli:18,unicorn:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33],unifi:41,uniform:23,uniformdens:[23,41],uniquif:41,uniquifi:41,unit:[10,11],units:47,univers:38,unknown:29,unlik:37,unlike:[15,16,39],unmov:41,unneed:21,unpackag:37,unplaced:29,unpredict:18,unrout:41,unselect:41,unsign:30,until:[21,23,41],unzoom:41,updat:9,updatesess:[16,17,20,21,23],upgrad:37,upmc:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],upon:[11,31,33,36,41],upper:[16,27,30,31,41],uppercas:16,usabl:[13,16,27],usage:[27,41],use:[19,31,32,37],used:[30,41],useful:[1,29],user:1,userfil:35,usersguid:42,using:16,usr:[16,21,23,31],usual:[8,9,16,20],utf:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],val0:30,val1:30,val2:30,val3:30,val:41,valgrind:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],valid:[9,11,30,35,40],valu:[1,8,9,13,19],variabl:[9,16,19,27,31,35],variant:30,variou:[9,11,16],vbe:[29,41],vdd:[16,21,23,29,30,31,32,35],vddin:[29,30,31,32],vector:[18,31,32],verbos:41,verboselevel1:[19,35,41],verboselevel2:[19,35,41],veri:[23,35,37,41],version:[1,7,14,25,28,33,36],vertic:[8,16,21,27,31,40,41],vertiv:31,vhdl:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],via12:[21,31],via1:31,via23:[21,31],via24:31,via25:31,via26:31,via2:31,via34:31,via35:31,via36:31,via3:31,via45:31,via46:31,via4:31,via56:31,via5:31,via:27,view:[9,16,18,20],viewer:[0,1,16,17,21,35,39,40],vim:31,vimrc:31,violet:41,virtual:[1,15],visibl:[16,41],visual:[27,41],visualis:16,vlsi:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],vlsisapd:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],vreservedloc:39,vspace:40,vss:[16,21,23,29,30,31,32,35],vssin:[29,30,31,32],vst:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],vtrackreservedloc:41,vtracksreservedloc:[35,41],vwidth:40,w7_64:37,w8_64:37,wai:[9,10,11,16,20,23,27,31,37,40,41],walk:41,walkthrough:18,wallac:31,want:[8,9,11,16,17,18,19,21,29,31,35,37,41],warn:11,wave:37,weak:41,weakli:16,weekli:21,well:[15,21,27,29,31,40,41],wen:30,were:[37,41],west:[31,40],wether:31,what:[9,11,17,21,27,31,41],whatev:[37,41],when:[10,11,19,27,29,30,31,35,37,40,41,47],where:[7,21,22,32,37,41],whether:[8,18,39,40,41],which:[7,8,9,13,16,17,19,20,21,27,29,31,32,35,37,38,39,40,41,47],white:41,whitespac:41,whithout:[35,40,41],whole:[8,27,30,39,40,41,47],whose:[20,35],why:[9,11],wich:31,widget:[37,39],width:[8,11,16,27,30,31,40,41],width_vdd:27,width_vss:27,wil:18,window:[37,41],within:[31,41],without:[16,17,27,29,30,31,39,41],wok:30,won:11,word:[30,31,32],word_length:32,work:[9,16,17,20],work_dir:16,work_lib:18,workhors:15,world:16,wors:41,would:[10,11,18,31],wrap:[7,9,11],wrapper:[9,11,23,35],write:[11,15,18,30,31,32,40,41],written:[9,11,12,13,16,18,20,35],wrong:31,www:[36,37,44,47,48],wysiwyg:41,x86_64:[36,37],x_grid:27,xml:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],xnor2:30,xnor2_8:30,xnor2mask_0b000111:30,xnor:30,xor2:[30,31],xor2_8:30,xor:30,xored:30,xoring:30,xr2:31,xr2_1:[21,23],xr2_2:[21,23],xr2_x1:[21,23],xr2_x2:[21,23],xxxx:37,y_grid:27,y_slice:27,yacc:37,year:[11,41],yet:[8,31,37,41],yield:31,yifei:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],yosi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],you:[11,16,17,18,19,20,21,22,23,25,26,27,30,31,32,35,37,40,41],your:[1,11,16,17,19,22],yum:37,zero:[11,27,30,31],zoom:41},titles:["Hurricane/Analog Reference","Comprenhensive Table of Contents","CRL Core Reference","Hurricane Reference","Katabatic Reference","Kite Reference","Oroshi Reference","2. Basic File Structure and CMake configuration","4. Case 2 - Hierarchy of DBo Derived Classes","3. Case 1 - DBo Derived, Standalone","6. Encapsulating DbU","1. Introduction","7. No C++ Hurricane::Name encapsulation","5. Case 3 - Non-DBo Standalone Classe","Hurricane Python/C++ API Tutorial","9. Advanced Topics","3. Making a Standard Cell – Layout","5. Make a script runnable through cgt","4. Manipulating Cells, Nets and Components","2. Setting up the Environment","1. Introduction","6. Making a hierarchical Cell – Netlist","7. Working in real mode","8. Tool Engines (CRL Core)","<no title>","Hurricane+Python Tutorial","<no title>","Symbolic Layout","RDS – Symbolic to Real Conversion in Alliance","Stratus Developper’s Guide","DpGen generators manual","Stratus User’s Guide","Patterns module User’s Guide","Stratus : Netlist Capture Language","Unicorn Reference","Coriolis Configuration & Initialisation","Complete Design Flow & Examples","Installation","Credits & License","Release Notes","Python Interface for Hurricane / Coriolis","CGT - The Graphical Interface","Coriolis User’s Guide","Viewer Reference","DEF API Reference","<no title>","Welcome to Coriolis’s documentation!","LEF API Reference","LEF/DEF Language Reference"],titleterms:{"boolean":31,"case":[8,9,13,21],"class":[8,9,13,29],"function":[15,31],"new":16,about:[11,18],abutment:16,activ:37,add:31,addaccu:31,adding:16,additionn:37,addpat:32,advanc:15,affect:31,affect_ani:32,affect_fix:32,affect_int:32,aliment:31,allianc:[28,37,41],allianceframework:[16,18],am2901:40,analog:0,anoth:31,api:[14,44,47],architectur:35,argument:31,arithmet:31,associat:9,attribut:29,base:[8,41],basic:7,blif:22,botch:11,box:16,branch:37,breakpoint:17,buffer:31,build:37,call:47,callback:47,captur:[33,41],cell:[16,18,21,31],cgt:[17,41],chip:40,choic:11,circuit:31,clock:40,cmake:7,collect:18,command:41,comparison:31,compat:37,complet:[16,21,23,36],compon:[16,18,27],comprehens:35,comprenhens:1,configur:[7,19,31,35,41],connect:21,connector:31,constant:31,constructor:20,content:1,control:41,convers:28,copyupseg:31,core:[2,16,23],corioli:[35,37,40,42,46],coriolis2:35,coriolisenv:37,creat:[16,21],creation:31,credit:38,crl:[2,16,23],data:[31,41],dbo:[8,9,13],dbu:[10,16],debian:37,debug:37,declar:32,declar_interfac:32,def:[44,48],defab:31,deriv:[8,9],descript:[29,31,32],design:[11,36,41],detail:41,develop:37,developp:29,directori:37,disclaim:11,disk:16,distribut:37,document:46,dpgen:[30,31],dpgenadsb2f:30,dpgenand2:30,dpgenand3:30,dpgenand4:30,dpgenbuff:30,dpgenbus:30,dpgenconst:30,dpgendff:30,dpgendfft:30,dpgenfifo:30,dpgeninv:30,dpgenmux2:30,dpgennand2:30,dpgennand2mask:30,dpgennand3:30,dpgennand4:30,dpgennbus:30,dpgennmux2:30,dpgennor2:30,dpgennor2mask:30,dpgennor3:30,dpgennor4:30,dpgennul:30,dpgenor2:30,dpgenor3:30,dpgenor4:30,dpgenram:30,dpgenrf1:30,dpgenrf1d:30,dpgenrom2:30,dpgenrom4:30,dpgensff:30,dpgensfft:30,dpgenshift:30,dpgenshrot:30,dpgenxnor2:30,dpgenxnor2mask:30,dpgenxor2:30,editor:31,enabl:37,encapsul:[10,12],engine:23,environ:[19,37],error:31,etesian:[23,41],exampl:[16,21,23,31,32,35,36,40],execut:[31,41],extens:31,facil:31,file:[7,8,9,13,16,19,21,22,27,31],fillcel:31,filter:41,first:11,fix:37,flow:36,from:21,gener:[20,30,31,35],get:16,getrefxy:31,global:41,graphic:41,grid:27,guid:[29,31,32,42],head:9,header:[8,9,13],hierarch:[15,21],hierarchi:8,highlight:31,hook:37,how:31,hurrican:[0,3,12,14,16,18,25,40,41],hypernet:15,implement:47,indice:46,initialis:35,inspector:41,install:37,installat:37,instanc:[21,29,31],instanci:31,instanciat:31,instanti:31,interfac:[40,41],intermedi:8,introduct:[11,20,31],katabat:4,katana:[23,41],kind:20,kite:5,lambda:27,languag:[33,48],layer:[16,41],layout:[16,27,31],lef:[22,47,48],librari:[9,31],licens:38,line:41,link:[9,31],list:31,load:[18,22,41],look:41,macos:37,make:[16,17,21],manipul:18,manual:30,map:31,mbk_to_rds_bigvia_hole:27,mbk_to_rds_bigvia_metal:27,mbk_to_rds_segment:27,mbk_to_rds_via:27,mbk_wiresetting:27,measur:16,mechan:16,memento:41,method:[29,31,32],miscella:15,miscellan:41,mode:[22,41],model:29,modul:[8,9,31,32],multiplexor:31,name:[12,31],namespac:9,net:[16,18,21,29,31],netlist:[21,31,33,41],non:13,note:[39,47],occurrenc:15,oper:31,option:41,order:47,oroshi:6,packag:[31,37],pad:31,param:31,paramet:[29,31,32,41],part:[9,32],path:[19,31],pattern:[31,32],pattern_begin:32,pattern_end:32,patwrit:32,physic:[21,27],place:[21,31],placebottom:31,placecentr:31,placecontact:31,placeglu:31,placeleft:31,placement:40,placepin:31,placer:[23,41],placeref:31,placeright:31,placeseg:31,placetop:31,plug:21,plugin:40,power:21,powerr:31,print:41,provid:31,python:[8,9,14,25,40,41],rail:31,rds:[27,28],real:[22,28],recurs:40,redhat:37,refer:[0,2,3,4,5,6,34,43,44,47,48],regist:31,regular:21,releas:39,requir:37,resizeab:31,restrict:18,rout:31,routeck:31,router:[23,41],routingpad:[15,21],rsave:40,runnabl:17,save:[16,40],script:[17,41],segment:27,select:41,session:16,set:[16,19,35,37,41],setrefin:31,share:9,shifter:31,shortcut:41,signal:31,simpl:40,snapshot:41,softwar:35,some:31,special:21,standalon:[9,13],standard:16,stimuli:31,stratu:[29,31,33,41],structur:7,suppli:21,symbol:[27,28],synopsi:[29,31],syntax:[31,32],synthesi:41,synthet:41,tab:41,tabl:[1,27,46],technic:11,techno:19,termin:8,terminolog:20,test:31,through:17,tool:[23,41],topic:15,tran:15,transform:21,tree:[37,40],tutori:[14,25],type:9,ubuntu:37,under:[37,41],understand:47,unicorn:34,unit:[16,47],useful:31,user:[19,31,32,35,42],using:17,valu:[27,31],variou:20,version:37,view:21,viewer:[41,43],virtual:31,welcom:46,wire:21,work:22,yosi:[22,41],your:31}}) \ No newline at end of file diff --git a/documentation/conf.py b/documentation/conf.py index 0c502ea6..81a8f72b 100644 --- a/documentation/conf.py +++ b/documentation/conf.py @@ -41,7 +41,7 @@ master_doc = 'index' # General information about the project. project = u'Coriolis' -copyright = u'2000-2018, UPMC' +copyright = u'2000-2019, Sorbonne Université' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/documentation/etc/SoC-ReST.tex b/documentation/etc/SoC-ReST.tex index d1d61c3f..e00a1d31 100644 --- a/documentation/etc/SoC-ReST.tex +++ b/documentation/etc/SoC-ReST.tex @@ -16,6 +16,7 @@ \usepackage[paper=a4paper,headheight=30pt,tmargin=1.5in,bmargin=1in]{geometry} %\usepackage{layouts} + \definecolor{brickred} {rgb}{0.8 , 0.25, 0.33} \definecolor{brightmaroon}{rgb}{0.76, 0.13, 0.28} \definecolor{bleudefrance}{rgb}{0.19, 0.55, 0.91} diff --git a/documentation/etc/definitions.rst b/documentation/etc/definitions.rst index e9fcc144..d982b82c 100644 --- a/documentation/etc/definitions.rst +++ b/documentation/etc/definitions.rst @@ -26,6 +26,7 @@ .. Acronyms & names. +.. |NDA| replace:: :sc:`nda` .. |OS| replace:: :sc:`os` .. |GNU| replace:: :sc:`gnu` .. |LGPL| replace:: :sc:`lgpl` diff --git a/hurricane/doc/analog/html/graph_legend.html b/hurricane/doc/analog/html/graph_legend.html index 52cd60c5..28f2777b 100644 --- a/hurricane/doc/analog/html/graph_legend.html +++ b/hurricane/doc/analog/html/graph_legend.html @@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/analog/html/index.html b/hurricane/doc/analog/html/index.html index 7248bd16..dd54b80a 100644 --- a/hurricane/doc/analog/html/index.html +++ b/hurricane/doc/analog/html/index.html @@ -92,7 +92,7 @@ Open questions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/analog/latex/refman.tex b/hurricane/doc/analog/latex/refman.tex index 868679b6..4569d7e0 100644 --- a/hurricane/doc/analog/latex/refman.tex +++ b/hurricane/doc/analog/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:52}\\ + {\small Mon Oct 28 2019 18:06:31}\\ \end{center} \end{titlepage} diff --git a/hurricane/doc/hurricane/Cell.dox b/hurricane/doc/hurricane/Cell.dox index e9ca8e26..83cde708 100644 --- a/hurricane/doc/hurricane/Cell.dox +++ b/hurricane/doc/hurricane/Cell.dox @@ -141,6 +141,18 @@ * entities are taken into account in this Collection. */ + /*! \function Occurrences Cell::getLeafInstanceOccurrences ( const Instance* topInstance=NULL ) const; + * Returns the trans-hierarchical Collection of all instance Occurrences that are + * leaf cells. With the \c topInstance argument we can restrict the collection + * to leafs of that instance (of the current Cell) only. + */ + + /*! \function Occurrences Cell::getNonLeafInstanceOccurrences ( const Instance* topInstance=NULL ) const; + * Returns the trans-hierarchical Collection of all instance Occurrences that are + * \b not leaf cells. With the \c topInstance argument we can restrict the collection + * to non-leafs of that instance (of the current Cell) only. + */ + /*! \function Box Cell::getAbutmentBox () const; * Returns Returns the abutment box of the cell (which is defined by the * designer unlike the bounding box which is managed dynamically). diff --git a/hurricane/doc/hurricane/html/BasicLayer_8h_source.html b/hurricane/doc/hurricane/html/BasicLayer_8h_source.html index b0dc686c..8754d5f8 100644 --- a/hurricane/doc/hurricane/html/BasicLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/BasicLayer_8h_source.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Box_8h_source.html b/hurricane/doc/hurricane/html/Box_8h_source.html index 72598651..b1cb1eca 100644 --- a/hurricane/doc/hurricane/html/Box_8h_source.html +++ b/hurricane/doc/hurricane/html/Box_8h_source.html @@ -80,7 +80,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Boxes_8h_source.html b/hurricane/doc/hurricane/html/Boxes_8h_source.html index df71793e..ba258a2e 100644 --- a/hurricane/doc/hurricane/html/Boxes_8h_source.html +++ b/hurricane/doc/hurricane/html/Boxes_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Cell_8h_source.html b/hurricane/doc/hurricane/html/Cell_8h_source.html index a219ed55..ccaefec4 100644 --- a/hurricane/doc/hurricane/html/Cell_8h_source.html +++ b/hurricane/doc/hurricane/html/Cell_8h_source.html @@ -44,7 +44,8 @@ $(function() {
    Cell.h
    -
    1 // ****************************************************************************************************
    2 // File: ./hurricane/Cell.h
    3 // Authors: R. Escassut
    4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    5 //
    6 // This file is part of Hurricane.
    7 //
    8 // Hurricane is free software: you can redistribute it and/or modify it under the terms of the GNU
    9 // Lesser General Public License as published by the Free Software Foundation, either version 3 of the
    10 // License, or (at your option) any later version.
    11 //
    12 // Hurricane is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
    13 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    14 // General Public License for more details.
    15 //
    16 // You should have received a copy of the Lesser GNU General Public License along with Hurricane. If
    17 // not, see <http://www.gnu.org/licenses/>.
    18 // ****************************************************************************************************
    19 
    20 #ifndef HURRICANE_CELL_H
    21 #define HURRICANE_CELL_H
    22 
    23 #include <limits>
    24 #include "hurricane/Flags.h"
    25 #include "hurricane/Observer.h"
    26 #include "hurricane/Signature.h"
    27 #include "hurricane/Relation.h"
    28 #include "hurricane/Pathes.h"
    29 #include "hurricane/Entity.h"
    30 #include "hurricane/Cells.h"
    31 #include "hurricane/DeepNet.h"
    32 #include "hurricane/Instance.h"
    33 #include "hurricane/Pin.h"
    34 #include "hurricane/Pins.h"
    35 #include "hurricane/Slices.h"
    36 #include "hurricane/ExtensionSlice.h"
    37 #include "hurricane/Rubbers.h"
    38 #include "hurricane/Markers.h"
    39 #include "hurricane/Marker.h"
    40 #include "hurricane/Reference.h"
    41 #include "hurricane/Components.h"
    42 #include "hurricane/Occurrences.h"
    43 #include "hurricane/Transformation.h"
    44 #include "hurricane/Layer.h"
    45 #include "hurricane/QuadTree.h"
    46 //#include "hurricane/IntrusiveMap.h"
    47 #include "hurricane/IntrusiveSet.h"
    48 #include "hurricane/MapCollection.h"
    49 #include "hurricane/NetAlias.h"
    50 
    51 
    52 
    53 namespace Hurricane {
    54 
    55 class Library;
    56 class BasicLayer;
    57 
    58 typedef multimap<Entity*,Entity*> SlaveEntityMap;
    59 
    60 
    61 
    62 // ****************************************************************************************************
    63 // Cell declaration
    64 // ****************************************************************************************************
    65 
    66 class Cell : public Entity {
    67 // *************************
    68 
    69 // Types
    70 // *****
    71 
    72  public: typedef Entity Inherit;
    73  public: typedef map<Name,ExtensionSlice*> ExtensionSliceMap;
    74 
    75  public: class Flags : public BaseFlags {
    76  public:
    77  enum Flag { NoFlags = (1 << 0)
    78  , BuildRings = (1 << 1)
    79  , BuildClockRings = (1 << 2)
    80  , BuildSupplyRings = (1 << 3)
    81  , NoClockFlatten = (1 << 4)
    82  , WarnOnUnplacedInstances = (1 << 5)
    83  , StayOnPlugs = (1 << 6)
    84  , MaskRings = BuildRings|BuildClockRings|BuildSupplyRings
    85  // Flags set for Observers.
    86  , CellAboutToChange = (1 << 10)
    87  , CellChanged = (1 << 11)
    88  , CellDestroyed = (1 << 12)
    89  // Cell states
    90  , Terminal = (1 << 20)
    91  , FlattenLeaf = (1 << 21)
    92  , Pad = (1 << 22)
    93  , Feed = (1 << 23)
    94  , FlattenedNets = (1 << 24)
    95  , Placed = (1 << 25)
    96  , Routed = (1 << 26)
    97  , MergedQuadTree = (1 << 27)
    98  , SlavedAb = (1 << 28)
    99  , Materialized = (1 << 29)
    100  };
    101 
    102  public:
    103  Flags ( uint64_t flags = NoFlags );
    104  virtual ~Flags ();
    105  virtual std::string _getTypeName () const;
    106  virtual std::string _getString () const;
    107  };
    108 
    109  class UniquifyRelation : public Relation {
    110  public:
    111  static UniquifyRelation* create ( Cell* );
    112  static UniquifyRelation* get ( const Cell* );
    113  virtual Name getName () const;
    114  static Name staticGetName ();
    115  Name getUniqueName ();
    116  static std::string getTrunkName ( Name name );
    117  virtual bool hasJson () const;
    118  virtual void toJson ( JsonWriter*, const DBo* ) const;
    119  inline void _setOwner ( Cell* );
    120  inline void _setDuplicates ( unsigned int );
    121  virtual string _getTypeName () const;
    122  virtual Record* _getRecord () const;
    123  private:
    124  static const Name _name;
    125  unsigned int _duplicates;
    126  private:
    127  UniquifyRelation ( Cell* );
    128  protected:
    129  virtual void _preDestroy ();
    130 
    131  public:
    132  class JsonProperty : public JsonObject {
    133  public:
    134  static void initialize ();
    135  JsonProperty ( unsigned long flags );
    136  virtual string getTypeName () const;
    137  virtual JsonProperty* clone ( unsigned long ) const;
    138  virtual void toData ( JsonStack& );
    139  };
    140  public:
    141  class JsonPropertyRef : public JsonObject {
    142  public:
    143  static void initialize ();
    144  JsonPropertyRef ( unsigned long flags );
    145  virtual string getTypeName () const;
    146  virtual JsonPropertyRef* clone ( unsigned long ) const;
    147  virtual void toData ( JsonStack& );
    148  };
    149  };
    150 
    151  class ClonedSet : public Collection<Cell*> {
    152  public:
    153  // Sub-Class: Locator.
    154  class Locator : public Hurricane::Locator<Cell*> {
    155  public:
    156  Locator ( const Cell* );
    157  inline Locator ( const Locator& );
    158  virtual Cell* getElement () const;
    159  virtual Hurricane::Locator<Cell*>* getClone () const;
    160  virtual bool isValid () const;
    161  virtual void progress ();
    162  virtual string _getString () const;
    163  protected:
    164  Hurricane::Locator<DBo*>* _dboLocator;
    165  };
    166 
    167  public:
    168  inline ClonedSet ( const Cell* cell );
    169  inline ClonedSet ( const ClonedSet& );
    170  virtual Hurricane::Collection<Cell*>* getClone () const;
    171  virtual Hurricane::Locator<Cell*>* getLocator () const;
    172  virtual string _getString () const;
    173  protected:
    174  const Cell* _cell;
    175  };
    176 
    177  class SlavedsRelation : public Relation {
    178  public:
    179  static SlavedsRelation* create ( Cell* );
    180  static SlavedsRelation* get ( const Cell* );
    181  virtual Name getName () const;
    182  static Name staticGetName ();
    183  virtual bool hasJson () const;
    184  virtual void toJson ( JsonWriter*, const DBo* ) const;
    185  inline void _setOwner ( Cell* );
    186  virtual string _getTypeName () const;
    187  virtual Record* _getRecord () const;
    188  private:
    189  static const Name _name;
    190  private:
    191  SlavedsRelation ( Cell* );
    192  protected:
    193  virtual void _preDestroy ();
    194 
    195  public:
    196  class JsonProperty : public JsonObject {
    197  public:
    198  static void initialize ();
    199  JsonProperty ( unsigned long flags );
    200  virtual string getTypeName () const;
    201  virtual JsonProperty* clone ( unsigned long ) const;
    202  virtual void toData ( JsonStack& );
    203  };
    204  public:
    205  class JsonPropertyRef : public JsonObject {
    206  public:
    207  static void initialize ();
    208  JsonPropertyRef ( unsigned long flags );
    209  virtual string getTypeName () const;
    210  virtual JsonPropertyRef* clone ( unsigned long ) const;
    211  virtual void toData ( JsonStack& );
    212  };
    213  };
    214 
    215  class SlavedsSet : public Collection<Cell*> {
    216  public:
    217  // Sub-Class: Locator.
    218  class Locator : public Hurricane::Locator<Cell*> {
    219  public:
    220  Locator ( const Cell* );
    221  inline Locator ( const Locator& );
    222  virtual Cell* getElement () const;
    223  virtual Hurricane::Locator<Cell*>* getClone () const;
    224  virtual bool isValid () const;
    225  virtual void progress ();
    226  virtual string _getString () const;
    227  protected:
    228  Hurricane::Locator<DBo*>* _dboLocator;
    229  };
    230 
    231  public:
    232  inline SlavedsSet ( const Cell* cell );
    233  inline SlavedsSet ( const SlavedsSet& );
    234  virtual Hurricane::Collection<Cell*>* getClone () const;
    235  virtual Hurricane::Locator<Cell*>* getLocator () const;
    236  virtual string _getString () const;
    237  protected:
    238  const Cell* _cell;
    239  };
    240 
    241  class InstanceMap : public IntrusiveMap<Name, Instance> {
    242  // ****************************************************
    243 
    244  public: typedef IntrusiveMap<Name, Instance> Inherit;
    245 
    246  public: InstanceMap();
    247 
    248  public: virtual Name _getKey(Instance* instance) const;
    249  public: virtual unsigned _getHashValue(Name name) const;
    250  public: virtual Instance* _getNextElement(Instance* instance) const;
    251  public: virtual void _setNextElement(Instance* instance, Instance* nextInstance) const;
    252 
    253  };
    254 
    255  public: class SlaveInstanceSet : public IntrusiveSet<Instance> {
    256  // ***********************************************************
    257 
    258  public: typedef IntrusiveSet<Instance> Inherit;
    259 
    260  public: SlaveInstanceSet();
    261 
    262  public: virtual unsigned _getHashValue(Instance* slaveInstance) const;
    263  public: virtual Instance* _getNextElement(Instance* slaveInstance) const;
    264  public: virtual void _setNextElement(Instance* slaveInstance, Instance* nextSlaveInstance) const;
    265 
    266  };
    267 
    268  public: class NetMap : public IntrusiveMapConst<Name, Net> {
    269  // *********************************************************
    270 
    271  public: typedef IntrusiveMapConst<Name, Net> Inherit;
    272 
    273  public: NetMap();
    274 
    275  public: virtual const Name& _getKey(Net* net) const;
    276  public: virtual unsigned _getHashValue(const Name& name) const;
    277  public: virtual Net* _getNextElement(Net* net) const;
    278  public: virtual void _setNextElement(Net* net, Net* nextNet) const;
    279 
    280  };
    281 
    282  class PinMap : public IntrusiveMap<Name, Pin> {
    283  // *******************************************
    284 
    285  public: typedef IntrusiveMap<Name, Pin> Inherit;
    286 
    287  public: PinMap();
    288 
    289  public: virtual Name _getKey(Pin* pin) const;
    290  public: virtual unsigned _getHashValue(Name name) const;
    291  public: virtual Pin* _getNextElement(Pin* pin) const;
    292  public: virtual void _setNextElement(Pin* pin, Pin* nextPin) const;
    293 
    294  };
    295 
    296  public: class SliceMap : public IntrusiveMap<const Layer*, Slice> {
    297  // **************************************************************
    298 
    299  public: typedef IntrusiveMap<const Layer*, Slice> Inherit;
    300 
    301  public: SliceMap();
    302 
    303  public: virtual const Layer* _getKey(Slice* slice) const;
    304  public: virtual unsigned _getHashValue(const Layer* layer) const;
    305  public: virtual Slice* _getNextElement(Slice* slice) const;
    306  public: virtual void _setNextElement(Slice* slice, Slice* nextSlice) const;
    307 
    308  };
    309 
    310  public: class MarkerSet : public IntrusiveSet<Marker> {
    311  // **************************************************
    312 
    313  public: typedef IntrusiveSet<Marker> Inherit;
    314 
    315  public: MarkerSet();
    316 
    317  public: virtual unsigned _getHashValue(Marker* marker) const;
    318  public: virtual Marker* _getNextElement(Marker* marker) const;
    319  public: virtual void _setNextElement(Marker* marker, Marker* nextMarker) const;
    320 
    321  };
    322 
    323 // Attributes
    324 // **********
    325 
    326  private: Library* _library;
    327  private: Name _name;
    328  private: Path _shuntedPath;
    329  private: InstanceMap _instanceMap;
    330  private: QuadTree* _quadTree;
    331  private: SlaveInstanceSet _slaveInstanceSet;
    332  private: NetMap _netMap;
    333  private: PinMap _pinMap;
    334  private: SliceMap* _sliceMap;
    335  private: ExtensionSliceMap _extensionSlices;
    336  private: MarkerSet _markerSet;
    337  private: Box _abutmentBox;
    338  private: Box _boundingBox;
    339  private: Cell* _nextOfLibraryCellMap;
    340  private: Cell* _nextOfSymbolCellSet;
    341  private: SlaveEntityMap _slaveEntityMap;
    342  private: AliasNameSet _netAliasSet;
    343  private: Observable _observers;
    344  private: Flags _flags;
    345 
    346 // Constructors
    347 // ************
    348 
    349  protected: Cell(Library* library, const Name& name);
    350 
    351 // Others
    352 // ******
    353 
    354  protected: virtual void _postCreate();
    355 
    356  protected: virtual void _preDestroy();
    357 
    358  public: virtual string _getTypeName() const {return _TName("Cell");};
    359  public: virtual string _getString() const;
    360  public: virtual Record* _getRecord() const;
    361  public: static string getFlagString( uint64_t );
    362  public: static Record* getFlagRecord( uint64_t );
    363  public: static Slot* getFlagSlot( uint64_t );
    364 
    365  public: InstanceMap& _getInstanceMap() {return _instanceMap;};
    366  public: QuadTree* _getQuadTree() {return _quadTree;};
    367  public: SlaveInstanceSet& _getSlaveInstanceSet() {return _slaveInstanceSet;};
    368  public: NetMap& _getNetMap() {return _netMap;};
    369  public: PinMap& _getPinMap() {return _pinMap;};
    370  public: SliceMap* _getSliceMap() {return _sliceMap;};
    371  public: ExtensionSliceMap& _getExtensionSliceMap() {return _extensionSlices;};
    372  public: MarkerSet& _getMarkerSet() {return _markerSet;};
    373  public: Cell* _getNextOfLibraryCellMap() const {return _nextOfLibraryCellMap;};
    374  public: Cell* _getNextOfSymbolCellSet() const {return _nextOfSymbolCellSet;};
    375  public: AliasNameSet& _getNetAliasSet() { return _netAliasSet; }
    376 
    377  public: void _setNextOfLibraryCellMap(Cell* cell) {_nextOfLibraryCellMap = cell;};
    378  public: void _setNextOfSymbolCellSet(Cell* cell) {_nextOfSymbolCellSet = cell;};
    379 
    380  public: void _addNetAlias(NetAliasName* alias) { _netAliasSet.insert(alias); }
    381  public: void _removeNetAlias(NetAliasName* alias) { _netAliasSet.erase(alias); }
    382 
    383  public: void _fit(const Box& box);
    384  public: void _unfit(const Box& box);
    385 
    386  public: void _addSlaveEntity(Entity* entity, Entity* slaveEntity);
    387  public: void _removeSlaveEntity(Entity* entity, Entity* slaveEntity);
    388  public: void _getSlaveEntities(SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
    389  public: void _getSlaveEntities(Entity* entity, SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
    390  public: void _insertSlice(ExtensionSlice*);
    391  public: void _removeSlice(ExtensionSlice*);
    392  public: void _slaveAbutmentBox(Cell*);
    393  public: void _changeQuadTree(Cell*);
    394  public: void _setShuntedPath(Path path) { _shuntedPath=path; }
    395  protected: void _setAbutmentBox(const Box& abutmentBox);
    396 
    397  public: virtual void _toJson(JsonWriter*) const;
    398  public: virtual void _toJsonCollections(JsonWriter*) const;
    399 
    400 // Constructors
    401 // ************
    402 
    403  public: static Cell* create(Library* library, const Name& name);
    404  public: static Cell* fromJson(const string& filename);
    405 
    406 // Accessors
    407 // *********
    408 
    409  public: virtual Cell* getCell() const {return (Cell*)this;};
    410  public: virtual Box getBoundingBox() const;
    411  public: Library* getLibrary() const {return _library;};
    412  public: string getHierarchicalName() const;
    413  public: const Name& getName() const {return _name;};
    414  public: const Flags& getFlags() const { return _flags; }
    415  public: Path getShuntedPath() const { return _shuntedPath; }
    416  public: Entity* getEntity(const Signature&) const;
    417  public: Instance* getInstance(const Name& name) const {return _instanceMap.getElement(name);};
    418  public: Instances getInstances() const {return _instanceMap.getElements();};
    419  public: Instances getPlacedInstances() const;
    420  public: Instances getFixedInstances() const;
    421  public: Instances getUnplacedInstances() const;
    422  public: Instances getNotUnplacedInstances() const;
    423  public: Instances getInstancesUnder(const Box& area) const;
    424  public: Instances getPlacedInstancesUnder(const Box& area) const;
    425  public: Instances getFixedInstancesUnder(const Box& area) const;
    426  public: Instances getUnplacedInstancesUnder(const Box& area) const;
    427  public: Instances getNotUnplacedInstancesUnder(const Box& area) const;
    428  public: Instances getSlaveInstances() const; // {return _slaveInstanceSet.getElements();}; NOON!!
    429  public: Instances getTerminalInstances() const;
    430  public: Instances getTerminalInstancesUnder(const Box& area) const;
    431  public: Instances getNonTerminalInstances() const;
    432  public: Instances getNonTerminalInstancesUnder(const Box& area) const;
    433  public: Instances getLeafInstances() const;
    434  public: Instances getLeafInstancesUnder(const Box& area) const;
    435  public: Instances getNonLeafInstances() const;
    436  public: Instances getNonLeafInstancesUnder(const Box& area) const;
    437  public: Net* getNet(const Name& name) const;
    438  public: DeepNet* getDeepNet( Path, const Net* ) const;
    439  public: Nets getNets() const {return _netMap.getElements();};
    440  public: Nets getGlobalNets() const;
    441  public: Nets getExternalNets() const;
    442  public: Nets getInternalNets() const;
    443  public: Nets getClockNets() const;
    444  public: Nets getSupplyNets() const;
    445  public: Nets getPowerNets() const;
    446  public: Nets getGroundNets() const;
    447  public: Pin* getPin(const Name& name) const {return _pinMap.getElement(name);};
    448  public: Pins getPins() const {return _pinMap.getElements();};
    449  public: Slice* getSlice(const Layer* layer) const {return _sliceMap->getElement(layer);};
    450  public: Slices getSlices(const Layer::Mask& mask = ~0) const;
    451  public: const ExtensionSliceMap& getExtensionSliceMap() const { return _extensionSlices; };
    452  public: ExtensionSlice* getExtensionSlice(const Name& name) const;
    453  public: ExtensionSlices getExtensionSlices(ExtensionSlice::Mask mask=~0) const;
    454  public: Rubbers getRubbers() const;
    455  public: Rubbers getRubbersUnder(const Box& area) const;
    456  public: Markers getMarkers() const {return _markerSet.getElements();};
    457  public: Markers getMarkersUnder(const Box& area) const;
    458  public: References getReferences() const;
    459  public: Components getComponents(const Layer::Mask& mask = ~0) const;
    460  public: Components getComponentsUnder(const Box& area, const Layer::Mask& mask = ~0) const;
    461  public: Occurrences getOccurrences(unsigned searchDepth = std::numeric_limits<unsigned int>::max()) const;
    462  public: Occurrences getOccurrencesUnder(const Box& area, unsigned searchDepth = std::numeric_limits<unsigned int>::max()) const;
    463  public: Occurrences getTerminalInstanceOccurrences() const;
    464  public: Occurrences getTerminalInstanceOccurrencesUnder(const Box& area) const;
    465  public: Occurrences getLeafInstanceOccurrences() const;
    466  public: Occurrences getLeafInstanceOccurrencesUnder(const Box& area) const;
    467  public: Occurrences getNonLeafInstanceOccurrences() const;
    468  public: Occurrences getComponentOccurrences(const Layer::Mask& mask = ~0) const;
    469  public: Occurrences getComponentOccurrencesUnder(const Box& area, const Layer::Mask& mask = ~0) const;
    470  public: Occurrences getHyperNetRootNetOccurrences() const;
    471  public: ExtensionSlice::Mask getExtensionSliceMask ( const Name& name ) const;
    472  public: Gos getExtensionGos ( const Name& name ) const;
    473  public: Gos getExtensionGos ( ExtensionSlice::Mask mask = ~0 ) const;
    474  public: Gos getExtensionGosUnder ( const Box& area, const Name& name ) const;
    475  public: Gos getExtensionGosUnder ( const Box& area, ExtensionSlice::Mask mask = ~0 ) const;
    476  public: Cells getSubCells() const;
    477  public: Cells getClonedCells() const;
    478  public: Cell* getCloneMaster() const;
    479  public: Pathes getRecursiveSlavePathes() const;
    480  public: const Box& getAbutmentBox() const {return _abutmentBox;};
    481 
    482 // Predicates
    483 // **********
    484 
    485  public: bool isCalledBy(Cell* cell) const;
    486  public: bool isTerminal() const {return _flags.isset(Flags::Terminal);};
    487  public: bool isFlattenLeaf() const {return _flags.isset(Flags::FlattenLeaf);};
    488  public: bool isLeaf() const;
    489  public: bool isUnique() const;
    490  public: bool isUniquified() const;
    491  public: bool isUniquifyMaster() const;
    492  public: bool isPad() const {return _flags.isset(Flags::Pad);};
    493  public: bool isFeed() const {return _flags.isset(Flags::Feed);};
    494  public: bool isFlattenedNets() const {return _flags.isset(Flags::FlattenedNets);};
    495  public: bool isPlaced() const {return _flags.isset(Flags::Placed);};
    496  public: bool isRouted() const {return _flags.isset(Flags::Routed);};
    497  public: bool isNetAlias(const Name& name) const;
    498 
    499 // Updators
    500 // ********
    501 
    502  public: void setName(const Name& name);
    503  public: void setAbutmentBox(const Box& abutmentBox);
    504  public: void slaveAbutmentBox(Cell*);
    505  public: void unslaveAbutmentBox(Cell*);
    506  public: void setTerminal(bool isTerminal) {_flags.set(Flags::Terminal,isTerminal);};
    507  public: void setFlattenLeaf(bool isFlattenLeaf) {_flags.set(Flags::FlattenLeaf,isFlattenLeaf);};
    508  public: void setPad(bool isPad) {_flags.set(Flags::Pad,isPad);};
    509  public: void setFeed(bool isFeed) {_flags.set(Flags::Feed,isFeed);};
    510  public: void setRouted(bool isRouted) {_flags.set(Flags::Routed,isRouted);};
    511  public: void flattenNets(uint64_t flags=Flags::BuildRings);
    512  public: void flattenNets(const Instance* instance, uint64_t flags=Flags::BuildRings);
    513  public: void createRoutingPadRings(uint64_t flags=Flags::BuildRings);
    514  public: void setFlags(uint64_t flags) { _flags |= flags; }
    515  public: void resetFlags(uint64_t flags) { _flags &= ~flags; }
    516  public: bool updatePlacedFlag();
    517  public: void materialize();
    518  public: void unmaterialize();
    519  public: Cell* getClone();
    520  public: void uniquify(unsigned int depth=std::numeric_limits<unsigned int>::max());
    521  public: void addObserver(BaseObserver*);
    522  public: void removeObserver(BaseObserver*);
    523  public: void notify(unsigned flags);
    524 
    525 };
    526 
    527 
    528 inline Cell::ClonedSet::Locator::Locator ( const Locator& other )
    529  : Hurricane::Locator<Cell*>()
    530  , _dboLocator(other._dboLocator)
    531 { }
    532 
    533 inline Cell::ClonedSet::ClonedSet ( const Cell* cell )
    534  : Hurricane::Collection<Cell*>()
    535  , _cell(cell)
    536 { }
    537 
    538 inline Cell::ClonedSet::ClonedSet ( const ClonedSet& other )
    539  : Hurricane::Collection<Cell*>()
    540  , _cell(other._cell)
    541 { }
    542 
    543 
    544 inline void Cell::UniquifyRelation::_setOwner ( Cell* owner ) { _setMasterOwner(owner); }
    545 inline void Cell::UniquifyRelation::_setDuplicates ( unsigned int duplicates ) { _duplicates=duplicates; }
    546 
    547 
    548 inline Cell::SlavedsSet::Locator::Locator ( const Locator& other )
    549  : Hurricane::Locator<Cell*>()
    550  , _dboLocator(other._dboLocator)
    551 { }
    552 
    553 inline Cell::SlavedsSet::SlavedsSet ( const Cell* cell )
    554  : Hurricane::Collection<Cell*>()
    555  , _cell(cell)
    556 { }
    557 
    558 inline Cell::SlavedsSet::SlavedsSet ( const SlavedsSet& other )
    559  : Hurricane::Collection<Cell*>()
    560  , _cell(other._cell)
    561 { }
    562 
    563 
    564 inline void Cell::SlavedsRelation::_setOwner ( Cell* owner ) { _setMasterOwner(owner); }
    565 
    566 
    567 class JsonCell : public JsonEntity {
    568 // *********************************
    569 
    570  public: static void initialize();
    571  public: JsonCell(unsigned long flags);
    572  public: virtual ~JsonCell();
    573  public: virtual string getTypeName() const;
    574  public: virtual JsonCell* clone(unsigned long) const;
    575  public: virtual void toData(JsonStack&);
    576  private: Cell* _cell;
    577  private: bool _materializationState;
    578 };
    579 
    580 } // End of Hurricane namespace.
    581 
    582 
    583 INSPECTOR_P_SUPPORT(Hurricane::Cell);
    584 INSPECTOR_P_SUPPORT(Hurricane::Cell::Flags);
    585 INSPECTOR_P_SUPPORT(Hurricane::Cell::InstanceMap);
    586 INSPECTOR_P_SUPPORT(Hurricane::Cell::SlaveInstanceSet);
    587 INSPECTOR_P_SUPPORT(Hurricane::Cell::NetMap);
    588 INSPECTOR_P_SUPPORT(Hurricane::Cell::PinMap);
    589 INSPECTOR_P_SUPPORT(Hurricane::Cell::SliceMap);
    590 INSPECTOR_P_SUPPORT(Hurricane::Cell::MarkerSet);
    591 
    592 
    593 #endif // HURRICANE_CELL_H
    594 
    595 
    596 // ****************************************************************************************************
    597 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    598 // ****************************************************************************************************
    Path description (API)
    Definition: Path.h:37
    +
    1 // ****************************************************************************************************
    2 // File: ./hurricane/Cell.h
    3 // Authors: R. Escassut
    4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    5 //
    6 // This file is part of Hurricane.
    7 //
    8 // Hurricane is free software: you can redistribute it and/or modify it under the terms of the GNU
    9 // Lesser General Public License as published by the Free Software Foundation, either version 3 of the
    10 // License, or (at your option) any later version.
    11 //
    12 // Hurricane is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
    13 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    14 // General Public License for more details.
    15 //
    16 // You should have received a copy of the Lesser GNU General Public License along with Hurricane. If
    17 // not, see <http://www.gnu.org/licenses/>.
    18 // ****************************************************************************************************
    19 
    20 #ifndef HURRICANE_CELL_H
    21 #define HURRICANE_CELL_H
    22 
    23 #include <limits>
    24 #include "hurricane/Flags.h"
    25 #include "hurricane/Observer.h"
    26 #include "hurricane/Signature.h"
    27 #include "hurricane/Relation.h"
    28 #include "hurricane/Pathes.h"
    29 #include "hurricane/Entity.h"
    30 #include "hurricane/Cells.h"
    31 #include "hurricane/DeepNet.h"
    32 #include "hurricane/Instance.h"
    33 #include "hurricane/Pin.h"
    34 #include "hurricane/Pins.h"
    35 #include "hurricane/Slices.h"
    36 #include "hurricane/ExtensionSlice.h"
    37 #include "hurricane/Rubbers.h"
    38 #include "hurricane/Markers.h"
    39 #include "hurricane/Marker.h"
    40 #include "hurricane/Reference.h"
    41 #include "hurricane/Components.h"
    42 #include "hurricane/Occurrences.h"
    43 #include "hurricane/Transformation.h"
    44 #include "hurricane/Layer.h"
    45 #include "hurricane/QuadTree.h"
    46 //#include "hurricane/IntrusiveMap.h"
    47 #include "hurricane/IntrusiveSet.h"
    48 #include "hurricane/MapCollection.h"
    49 #include "hurricane/NetAlias.h"
    50 
    51 
    52 
    53 namespace Hurricane {
    54 
    55 class Library;
    56 class BasicLayer;
    57 
    58 typedef multimap<Entity*,Entity*> SlaveEntityMap;
    59 
    60 
    61 
    62 // ****************************************************************************************************
    63 // Cell declaration
    64 // ****************************************************************************************************
    65 
    66 class Cell : public Entity {
    67 // *************************
    68 
    69 // Types
    70 // *****
    71 
    72  public: typedef Entity Inherit;
    73  public: typedef map<Name,ExtensionSlice*> ExtensionSliceMap;
    74 
    75  public: class Flags : public BaseFlags {
    76  public:
    77  enum Flag { NoFlags = (1 << 0)
    78  , BuildRings = (1 << 1)
    79  , BuildClockRings = (1 << 2)
    80  , BuildSupplyRings = (1 << 3)
    81  , NoClockFlatten = (1 << 4)
    82  , WarnOnUnplacedInstances = (1 << 5)
    83  , StayOnPlugs = (1 << 6)
    84  , MaskRings = BuildRings|BuildClockRings|BuildSupplyRings
    85  // Flags set for Observers.
    86  , CellAboutToChange = (1 << 10)
    87  , CellChanged = (1 << 11)
    88  , CellDestroyed = (1 << 12)
    89  // Cell states
    90  , Terminal = (1 << 20)
    91  , FlattenLeaf = (1 << 21)
    92  , Pad = (1 << 22)
    93  , Feed = (1 << 23)
    94  , FlattenedNets = (1 << 24)
    95  , Placed = (1 << 25)
    96  , Routed = (1 << 26)
    97  , MergedQuadTree = (1 << 27)
    98  , SlavedAb = (1 << 28)
    99  , Materialized = (1 << 29)
    100  };
    101 
    102  public:
    103  Flags ( uint64_t flags = NoFlags );
    104  virtual ~Flags ();
    105  virtual std::string _getTypeName () const;
    106  virtual std::string _getString () const;
    107  };
    108 
    109  class UniquifyRelation : public Relation {
    110  public:
    111  static UniquifyRelation* create ( Cell* );
    112  static UniquifyRelation* get ( const Cell* );
    113  virtual Name getName () const;
    114  static Name staticGetName ();
    115  Name getUniqueName ();
    116  static std::string getTrunkName ( Name name );
    117  virtual bool hasJson () const;
    118  virtual void toJson ( JsonWriter*, const DBo* ) const;
    119  inline void _setOwner ( Cell* );
    120  inline void _setDuplicates ( unsigned int );
    121  virtual string _getTypeName () const;
    122  virtual Record* _getRecord () const;
    123  private:
    124  static const Name _name;
    125  unsigned int _duplicates;
    126  private:
    127  UniquifyRelation ( Cell* );
    128  protected:
    129  virtual void _preDestroy ();
    130 
    131  public:
    132  class JsonProperty : public JsonObject {
    133  public:
    134  static void initialize ();
    135  JsonProperty ( unsigned long flags );
    136  virtual string getTypeName () const;
    137  virtual JsonProperty* clone ( unsigned long ) const;
    138  virtual void toData ( JsonStack& );
    139  };
    140  public:
    141  class JsonPropertyRef : public JsonObject {
    142  public:
    143  static void initialize ();
    144  JsonPropertyRef ( unsigned long flags );
    145  virtual string getTypeName () const;
    146  virtual JsonPropertyRef* clone ( unsigned long ) const;
    147  virtual void toData ( JsonStack& );
    148  };
    149  };
    150 
    151  class ClonedSet : public Collection<Cell*> {
    152  public:
    153  // Sub-Class: Locator.
    154  class Locator : public Hurricane::Locator<Cell*> {
    155  public:
    156  Locator ( const Cell* );
    157  inline Locator ( const Locator& );
    158  virtual Cell* getElement () const;
    159  virtual Hurricane::Locator<Cell*>* getClone () const;
    160  virtual bool isValid () const;
    161  virtual void progress ();
    162  virtual string _getString () const;
    163  protected:
    164  Hurricane::Locator<DBo*>* _dboLocator;
    165  };
    166 
    167  public:
    168  inline ClonedSet ( const Cell* cell );
    169  inline ClonedSet ( const ClonedSet& );
    170  virtual Hurricane::Collection<Cell*>* getClone () const;
    171  virtual Hurricane::Locator<Cell*>* getLocator () const;
    172  virtual string _getString () const;
    173  protected:
    174  const Cell* _cell;
    175  };
    176 
    177  class SlavedsRelation : public Relation {
    178  public:
    179  static SlavedsRelation* create ( Cell* );
    180  static SlavedsRelation* get ( const Cell* );
    181  virtual Name getName () const;
    182  static Name staticGetName ();
    183  virtual bool hasJson () const;
    184  virtual void toJson ( JsonWriter*, const DBo* ) const;
    185  inline void _setOwner ( Cell* );
    186  virtual string _getTypeName () const;
    187  virtual Record* _getRecord () const;
    188  private:
    189  static const Name _name;
    190  private:
    191  SlavedsRelation ( Cell* );
    192  protected:
    193  virtual void _preDestroy ();
    194 
    195  public:
    196  class JsonProperty : public JsonObject {
    197  public:
    198  static void initialize ();
    199  JsonProperty ( unsigned long flags );
    200  virtual string getTypeName () const;
    201  virtual JsonProperty* clone ( unsigned long ) const;
    202  virtual void toData ( JsonStack& );
    203  };
    204  public:
    205  class JsonPropertyRef : public JsonObject {
    206  public:
    207  static void initialize ();
    208  JsonPropertyRef ( unsigned long flags );
    209  virtual string getTypeName () const;
    210  virtual JsonPropertyRef* clone ( unsigned long ) const;
    211  virtual void toData ( JsonStack& );
    212  };
    213  };
    214 
    215  class SlavedsSet : public Collection<Cell*> {
    216  public:
    217  // Sub-Class: Locator.
    218  class Locator : public Hurricane::Locator<Cell*> {
    219  public:
    220  Locator ( const Cell* );
    221  inline Locator ( const Locator& );
    222  virtual Cell* getElement () const;
    223  virtual Hurricane::Locator<Cell*>* getClone () const;
    224  virtual bool isValid () const;
    225  virtual void progress ();
    226  virtual string _getString () const;
    227  protected:
    228  Hurricane::Locator<DBo*>* _dboLocator;
    229  };
    230 
    231  public:
    232  inline SlavedsSet ( const Cell* cell );
    233  inline SlavedsSet ( const SlavedsSet& );
    234  virtual Hurricane::Collection<Cell*>* getClone () const;
    235  virtual Hurricane::Locator<Cell*>* getLocator () const;
    236  virtual string _getString () const;
    237  protected:
    238  const Cell* _cell;
    239  };
    240 
    241  class InstanceMap : public IntrusiveMap<Name, Instance> {
    242  // ****************************************************
    243 
    244  public: typedef IntrusiveMap<Name, Instance> Inherit;
    245 
    246  public: InstanceMap();
    247 
    248  public: virtual Name _getKey(Instance* instance) const;
    249  public: virtual unsigned _getHashValue(Name name) const;
    250  public: virtual Instance* _getNextElement(Instance* instance) const;
    251  public: virtual void _setNextElement(Instance* instance, Instance* nextInstance) const;
    252 
    253  };
    254 
    255  public: class SlaveInstanceSet : public IntrusiveSet<Instance> {
    256  // ***********************************************************
    257 
    258  public: typedef IntrusiveSet<Instance> Inherit;
    259 
    260  public: SlaveInstanceSet();
    261 
    262  public: virtual unsigned _getHashValue(Instance* slaveInstance) const;
    263  public: virtual Instance* _getNextElement(Instance* slaveInstance) const;
    264  public: virtual void _setNextElement(Instance* slaveInstance, Instance* nextSlaveInstance) const;
    265 
    266  };
    267 
    268  public: class NetMap : public IntrusiveMapConst<Name, Net> {
    269  // *********************************************************
    270 
    271  public: typedef IntrusiveMapConst<Name, Net> Inherit;
    272 
    273  public: NetMap();
    274 
    275  public: virtual const Name& _getKey(Net* net) const;
    276  public: virtual unsigned _getHashValue(const Name& name) const;
    277  public: virtual Net* _getNextElement(Net* net) const;
    278  public: virtual void _setNextElement(Net* net, Net* nextNet) const;
    279 
    280  };
    281 
    282  class PinMap : public IntrusiveMap<Name, Pin> {
    283  // *******************************************
    284 
    285  public: typedef IntrusiveMap<Name, Pin> Inherit;
    286 
    287  public: PinMap();
    288 
    289  public: virtual Name _getKey(Pin* pin) const;
    290  public: virtual unsigned _getHashValue(Name name) const;
    291  public: virtual Pin* _getNextElement(Pin* pin) const;
    292  public: virtual void _setNextElement(Pin* pin, Pin* nextPin) const;
    293 
    294  };
    295 
    296  public: class SliceMap : public IntrusiveMap<const Layer*, Slice> {
    297  // **************************************************************
    298 
    299  public: typedef IntrusiveMap<const Layer*, Slice> Inherit;
    300 
    301  public: SliceMap();
    302 
    303  public: virtual const Layer* _getKey(Slice* slice) const;
    304  public: virtual unsigned _getHashValue(const Layer* layer) const;
    305  public: virtual Slice* _getNextElement(Slice* slice) const;
    306  public: virtual void _setNextElement(Slice* slice, Slice* nextSlice) const;
    307 
    308  };
    309 
    310  public: class MarkerSet : public IntrusiveSet<Marker> {
    311  // **************************************************
    312 
    313  public: typedef IntrusiveSet<Marker> Inherit;
    314 
    315  public: MarkerSet();
    316 
    317  public: virtual unsigned _getHashValue(Marker* marker) const;
    318  public: virtual Marker* _getNextElement(Marker* marker) const;
    319  public: virtual void _setNextElement(Marker* marker, Marker* nextMarker) const;
    320 
    321  };
    322 
    323 // Attributes
    324 // **********
    325 
    326  private: Library* _library;
    327  private: Name _name;
    328  private: Path _shuntedPath;
    329  private: InstanceMap _instanceMap;
    330  private: QuadTree* _quadTree;
    331  private: SlaveInstanceSet _slaveInstanceSet;
    332  private: NetMap _netMap;
    333  private: PinMap _pinMap;
    334  private: SliceMap* _sliceMap;
    335  private: ExtensionSliceMap _extensionSlices;
    336  private: MarkerSet _markerSet;
    337  private: Box _abutmentBox;
    338  private: Box _boundingBox;
    339  private: Cell* _nextOfLibraryCellMap;
    340  private: Cell* _nextOfSymbolCellSet;
    341  private: SlaveEntityMap _slaveEntityMap;
    342  private: AliasNameSet _netAliasSet;
    343  private: Observable _observers;
    344  private: Flags _flags;
    345 
    346 // Constructors
    347 // ************
    348 
    349  protected: Cell(Library* library, const Name& name);
    350 
    351 // Others
    352 // ******
    353 
    354  protected: virtual void _postCreate();
    355 
    356  protected: virtual void _preDestroy();
    357 
    358  public: virtual string _getTypeName() const {return _TName("Cell");};
    359  public: virtual string _getString() const;
    360  public: virtual Record* _getRecord() const;
    361  public: static string getFlagString( uint64_t );
    362  public: static Record* getFlagRecord( uint64_t );
    363  public: static Slot* getFlagSlot( uint64_t );
    364 
    365  public: InstanceMap& _getInstanceMap() {return _instanceMap;};
    366  public: QuadTree* _getQuadTree() {return _quadTree;};
    367  public: SlaveInstanceSet& _getSlaveInstanceSet() {return _slaveInstanceSet;};
    368  public: NetMap& _getNetMap() {return _netMap;};
    369  public: PinMap& _getPinMap() {return _pinMap;};
    370  public: SliceMap* _getSliceMap() {return _sliceMap;};
    371  public: ExtensionSliceMap& _getExtensionSliceMap() {return _extensionSlices;};
    372  public: MarkerSet& _getMarkerSet() {return _markerSet;};
    373  public: Cell* _getNextOfLibraryCellMap() const {return _nextOfLibraryCellMap;};
    374  public: Cell* _getNextOfSymbolCellSet() const {return _nextOfSymbolCellSet;};
    375  public: AliasNameSet& _getNetAliasSet() { return _netAliasSet; }
    376 
    377  public: void _setNextOfLibraryCellMap(Cell* cell) {_nextOfLibraryCellMap = cell;};
    378  public: void _setNextOfSymbolCellSet(Cell* cell) {_nextOfSymbolCellSet = cell;};
    379 
    380  public: void _addNetAlias(NetAliasName* alias) { _netAliasSet.insert(alias); }
    381  public: void _removeNetAlias(NetAliasName* alias) { _netAliasSet.erase(alias); }
    382 
    383  public: void _fit(const Box& box);
    384  public: void _unfit(const Box& box);
    385 
    386  public: void _addSlaveEntity(Entity* entity, Entity* slaveEntity);
    387  public: void _removeSlaveEntity(Entity* entity, Entity* slaveEntity);
    388  public: void _getSlaveEntities(SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
    389  public: void _getSlaveEntities(Entity* entity, SlaveEntityMap::iterator& begin, SlaveEntityMap::iterator& end);
    390  public: void _insertSlice(ExtensionSlice*);
    391  public: void _removeSlice(ExtensionSlice*);
    392  public: void _slaveAbutmentBox(Cell*);
    393  public: void _changeQuadTree(Cell*);
    394  public: void _setShuntedPath(Path path) { _shuntedPath=path; }
    395  protected: void _setAbutmentBox(const Box& abutmentBox);
    396 
    397  public: virtual void _toJson(JsonWriter*) const;
    398  public: virtual void _toJsonCollections(JsonWriter*) const;
    399 
    400 // Constructors
    401 // ************
    402 
    403  public: static Cell* create(Library* library, const Name& name);
    404  public: static Cell* fromJson(const string& filename);
    405 
    406 // Accessors
    407 // *********
    408 
    409  public: virtual Cell* getCell() const {return (Cell*)this;};
    410  public: virtual Box getBoundingBox() const;
    411  public: Library* getLibrary() const {return _library;};
    412  public: string getHierarchicalName() const;
    413  public: const Name& getName() const {return _name;};
    414  public: const Flags& getFlags() const { return _flags; }
    415  public: Path getShuntedPath() const { return _shuntedPath; }
    416  public: Entity* getEntity(const Signature&) const;
    417  public: Instance* getInstance(const Name& name) const {return _instanceMap.getElement(name);};
    418  public: Instances getInstances() const {return _instanceMap.getElements();};
    419  public: Instances getPlacedInstances() const;
    420  public: Instances getFixedInstances() const;
    421  public: Instances getUnplacedInstances() const;
    422  public: Instances getNotUnplacedInstances() const;
    423  public: Instances getInstancesUnder(const Box& area) const;
    424  public: Instances getPlacedInstancesUnder(const Box& area) const;
    425  public: Instances getFixedInstancesUnder(const Box& area) const;
    426  public: Instances getUnplacedInstancesUnder(const Box& area) const;
    427  public: Instances getNotUnplacedInstancesUnder(const Box& area) const;
    428  public: Instances getSlaveInstances() const; // {return _slaveInstanceSet.getElements();}; NOON!!
    429  public: Instances getTerminalInstances() const;
    430  public: Instances getTerminalInstancesUnder(const Box& area) const;
    431  public: Instances getNonTerminalInstances() const;
    432  public: Instances getNonTerminalInstancesUnder(const Box& area) const;
    433  public: Instances getLeafInstances() const;
    434  public: Instances getLeafInstancesUnder(const Box& area) const;
    435  public: Instances getNonLeafInstances() const;
    436  public: Instances getNonLeafInstancesUnder(const Box& area) const;
    437  public: Net* getNet(const Name& name) const;
    438  public: DeepNet* getDeepNet( Path, const Net* ) const;
    439  public: Nets getNets() const {return _netMap.getElements();};
    440  public: Nets getGlobalNets() const;
    441  public: Nets getExternalNets() const;
    442  public: Nets getInternalNets() const;
    443  public: Nets getClockNets() const;
    444  public: Nets getSupplyNets() const;
    445  public: Nets getPowerNets() const;
    446  public: Nets getGroundNets() const;
    447  public: Pin* getPin(const Name& name) const {return _pinMap.getElement(name);};
    448  public: Pins getPins() const {return _pinMap.getElements();};
    449  public: Slice* getSlice(const Layer* layer) const {return _sliceMap->getElement(layer);};
    450  public: Slices getSlices(const Layer::Mask& mask = ~0) const;
    451  public: const ExtensionSliceMap& getExtensionSliceMap() const { return _extensionSlices; };
    452  public: ExtensionSlice* getExtensionSlice(const Name& name) const;
    453  public: ExtensionSlices getExtensionSlices(ExtensionSlice::Mask mask=~0) const;
    454  public: Rubbers getRubbers() const;
    455  public: Rubbers getRubbersUnder(const Box& area) const;
    456  public: Markers getMarkers() const {return _markerSet.getElements();};
    457  public: Markers getMarkersUnder(const Box& area) const;
    458  public: References getReferences() const;
    459  public: Components getComponents(const Layer::Mask& mask = ~0) const;
    460  public: Components getComponentsUnder(const Box& area, const Layer::Mask& mask = ~0) const;
    461  public: Occurrences getOccurrences(unsigned searchDepth = std::numeric_limits<unsigned int>::max()) const;
    462  public: Occurrences getOccurrencesUnder(const Box& area, unsigned searchDepth = std::numeric_limits<unsigned int>::max()) const;
    463  public: Occurrences getTerminalInstanceOccurrences() const;
    464  public: Occurrences getTerminalInstanceOccurrencesUnder(const Box& area) const;
    465  public: Occurrences getLeafInstanceOccurrences( const Instance* topInstance=NULL ) const;
    466  public: Occurrences getLeafInstanceOccurrencesUnder(const Box& area) const;
    467  public: Occurrences getNonLeafInstanceOccurrences( const Instance* topInstance=NULL ) const;
    468  public: Occurrences getComponentOccurrences(const Layer::Mask& mask = ~0) const;
    469  public: Occurrences getComponentOccurrencesUnder(const Box& area, const Layer::Mask& mask = ~0) const;
    470  public: Occurrences getHyperNetRootNetOccurrences() const;
    471  public: ExtensionSlice::Mask getExtensionSliceMask ( const Name& name ) const;
    472  public: Gos getExtensionGos ( const Name& name ) const;
    473  public: Gos getExtensionGos ( ExtensionSlice::Mask mask = ~0 ) const;
    474  public: Gos getExtensionGosUnder ( const Box& area, const Name& name ) const;
    475  public: Gos getExtensionGosUnder ( const Box& area, ExtensionSlice::Mask mask = ~0 ) const;
    476  public: Cells getSubCells() const;
    477  public: Cells getClonedCells() const;
    478  public: Cell* getCloneMaster() const;
    479  public: Pathes getRecursiveSlavePathes() const;
    480  public: const Box& getAbutmentBox() const {return _abutmentBox;};
    481 
    482 // Predicates
    483 // **********
    484 
    485  public: bool isCalledBy(Cell* cell) const;
    486  public: bool isTerminal() const {return _flags.isset(Flags::Terminal);};
    487  public: bool isFlattenLeaf() const {return _flags.isset(Flags::FlattenLeaf);};
    488  public: bool isLeaf() const;
    489  public: bool isUnique() const;
    490  public: bool isUniquified() const;
    491  public: bool isUniquifyMaster() const;
    492  public: bool isPad() const {return _flags.isset(Flags::Pad);};
    493  public: bool isFeed() const {return _flags.isset(Flags::Feed);};
    494  public: bool isFlattenedNets() const {return _flags.isset(Flags::FlattenedNets);};
    495  public: bool isPlaced() const {return _flags.isset(Flags::Placed);};
    496  public: bool isRouted() const {return _flags.isset(Flags::Routed);};
    497  public: bool isNetAlias(const Name& name) const;
    498 
    499 // Updators
    500 // ********
    501 
    502  public: void setName(const Name& name);
    503  public: void setAbutmentBox(const Box& abutmentBox);
    504  public: void slaveAbutmentBox(Cell*);
    505  public: void unslaveAbutmentBox(Cell*);
    506  public: void setTerminal(bool isTerminal) {_flags.set(Flags::Terminal,isTerminal);};
    507  public: void setFlattenLeaf(bool isFlattenLeaf) {_flags.set(Flags::FlattenLeaf,isFlattenLeaf);};
    508  public: void setPad(bool isPad) {_flags.set(Flags::Pad,isPad);};
    509  public: void setFeed(bool isFeed) {_flags.set(Flags::Feed,isFeed);};
    510  public: void setRouted(bool isRouted) {_flags.set(Flags::Routed,isRouted);};
    511  public: void flattenNets(uint64_t flags=Flags::BuildRings);
    512  public: void flattenNets(const Instance* instance, uint64_t flags=Flags::BuildRings);
    513  public: void createRoutingPadRings(uint64_t flags=Flags::BuildRings);
    514  public: void setFlags(uint64_t flags) { _flags |= flags; }
    515  public: void resetFlags(uint64_t flags) { _flags &= ~flags; }
    516  public: bool updatePlacedFlag();
    517  public: void materialize();
    518  public: void unmaterialize();
    519  public: Cell* getClone();
    520  public: void uniquify(unsigned int depth=std::numeric_limits<unsigned int>::max());
    521  public: void addObserver(BaseObserver*);
    522  public: void removeObserver(BaseObserver*);
    523  public: void notify(unsigned flags);
    524 
    525 };
    526 
    527 
    528 inline Cell::ClonedSet::Locator::Locator ( const Locator& other )
    529  : Hurricane::Locator<Cell*>()
    530  , _dboLocator(other._dboLocator)
    531 { }
    532 
    533 inline Cell::ClonedSet::ClonedSet ( const Cell* cell )
    534  : Hurricane::Collection<Cell*>()
    535  , _cell(cell)
    536 { }
    537 
    538 inline Cell::ClonedSet::ClonedSet ( const ClonedSet& other )
    539  : Hurricane::Collection<Cell*>()
    540  , _cell(other._cell)
    541 { }
    542 
    543 
    544 inline void Cell::UniquifyRelation::_setOwner ( Cell* owner ) { _setMasterOwner(owner); }
    545 inline void Cell::UniquifyRelation::_setDuplicates ( unsigned int duplicates ) { _duplicates=duplicates; }
    546 
    547 
    548 inline Cell::SlavedsSet::Locator::Locator ( const Locator& other )
    549  : Hurricane::Locator<Cell*>()
    550  , _dboLocator(other._dboLocator)
    551 { }
    552 
    553 inline Cell::SlavedsSet::SlavedsSet ( const Cell* cell )
    554  : Hurricane::Collection<Cell*>()
    555  , _cell(cell)
    556 { }
    557 
    558 inline Cell::SlavedsSet::SlavedsSet ( const SlavedsSet& other )
    559  : Hurricane::Collection<Cell*>()
    560  , _cell(other._cell)
    561 { }
    562 
    563 
    564 inline void Cell::SlavedsRelation::_setOwner ( Cell* owner ) { _setMasterOwner(owner); }
    565 
    566 
    567 class JsonCell : public JsonEntity {
    568 // *********************************
    569 
    570  public: static void initialize();
    571  public: JsonCell(unsigned long flags);
    572  public: virtual ~JsonCell();
    573  public: virtual string getTypeName() const;
    574  public: virtual JsonCell* clone(unsigned long) const;
    575  public: virtual void toData(JsonStack&);
    576  private: Cell* _cell;
    577  private: bool _materializationState;
    578 };
    579 
    580 } // End of Hurricane namespace.
    581 
    582 
    583 INSPECTOR_P_SUPPORT(Hurricane::Cell);
    584 INSPECTOR_P_SUPPORT(Hurricane::Cell::Flags);
    585 INSPECTOR_P_SUPPORT(Hurricane::Cell::InstanceMap);
    586 INSPECTOR_P_SUPPORT(Hurricane::Cell::SlaveInstanceSet);
    587 INSPECTOR_P_SUPPORT(Hurricane::Cell::NetMap);
    588 INSPECTOR_P_SUPPORT(Hurricane::Cell::PinMap);
    589 INSPECTOR_P_SUPPORT(Hurricane::Cell::SliceMap);
    590 INSPECTOR_P_SUPPORT(Hurricane::Cell::MarkerSet);
    591 
    592 
    593 #endif // HURRICANE_CELL_H
    594 
    595 
    596 // ****************************************************************************************************
    597 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    598 // ****************************************************************************************************
    Occurrences getLeafInstanceOccurrences(const Instance *topInstance=NULL) const
    +
    Path description (API)
    Definition: Path.h:37
    Collection description (API)
    Definition: Collection.h:39
    Pad description (API)
    Definition: Pad.h:36
    Library description (API)
    Definition: Library.h:38
    @@ -97,6 +98,7 @@ $(function() {
    GenericCollection< Path > Pathes
    Definition: Pathes.h:34
    void setName(const Name &name)
    Instance * getInstance(const Name &name) const
    Definition: Cell.h:417
    +
    Occurrences getNonLeafInstanceOccurrences(const Instance *topInstance=NULL) const
    The namespace dedicated to Hurricane.
    Definition: Generalities.dox:5
    QuadTree description (API)
    Definition: QuadTree.h:35
    GenericCollection< Component * > Components
    Definition: Components.h:27
    @@ -112,7 +114,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Cells_8h_source.html b/hurricane/doc/hurricane/html/Cells_8h_source.html index 1c817db5..b15dc88b 100644 --- a/hurricane/doc/hurricane/html/Cells_8h_source.html +++ b/hurricane/doc/hurricane/html/Cells_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Collection_8h_source.html b/hurricane/doc/hurricane/html/Collection_8h_source.html index 6ceaacd2..b9971d87 100644 --- a/hurricane/doc/hurricane/html/Collection_8h_source.html +++ b/hurricane/doc/hurricane/html/Collection_8h_source.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Commons_8h_source.html b/hurricane/doc/hurricane/html/Commons_8h_source.html index 7db56f32..e4c12e6a 100644 --- a/hurricane/doc/hurricane/html/Commons_8h_source.html +++ b/hurricane/doc/hurricane/html/Commons_8h_source.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Component_8h_source.html b/hurricane/doc/hurricane/html/Component_8h_source.html index 74ff4473..c74f14f9 100644 --- a/hurricane/doc/hurricane/html/Component_8h_source.html +++ b/hurricane/doc/hurricane/html/Component_8h_source.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Components_8h_source.html b/hurricane/doc/hurricane/html/Components_8h_source.html index cab03c9d..e95a1891 100644 --- a/hurricane/doc/hurricane/html/Components_8h_source.html +++ b/hurricane/doc/hurricane/html/Components_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/ContactLayer_8h_source.html b/hurricane/doc/hurricane/html/ContactLayer_8h_source.html index 5fb7e559..e03a9487 100644 --- a/hurricane/doc/hurricane/html/ContactLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/ContactLayer_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Contact_8h_source.html b/hurricane/doc/hurricane/html/Contact_8h_source.html index 29af1af7..3677951c 100644 --- a/hurricane/doc/hurricane/html/Contact_8h_source.html +++ b/hurricane/doc/hurricane/html/Contact_8h_source.html @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Contacts_8h_source.html b/hurricane/doc/hurricane/html/Contacts_8h_source.html index dc75c463..ad0b9302 100644 --- a/hurricane/doc/hurricane/html/Contacts_8h_source.html +++ b/hurricane/doc/hurricane/html/Contacts_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/DBo_8h_source.html b/hurricane/doc/hurricane/html/DBo_8h_source.html index aa6131bf..8b00ff62 100644 --- a/hurricane/doc/hurricane/html/DBo_8h_source.html +++ b/hurricane/doc/hurricane/html/DBo_8h_source.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/DBos_8h_source.html b/hurricane/doc/hurricane/html/DBos_8h_source.html index 045e2398..24a70651 100644 --- a/hurricane/doc/hurricane/html/DBos_8h_source.html +++ b/hurricane/doc/hurricane/html/DBos_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/DataBase_8h_source.html b/hurricane/doc/hurricane/html/DataBase_8h_source.html index 6083619c..b6b42361 100644 --- a/hurricane/doc/hurricane/html/DataBase_8h_source.html +++ b/hurricane/doc/hurricane/html/DataBase_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/DbU_8h_source.html b/hurricane/doc/hurricane/html/DbU_8h_source.html index 24de6f41..df727ea6 100644 --- a/hurricane/doc/hurricane/html/DbU_8h_source.html +++ b/hurricane/doc/hurricane/html/DbU_8h_source.html @@ -98,7 +98,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/DebugSession_8h_source.html b/hurricane/doc/hurricane/html/DebugSession_8h_source.html index 554efac9..4bb7f636 100644 --- a/hurricane/doc/hurricane/html/DebugSession_8h_source.html +++ b/hurricane/doc/hurricane/html/DebugSession_8h_source.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Diagonal_8h_source.html b/hurricane/doc/hurricane/html/Diagonal_8h_source.html index 84c68ca7..8a313b36 100644 --- a/hurricane/doc/hurricane/html/Diagonal_8h_source.html +++ b/hurricane/doc/hurricane/html/Diagonal_8h_source.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/DiffusionLayer_8h_source.html b/hurricane/doc/hurricane/html/DiffusionLayer_8h_source.html index b1ec678e..8364e474 100644 --- a/hurricane/doc/hurricane/html/DiffusionLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/DiffusionLayer_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Entities_8h_source.html b/hurricane/doc/hurricane/html/Entities_8h_source.html index cda4af08..cd1e0251 100644 --- a/hurricane/doc/hurricane/html/Entities_8h_source.html +++ b/hurricane/doc/hurricane/html/Entities_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Entity_8h_source.html b/hurricane/doc/hurricane/html/Entity_8h_source.html index 1aa30286..47090495 100644 --- a/hurricane/doc/hurricane/html/Entity_8h_source.html +++ b/hurricane/doc/hurricane/html/Entity_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Error_8h_source.html b/hurricane/doc/hurricane/html/Error_8h_source.html index 8bf06491..41fe8ace 100644 --- a/hurricane/doc/hurricane/html/Error_8h_source.html +++ b/hurricane/doc/hurricane/html/Error_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Exception_8h_source.html b/hurricane/doc/hurricane/html/Exception_8h_source.html index bc7dcab9..5c8268aa 100644 --- a/hurricane/doc/hurricane/html/Exception_8h_source.html +++ b/hurricane/doc/hurricane/html/Exception_8h_source.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Filter_8h_source.html b/hurricane/doc/hurricane/html/Filter_8h_source.html index a4778c45..c1e7f9b9 100644 --- a/hurricane/doc/hurricane/html/Filter_8h_source.html +++ b/hurricane/doc/hurricane/html/Filter_8h_source.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Go_8h_source.html b/hurricane/doc/hurricane/html/Go_8h_source.html index b7812075..209aaa74 100644 --- a/hurricane/doc/hurricane/html/Go_8h_source.html +++ b/hurricane/doc/hurricane/html/Go_8h_source.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Gos_8h_source.html b/hurricane/doc/hurricane/html/Gos_8h_source.html index b1430960..fc95724d 100644 --- a/hurricane/doc/hurricane/html/Gos_8h_source.html +++ b/hurricane/doc/hurricane/html/Gos_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Hook_8h_source.html b/hurricane/doc/hurricane/html/Hook_8h_source.html index c0b64373..8d49e366 100644 --- a/hurricane/doc/hurricane/html/Hook_8h_source.html +++ b/hurricane/doc/hurricane/html/Hook_8h_source.html @@ -67,7 +67,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Hooks_8h_source.html b/hurricane/doc/hurricane/html/Hooks_8h_source.html index ed9a0472..3a1309aa 100644 --- a/hurricane/doc/hurricane/html/Hooks_8h_source.html +++ b/hurricane/doc/hurricane/html/Hooks_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Horizontal_8h_source.html b/hurricane/doc/hurricane/html/Horizontal_8h_source.html index 42d7b985..925bf6b9 100644 --- a/hurricane/doc/hurricane/html/Horizontal_8h_source.html +++ b/hurricane/doc/hurricane/html/Horizontal_8h_source.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Horizontals_8h_source.html b/hurricane/doc/hurricane/html/Horizontals_8h_source.html index 6fb48f8b..c51e94ed 100644 --- a/hurricane/doc/hurricane/html/Horizontals_8h_source.html +++ b/hurricane/doc/hurricane/html/Horizontals_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/HyperNet_8h_source.html b/hurricane/doc/hurricane/html/HyperNet_8h_source.html index c1337d25..d4cddd28 100644 --- a/hurricane/doc/hurricane/html/HyperNet_8h_source.html +++ b/hurricane/doc/hurricane/html/HyperNet_8h_source.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Initializer_8h_source.html b/hurricane/doc/hurricane/html/Initializer_8h_source.html index 1904e888..452d5283 100644 --- a/hurricane/doc/hurricane/html/Initializer_8h_source.html +++ b/hurricane/doc/hurricane/html/Initializer_8h_source.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Instance_8h_source.html b/hurricane/doc/hurricane/html/Instance_8h_source.html index 430f4594..359e70ca 100644 --- a/hurricane/doc/hurricane/html/Instance_8h_source.html +++ b/hurricane/doc/hurricane/html/Instance_8h_source.html @@ -86,7 +86,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Instances_8h_source.html b/hurricane/doc/hurricane/html/Instances_8h_source.html index 55b3ecd8..3630d0ed 100644 --- a/hurricane/doc/hurricane/html/Instances_8h_source.html +++ b/hurricane/doc/hurricane/html/Instances_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Interruption_8h_source.html b/hurricane/doc/hurricane/html/Interruption_8h_source.html index 845ef036..8849983e 100644 --- a/hurricane/doc/hurricane/html/Interruption_8h_source.html +++ b/hurricane/doc/hurricane/html/Interruption_8h_source.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Interval_8h_source.html b/hurricane/doc/hurricane/html/Interval_8h_source.html index 2b73585d..74eea0d4 100644 --- a/hurricane/doc/hurricane/html/Interval_8h_source.html +++ b/hurricane/doc/hurricane/html/Interval_8h_source.html @@ -72,7 +72,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Intervals_8h_source.html b/hurricane/doc/hurricane/html/Intervals_8h_source.html index 2e24d84e..e8552502 100644 --- a/hurricane/doc/hurricane/html/Intervals_8h_source.html +++ b/hurricane/doc/hurricane/html/Intervals_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/JsonObject_8h_source.html b/hurricane/doc/hurricane/html/JsonObject_8h_source.html index 53eb3794..4a62db5c 100644 --- a/hurricane/doc/hurricane/html/JsonObject_8h_source.html +++ b/hurricane/doc/hurricane/html/JsonObject_8h_source.html @@ -92,7 +92,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/JsonReader_8h_source.html b/hurricane/doc/hurricane/html/JsonReader_8h_source.html index e2b8deaa..5b3fac3e 100644 --- a/hurricane/doc/hurricane/html/JsonReader_8h_source.html +++ b/hurricane/doc/hurricane/html/JsonReader_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Layer_8h_source.html b/hurricane/doc/hurricane/html/Layer_8h_source.html index ee4ae742..9b691d4b 100644 --- a/hurricane/doc/hurricane/html/Layer_8h_source.html +++ b/hurricane/doc/hurricane/html/Layer_8h_source.html @@ -44,11 +44,11 @@ $(function() {
    Layer.h
    -
    1 
    2 // -*- C++ -*-
    3 //
    4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    5 //
    6 // This file is part of Hurricane.
    7 //
    8 // Hurricane is free software: you can redistribute it and/or modify
    9 // it under the terms of the GNU Lesser General Public License as
    10 // published by the Free Software Foundation, either version 3 of the
    11 // License, or (at your option) any later version.
    12 //
    13 // Hurricane is distributed in the hope that it will be useful, but
    14 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
    15 // TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    16 // General Public License for more details.
    17 //
    18 // You should have received a copy of the Lesser GNU General Public
    19 // License along with Hurricane. If not, see
    20 // <http://www.gnu.org/licenses/>.
    21 //
    22 // +-----------------------------------------------------------------+
    23 // | H U R R I C A N E |
    24 // | V L S I B a c k e n d D a t a - B a s e |
    25 // | |
    26 // | Author : Remy Escassut |
    27 // | E-mail : Jean-Paul.Chaput@lip6.fr |
    28 // | =============================================================== |
    29 // | C++ Header : "./hurricane/Layer.h" |
    30 // +-----------------------------------------------------------------+
    31 
    32 
    33 #ifndef HURRICANE_LAYER_H
    34 #define HURRICANE_LAYER_H
    35 
    36 #include "hurricane/Mask.h"
    37 #include "hurricane/DBo.h"
    38 #include "hurricane/Layers.h"
    39 #include "hurricane/DbU.h"
    40 #include "hurricane/BasicLayers.h"
    41 
    42 
    43 namespace Hurricane {
    44 
    45 
    46  class Technology;
    47 
    48 
    49 // -------------------------------------------------------------------
    50 // Class : "Hurricane::Layer".
    51 
    52  class Layer : public DBo {
    53  public:
    54  typedef DBo Super;
    55  public:
    56  static const uint32_t NoFlags = 0;
    57  static const uint32_t EnclosureH = (1 << 0);
    58  static const uint32_t EnclosureV = (1 << 1);
    59  static const uint32_t EnclosureMax = (1 << 2);
    60  static const uint32_t ExtensionCap = (1 << 3);
    61  static const uint32_t ExtensionWidth = (1 << 4);
    62 
    63  public:
    64  // Types.
    65  typedef Hurricane::Mask<unsigned long long> Mask;
    66  // Accessors.
    67  inline Technology* getTechnology () const;
    68  inline const Name& getName () const;
    69  inline const Mask& getMask () const;
    70  inline const Mask& getExtractMask () const;
    71  inline const DbU::Unit& getMinimalSize () const;
    72  inline const DbU::Unit& getMinimalSpacing () const;
    73  virtual BasicLayers getBasicLayers () const = 0;
    74  virtual const Layer* getBlockageLayer () const;
    75  virtual const Layer* getTop () const;
    76  virtual const Layer* getBottom () const;
    77  virtual const Layer* getOpposite ( const Layer* ) const;
    78  Layer* getMetalAbove ( bool useSymbolic=true ) const;
    79  Layer* getMetalBelow ( bool useSymbolic=true ) const;
    80  Layer* getCutAbove ( bool useSymbolic=true ) const;
    81  Layer* getCutBelow ( bool useSymbolic=true ) const;
    82  virtual DbU::Unit getEnclosure ( uint32_t flags ) const;
    83  virtual DbU::Unit getExtentionCap () const;
    84  virtual DbU::Unit getExtentionWidth () const;
    85  virtual DbU::Unit getEnclosure ( const BasicLayer* layer, uint32_t flags ) const;
    86  virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
    87  virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
    88  virtual DbU::Unit getTopEnclosure ( uint32_t flags ) const;
    89  virtual DbU::Unit getBottomEnclosure ( uint32_t flags ) const;
    90  // Predicates
    91  inline bool above ( const Layer* layer ) const;
    92  inline bool below ( const Layer* layer ) const;
    93  bool contains ( const Layer* layer ) const;
    94  bool intersect ( const Layer* layer ) const;
    95  inline bool isSymbolic () const;
    96  inline bool isBlockage () const;
    97  // Updators
    98  void setName ( const Name& name );
    99  inline void setSymbolic ( bool );
    100  inline void setBlockage ( bool );
    101  void setMinimalSize ( const DbU::Unit& minimalSize );
    102  void setMinimalSpacing ( const DbU::Unit& minimalSpacing );
    103  virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit, uint32_t flags );
    104  virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit );
    105  virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit );
    106  // Hurricane Managment.
    107  virtual void _toJson ( JsonWriter* ) const;
    108  virtual string _getString () const;
    109  virtual Record* _getRecord () const;
    110  inline Layer* _getNextOfTechnologyLayerMap () const;
    111  inline void _setMask ( const Mask& mask );
    112  inline void _setExtractMask ( const Mask& extractMask );
    113  inline void _setNextOfTechnologyLayerMap ( Layer* layer );
    114  virtual void _onDbuChange ( float scale );
    115  static const Name& _sgetName ( const Layer* );
    116 
    117  private:
    118  // Internal: Attributes
    119  Technology* _technology;
    120  Name _name;
    121  Mask _mask;
    122  Mask _extractMask;
    123  DbU::Unit _minimalSize;
    124  DbU::Unit _minimalSpacing;
    125  Layer* _nextOfTechnologyLayerMap;
    126  bool _symbolic;
    127  bool _blockage;
    128 
    129  protected:
    130  // Internal: Constructors & Destructors.
    131  Layer ( Technology* technology
    132  , const Name& name
    133  , const DbU::Unit& minimalSize = 0
    134  , const DbU::Unit& minimalSpacing = 0
    135  , const DbU::Unit& pitch = 0
    136  );
    137  virtual void _postCreate ();
    138  virtual void _preDestroy ();
    139 
    140  public:
    141  struct CompareByMask : public binary_function<const Layer*,const Layer*,bool> {
    142  inline bool operator() ( const Layer* lhs, const Layer* rhs ) const;
    143  };
    144  };
    145 
    146 
    147 // Inline Functions.
    148  inline bool Layer::isSymbolic () const { return _symbolic; }
    149  inline bool Layer::isBlockage () const { return _blockage; }
    150  inline bool Layer::above ( const Layer* layer ) const { return _mask > layer->getMask(); }
    151  inline bool Layer::below ( const Layer* layer ) const { return _mask < layer->getMask(); }
    152  inline Technology* Layer::getTechnology () const { return _technology; }
    153  inline const Name& Layer::getName () const { return _name; }
    154  inline const Layer::Mask& Layer::getMask () const { return _mask; }
    155  inline const Layer::Mask& Layer::getExtractMask () const { return _extractMask; }
    156  inline const DbU::Unit& Layer::getMinimalSize () const { return _minimalSize; }
    157  inline const DbU::Unit& Layer::getMinimalSpacing () const { return _minimalSpacing; }
    158  inline void Layer::setSymbolic ( bool state ) { _symbolic = state; }
    159  inline void Layer::setBlockage ( bool state ) { _blockage = state; }
    160  inline Layer* Layer::_getNextOfTechnologyLayerMap () const { return _nextOfTechnologyLayerMap; }
    161  inline void Layer::_setMask ( const Mask& mask ) { _mask = mask; }
    162  inline void Layer::_setExtractMask ( const Mask& extractMask ) { _extractMask = extractMask; }
    163  inline void Layer::_setNextOfTechnologyLayerMap ( Layer* layer ) { _nextOfTechnologyLayerMap = layer; }
    164 
    165  inline bool Layer::CompareByMask::operator() ( const Layer* lhs, const Layer* rhs ) const
    166  { return (lhs?lhs->getMask():Layer::Mask()) < (rhs?rhs->getMask():Layer::Mask()); }
    167 
    168 
    169 // -------------------------------------------------------------------
    170 // Class : "Hurricane::JsonLayer".
    171 
    172  class JsonLayer : public JsonDBo {
    173  public:
    174  JsonLayer ( unsigned long flags );
    175  Technology* lookupTechnology ( JsonStack&, const string& fname ) const;
    176  };
    177 
    178 
    179 } // Hurricane namespace.
    180 
    181 
    182 INSPECTOR_P_SUPPORT(Hurricane::Layer);
    183 INSPECTOR_PV_SUPPORT(Hurricane::Layer::Mask);
    184 
    185 
    186 #endif // HURRICANE_LAYER_H
    void setName(const Name &name)
    +
    1 
    2 // -*- C++ -*-
    3 //
    4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    5 //
    6 // This file is part of Hurricane.
    7 //
    8 // Hurricane is free software: you can redistribute it and/or modify
    9 // it under the terms of the GNU Lesser General Public License as
    10 // published by the Free Software Foundation, either version 3 of the
    11 // License, or (at your option) any later version.
    12 //
    13 // Hurricane is distributed in the hope that it will be useful, but
    14 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
    15 // TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    16 // General Public License for more details.
    17 //
    18 // You should have received a copy of the Lesser GNU General Public
    19 // License along with Hurricane. If not, see
    20 // <http://www.gnu.org/licenses/>.
    21 //
    22 // +-----------------------------------------------------------------+
    23 // | H U R R I C A N E |
    24 // | V L S I B a c k e n d D a t a - B a s e |
    25 // | |
    26 // | Author : Remy Escassut |
    27 // | E-mail : Jean-Paul.Chaput@lip6.fr |
    28 // | =============================================================== |
    29 // | C++ Header : "./hurricane/Layer.h" |
    30 // +-----------------------------------------------------------------+
    31 
    32 
    33 #ifndef HURRICANE_LAYER_H
    34 #define HURRICANE_LAYER_H
    35 
    36 #include "hurricane/Mask.h"
    37 #include "hurricane/DBo.h"
    38 #include "hurricane/Layers.h"
    39 #include "hurricane/DbU.h"
    40 #include "hurricane/BasicLayers.h"
    41 
    42 
    43 namespace Hurricane {
    44 
    45 
    46  class Technology;
    47 
    48 
    49 // -------------------------------------------------------------------
    50 // Class : "Hurricane::Layer".
    51 
    52  class Layer : public DBo {
    53  public:
    54  typedef DBo Super;
    55  public:
    56  static const uint32_t NoFlags = 0;
    57  static const uint32_t EnclosureH = (1 << 0);
    58  static const uint32_t EnclosureV = (1 << 1);
    59  static const uint32_t EnclosureMax = (1 << 2);
    60  static const uint32_t ExtensionCap = (1 << 3);
    61  static const uint32_t ExtensionWidth = (1 << 4);
    62 
    63  public:
    64  // Types.
    65  typedef Hurricane::Mask<unsigned long long> Mask;
    66  // Accessors.
    67  inline Technology* getTechnology () const;
    68  inline const Name& getName () const;
    69  inline const Mask& getMask () const;
    70  inline const Mask& getExtractMask () const;
    71  inline const DbU::Unit& getMinimalSize () const;
    72  inline const DbU::Unit& getMinimalSpacing () const;
    73  virtual BasicLayers getBasicLayers () const = 0;
    74  virtual const Layer* getBlockageLayer () const;
    75  virtual const Layer* getCut () const;
    76  virtual const Layer* getTop () const;
    77  virtual const Layer* getBottom () const;
    78  virtual const Layer* getOpposite ( const Layer* ) const;
    79  Layer* getMetalAbove ( bool useSymbolic=true ) const;
    80  Layer* getMetalBelow ( bool useSymbolic=true ) const;
    81  Layer* getCutAbove ( bool useSymbolic=true ) const;
    82  Layer* getCutBelow ( bool useSymbolic=true ) const;
    83  virtual DbU::Unit getEnclosure ( uint32_t flags ) const;
    84  virtual DbU::Unit getExtentionCap () const;
    85  virtual DbU::Unit getExtentionWidth () const;
    86  virtual DbU::Unit getEnclosure ( const BasicLayer* layer, uint32_t flags ) const;
    87  virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
    88  virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
    89  virtual DbU::Unit getTopEnclosure ( uint32_t flags ) const;
    90  virtual DbU::Unit getBottomEnclosure ( uint32_t flags ) const;
    91  // Predicates
    92  inline bool above ( const Layer* layer ) const;
    93  inline bool below ( const Layer* layer ) const;
    94  bool contains ( const Layer* layer ) const;
    95  bool intersect ( const Layer* layer ) const;
    96  inline bool isSymbolic () const;
    97  inline bool isBlockage () const;
    98  // Updators
    99  void setName ( const Name& name );
    100  inline void setSymbolic ( bool );
    101  inline void setBlockage ( bool );
    102  void setMinimalSize ( const DbU::Unit& minimalSize );
    103  void setMinimalSpacing ( const DbU::Unit& minimalSpacing );
    104  virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit, uint32_t flags );
    105  virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit );
    106  virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit );
    107  // Hurricane Managment.
    108  virtual void _toJson ( JsonWriter* ) const;
    109  virtual string _getString () const;
    110  virtual Record* _getRecord () const;
    111  inline Layer* _getNextOfTechnologyLayerMap () const;
    112  inline void _setMask ( const Mask& mask );
    113  inline void _setExtractMask ( const Mask& extractMask );
    114  inline void _setNextOfTechnologyLayerMap ( Layer* layer );
    115  virtual void _onDbuChange ( float scale );
    116  static const Name& _sgetName ( const Layer* );
    117 
    118  private:
    119  // Internal: Attributes
    120  Technology* _technology;
    121  Name _name;
    122  Mask _mask;
    123  Mask _extractMask;
    124  DbU::Unit _minimalSize;
    125  DbU::Unit _minimalSpacing;
    126  Layer* _nextOfTechnologyLayerMap;
    127  bool _symbolic;
    128  bool _blockage;
    129 
    130  protected:
    131  // Internal: Constructors & Destructors.
    132  Layer ( Technology* technology
    133  , const Name& name
    134  , const DbU::Unit& minimalSize = 0
    135  , const DbU::Unit& minimalSpacing = 0
    136  , const DbU::Unit& pitch = 0
    137  );
    138  virtual void _postCreate ();
    139  virtual void _preDestroy ();
    140 
    141  public:
    142  struct CompareByMask : public binary_function<const Layer*,const Layer*,bool> {
    143  inline bool operator() ( const Layer* lhs, const Layer* rhs ) const;
    144  };
    145  };
    146 
    147 
    148 // Inline Functions.
    149  inline bool Layer::isSymbolic () const { return _symbolic; }
    150  inline bool Layer::isBlockage () const { return _blockage; }
    151  inline bool Layer::above ( const Layer* layer ) const { return _mask > layer->getMask(); }
    152  inline bool Layer::below ( const Layer* layer ) const { return _mask < layer->getMask(); }
    153  inline Technology* Layer::getTechnology () const { return _technology; }
    154  inline const Name& Layer::getName () const { return _name; }
    155  inline const Layer::Mask& Layer::getMask () const { return _mask; }
    156  inline const Layer::Mask& Layer::getExtractMask () const { return _extractMask; }
    157  inline const DbU::Unit& Layer::getMinimalSize () const { return _minimalSize; }
    158  inline const DbU::Unit& Layer::getMinimalSpacing () const { return _minimalSpacing; }
    159  inline void Layer::setSymbolic ( bool state ) { _symbolic = state; }
    160  inline void Layer::setBlockage ( bool state ) { _blockage = state; }
    161  inline Layer* Layer::_getNextOfTechnologyLayerMap () const { return _nextOfTechnologyLayerMap; }
    162  inline void Layer::_setMask ( const Mask& mask ) { _mask = mask; }
    163  inline void Layer::_setExtractMask ( const Mask& extractMask ) { _extractMask = extractMask; }
    164  inline void Layer::_setNextOfTechnologyLayerMap ( Layer* layer ) { _nextOfTechnologyLayerMap = layer; }
    165 
    166  inline bool Layer::CompareByMask::operator() ( const Layer* lhs, const Layer* rhs ) const
    167  { return (lhs?lhs->getMask():Layer::Mask()) < (rhs?rhs->getMask():Layer::Mask()); }
    168 
    169 
    170 // -------------------------------------------------------------------
    171 // Class : "Hurricane::JsonLayer".
    172 
    173  class JsonLayer : public JsonDBo {
    174  public:
    175  JsonLayer ( unsigned long flags );
    176  Technology* lookupTechnology ( JsonStack&, const string& fname ) const;
    177  };
    178 
    179 
    180 } // Hurricane namespace.
    181 
    182 
    183 INSPECTOR_P_SUPPORT(Hurricane::Layer);
    184 INSPECTOR_PV_SUPPORT(Hurricane::Layer::Mask);
    185 
    186 
    187 #endif // HURRICANE_LAYER_H
    void setName(const Name &name)
    bool intersect(const Layer *layer) const
    BasicLayer description (API)
    Definition: BasicLayer.h:44
    -
    Technology * getTechnology() const
    Definition: Layer.h:152
    -
    const DbU::Unit & getMinimalSpacing() const
    Definition: Layer.h:157
    +
    Technology * getTechnology() const
    Definition: Layer.h:153
    +
    const DbU::Unit & getMinimalSpacing() const
    Definition: Layer.h:158
    bool contains(const Layer *layer) const
    Name description (API)
    Definition: Name.h:36
    Layer * getCutBelow(bool useSymbolic=true) const
    @@ -63,25 +63,25 @@ $(function() {
    void setMinimalSize(const DbU::Unit &minimalSize)
    virtual const Layer * getTop() const
    Layer description (API)
    Definition: Layer.h:52
    -
    const Mask & getMask() const
    Definition: Layer.h:154
    -
    bool above(const Layer *layer) const
    Definition: Layer.h:150
    -
    const Mask & getExtractMask() const
    Definition: Layer.h:155
    +
    const Mask & getMask() const
    Definition: Layer.h:155
    +
    bool above(const Layer *layer) const
    Definition: Layer.h:151
    +
    const Mask & getExtractMask() const
    Definition: Layer.h:156
    Layer * getCutAbove(bool useSymbolic=true) const
    void setMinimalSpacing(const DbU::Unit &minimalSpacing)
    -
    const Name & getName() const
    Definition: Layer.h:153
    +
    const Name & getName() const
    Definition: Layer.h:154
    The namespace dedicated to Hurricane.
    Definition: Generalities.dox:5
    virtual const Layer * getBottom() const
    -
    const DbU::Unit & getMinimalSize() const
    Definition: Layer.h:156
    +
    const DbU::Unit & getMinimalSize() const
    Definition: Layer.h:157
    Layer * getMetalBelow(bool useSymbolic=true) const
    virtual void setExtentionCap(const BasicLayer *layer, DbU::Unit)
    Technological rules description (API).
    Definition: Technology.h:66
    -
    bool below(const Layer *layer) const
    Definition: Layer.h:151
    +
    bool below(const Layer *layer) const
    Definition: Layer.h:152


    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Layers_8h_source.html b/hurricane/doc/hurricane/html/Layers_8h_source.html index 129cc848..df2cfb88 100644 --- a/hurricane/doc/hurricane/html/Layers_8h_source.html +++ b/hurricane/doc/hurricane/html/Layers_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Libraries_8h_source.html b/hurricane/doc/hurricane/html/Libraries_8h_source.html index d792f1df..da3fda93 100644 --- a/hurricane/doc/hurricane/html/Libraries_8h_source.html +++ b/hurricane/doc/hurricane/html/Libraries_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Library_8h_source.html b/hurricane/doc/hurricane/html/Library_8h_source.html index 327fe42a..1ef7dddc 100644 --- a/hurricane/doc/hurricane/html/Library_8h_source.html +++ b/hurricane/doc/hurricane/html/Library_8h_source.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/ListCollection_8h_source.html b/hurricane/doc/hurricane/html/ListCollection_8h_source.html index 7b252c51..2562e6b0 100644 --- a/hurricane/doc/hurricane/html/ListCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/ListCollection_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Locator_8h_source.html b/hurricane/doc/hurricane/html/Locator_8h_source.html index c14d2880..5e7ca429 100644 --- a/hurricane/doc/hurricane/html/Locator_8h_source.html +++ b/hurricane/doc/hurricane/html/Locator_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/MapCollection_8h_source.html b/hurricane/doc/hurricane/html/MapCollection_8h_source.html index 26502798..2ac6ec49 100644 --- a/hurricane/doc/hurricane/html/MapCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/MapCollection_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Name_8h_source.html b/hurricane/doc/hurricane/html/Name_8h_source.html index 7397700a..7400a327 100644 --- a/hurricane/doc/hurricane/html/Name_8h_source.html +++ b/hurricane/doc/hurricane/html/Name_8h_source.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Names_8h_source.html b/hurricane/doc/hurricane/html/Names_8h_source.html index ba7aff89..042e0665 100644 --- a/hurricane/doc/hurricane/html/Names_8h_source.html +++ b/hurricane/doc/hurricane/html/Names_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Net_8h_source.html b/hurricane/doc/hurricane/html/Net_8h_source.html index b96e2712..82028837 100644 --- a/hurricane/doc/hurricane/html/Net_8h_source.html +++ b/hurricane/doc/hurricane/html/Net_8h_source.html @@ -123,7 +123,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Nets_8h_source.html b/hurricane/doc/hurricane/html/Nets_8h_source.html index ddf4e839..76582615 100644 --- a/hurricane/doc/hurricane/html/Nets_8h_source.html +++ b/hurricane/doc/hurricane/html/Nets_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Occurrence_8h_source.html b/hurricane/doc/hurricane/html/Occurrence_8h_source.html index 36c09df1..4994140d 100644 --- a/hurricane/doc/hurricane/html/Occurrence_8h_source.html +++ b/hurricane/doc/hurricane/html/Occurrence_8h_source.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Occurrences_8h_source.html b/hurricane/doc/hurricane/html/Occurrences_8h_source.html index 9915e2b8..6940ebd6 100644 --- a/hurricane/doc/hurricane/html/Occurrences_8h_source.html +++ b/hurricane/doc/hurricane/html/Occurrences_8h_source.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Pad_8h_source.html b/hurricane/doc/hurricane/html/Pad_8h_source.html index de9e1a73..8733fa21 100644 --- a/hurricane/doc/hurricane/html/Pad_8h_source.html +++ b/hurricane/doc/hurricane/html/Pad_8h_source.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Pads_8h_source.html b/hurricane/doc/hurricane/html/Pads_8h_source.html index f115f173..7593b48b 100644 --- a/hurricane/doc/hurricane/html/Pads_8h_source.html +++ b/hurricane/doc/hurricane/html/Pads_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Path_8h_source.html b/hurricane/doc/hurricane/html/Path_8h_source.html index 258b2f09..0eea7854 100644 --- a/hurricane/doc/hurricane/html/Path_8h_source.html +++ b/hurricane/doc/hurricane/html/Path_8h_source.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Pathes_8h_source.html b/hurricane/doc/hurricane/html/Pathes_8h_source.html index 4a2177b0..d9aed9ba 100644 --- a/hurricane/doc/hurricane/html/Pathes_8h_source.html +++ b/hurricane/doc/hurricane/html/Pathes_8h_source.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Pin_8h_source.html b/hurricane/doc/hurricane/html/Pin_8h_source.html index 1586f24e..8eb23028 100644 --- a/hurricane/doc/hurricane/html/Pin_8h_source.html +++ b/hurricane/doc/hurricane/html/Pin_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Pins_8h_source.html b/hurricane/doc/hurricane/html/Pins_8h_source.html index 58553725..0f9a1d52 100644 --- a/hurricane/doc/hurricane/html/Pins_8h_source.html +++ b/hurricane/doc/hurricane/html/Pins_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Plug_8h_source.html b/hurricane/doc/hurricane/html/Plug_8h_source.html index f94575e2..4b180c4e 100644 --- a/hurricane/doc/hurricane/html/Plug_8h_source.html +++ b/hurricane/doc/hurricane/html/Plug_8h_source.html @@ -69,7 +69,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Plugs_8h_source.html b/hurricane/doc/hurricane/html/Plugs_8h_source.html index 173fe642..aa4dc6a0 100644 --- a/hurricane/doc/hurricane/html/Plugs_8h_source.html +++ b/hurricane/doc/hurricane/html/Plugs_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Point_8h_source.html b/hurricane/doc/hurricane/html/Point_8h_source.html index 2603776c..6f3cfaf7 100644 --- a/hurricane/doc/hurricane/html/Point_8h_source.html +++ b/hurricane/doc/hurricane/html/Point_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Points_8h_source.html b/hurricane/doc/hurricane/html/Points_8h_source.html index 839134c3..d67a77dc 100644 --- a/hurricane/doc/hurricane/html/Points_8h_source.html +++ b/hurricane/doc/hurricane/html/Points_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Polygon_8h_source.html b/hurricane/doc/hurricane/html/Polygon_8h_source.html index 252d8274..c73d1ad5 100644 --- a/hurricane/doc/hurricane/html/Polygon_8h_source.html +++ b/hurricane/doc/hurricane/html/Polygon_8h_source.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Properties_8h_source.html b/hurricane/doc/hurricane/html/Properties_8h_source.html index 14dd7b2c..b5d44a9d 100644 --- a/hurricane/doc/hurricane/html/Properties_8h_source.html +++ b/hurricane/doc/hurricane/html/Properties_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Property_8h_source.html b/hurricane/doc/hurricane/html/Property_8h_source.html index 741d1b31..59d90316 100644 --- a/hurricane/doc/hurricane/html/Property_8h_source.html +++ b/hurricane/doc/hurricane/html/Property_8h_source.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/QuadTree_8h_source.html b/hurricane/doc/hurricane/html/QuadTree_8h_source.html index 5ac6597e..2275aac0 100644 --- a/hurricane/doc/hurricane/html/QuadTree_8h_source.html +++ b/hurricane/doc/hurricane/html/QuadTree_8h_source.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Quark_8h_source.html b/hurricane/doc/hurricane/html/Quark_8h_source.html index 5ec84991..4434a8f3 100644 --- a/hurricane/doc/hurricane/html/Quark_8h_source.html +++ b/hurricane/doc/hurricane/html/Quark_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Quarks_8h_source.html b/hurricane/doc/hurricane/html/Quarks_8h_source.html index a4b560bf..cdbc9d01 100644 --- a/hurricane/doc/hurricane/html/Quarks_8h_source.html +++ b/hurricane/doc/hurricane/html/Quarks_8h_source.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Query_8h_source.html b/hurricane/doc/hurricane/html/Query_8h_source.html index 3b4b4847..6c8937ff 100644 --- a/hurricane/doc/hurricane/html/Query_8h_source.html +++ b/hurricane/doc/hurricane/html/Query_8h_source.html @@ -98,7 +98,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/RegularLayer_8h_source.html b/hurricane/doc/hurricane/html/RegularLayer_8h_source.html index 7f9a55a8..e4e24cba 100644 --- a/hurricane/doc/hurricane/html/RegularLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/RegularLayer_8h_source.html @@ -44,14 +44,14 @@ $(function() {
    RegularLayer.h
    -
    1 
    2 // -*- C++ -*-
    3 //
    4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    5 //
    6 // This file is part of Hurricane.
    7 //
    8 // Hurricane is free software: you can redistribute it and/or modify
    9 // it under the terms of the GNU Lesser General Public License as
    10 // published by the Free Software Foundation, either version 3 of the
    11 // License, or (at your option) any later version.
    12 //
    13 // Hurricane is distributed in the hope that it will be useful, but
    14 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
    15 // TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    16 // General Public License for more details.
    17 //
    18 // You should have received a copy of the Lesser GNU General Public
    19 // License along with Hurricane. If not, see
    20 // <http://www.gnu.org/licenses/>.
    21 //
    22 // +-----------------------------------------------------------------+
    23 // | H U R R I C A N E |
    24 // | V L S I B a c k e n d D a t a - B a s e |
    25 // | |
    26 // | Author : Jean-Paul Chaput |
    27 // | E-mail : Jean-Paul.Chaput@lip6.fr |
    28 // | =============================================================== |
    29 // | C++ Header : "./hurricane/RegularLayer.h" |
    30 // +-----------------------------------------------------------------+
    31 
    32 
    33 #ifndef HURRICANE_REGULAR_LAYER_H
    34 #define HURRICANE_REGULAR_LAYER_H
    35 
    36 #include "hurricane/Layer.h"
    37 #include "hurricane/RegularLayers.h"
    38 
    39 
    40 namespace Hurricane {
    41 
    42 // -------------------------------------------------------------------
    43 // Class : "Hurricane::RegularLayer".
    44 
    45  class RegularLayer : public Layer {
    46  public:
    47  typedef Layer Super;
    48 
    49  public:
    50  // Constructor.
    51  static RegularLayer* create ( Technology* technology
    52  , const Name& name
    53  );
    54  // Accessors.
    55  virtual BasicLayers getBasicLayers () const;
    56  inline BasicLayer* getBasicLayer () const;
    57  virtual const Layer* getBlockageLayer () const;
    58  virtual const Layer* getTop () const;
    59  virtual const Layer* getBottom () const;
    60  virtual const Layer* getOpposite ( const Layer* ) const;
    61  virtual DbU::Unit getEnclosure () const;
    62  virtual DbU::Unit getExtentionCap () const;
    63  virtual DbU::Unit getExtentionWidth () const;
    64  virtual DbU::Unit getEnclosure ( const BasicLayer* layer ) const;
    65  virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
    66  virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
    67  // Updators
    68  void setBasicLayer ( BasicLayer* layer );
    69  virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure );
    70  virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit cap );
    71  virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit width );
    72  // Hurricane Managment.
    73  virtual void _toJson ( JsonWriter* ) const;
    74  virtual void _onDbuChange ( float scale );
    75  virtual string _getTypeName () const;
    76  virtual string _getString () const;
    77  virtual Record* _getRecord () const;
    78 
    79  private:
    80  // Internal: Attributes
    81  BasicLayer* _basicLayer;
    82  DbU::Unit _enclosure;
    83  DbU::Unit _extentionCap;
    84  DbU::Unit _extentionWidth;
    85 
    86  protected:
    87  // Internal: Constructors & Destructors.
    88  RegularLayer ( Technology* technology
    89  , const Name& name
    90  );
    91  };
    92 
    93 
    94 // Inline Functions.
    95  inline BasicLayer* RegularLayer::getBasicLayer () const { return _basicLayer; }
    96 
    97 
    98 // -------------------------------------------------------------------
    99 // Class : "Hurricane::JsonRegularLayer".
    100 
    101  class JsonRegularLayer : public JsonLayer {
    102  public:
    103  static void initialize ();
    104  JsonRegularLayer ( unsigned long flags );
    105  ~JsonRegularLayer ();
    106  virtual string getTypeName () const;
    107  virtual JsonRegularLayer* clone ( unsigned long ) const;
    108  virtual void toData ( JsonStack& );
    109  };
    110 
    111 
    112 } // Hurricane namespace.
    113 
    114 INSPECTOR_P_SUPPORT(Hurricane::RegularLayer);
    115 
    116 #endif // HURRICANE_REGULAR_LAYER_H
    RegularLayer description (API)
    Definition: RegularLayer.h:45
    +
    1 
    2 // -*- C++ -*-
    3 //
    4 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    5 //
    6 // This file is part of Hurricane.
    7 //
    8 // Hurricane is free software: you can redistribute it and/or modify
    9 // it under the terms of the GNU Lesser General Public License as
    10 // published by the Free Software Foundation, either version 3 of the
    11 // License, or (at your option) any later version.
    12 //
    13 // Hurricane is distributed in the hope that it will be useful, but
    14 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
    15 // TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    16 // General Public License for more details.
    17 //
    18 // You should have received a copy of the Lesser GNU General Public
    19 // License along with Hurricane. If not, see
    20 // <http://www.gnu.org/licenses/>.
    21 //
    22 // +-----------------------------------------------------------------+
    23 // | H U R R I C A N E |
    24 // | V L S I B a c k e n d D a t a - B a s e |
    25 // | |
    26 // | Author : Jean-Paul Chaput |
    27 // | E-mail : Jean-Paul.Chaput@lip6.fr |
    28 // | =============================================================== |
    29 // | C++ Header : "./hurricane/RegularLayer.h" |
    30 // +-----------------------------------------------------------------+
    31 
    32 
    33 #ifndef HURRICANE_REGULAR_LAYER_H
    34 #define HURRICANE_REGULAR_LAYER_H
    35 
    36 #include "hurricane/Layer.h"
    37 #include "hurricane/RegularLayers.h"
    38 
    39 
    40 namespace Hurricane {
    41 
    42 // -------------------------------------------------------------------
    43 // Class : "Hurricane::RegularLayer".
    44 
    45  class RegularLayer : public Layer {
    46  public:
    47  typedef Layer Super;
    48 
    49  public:
    50  // Constructor.
    51  static RegularLayer* create ( Technology* technology
    52  , const Name& name
    53  , BasicLayer* layer
    54  );
    55  // Accessors.
    56  virtual BasicLayers getBasicLayers () const;
    57  inline BasicLayer* getBasicLayer () const;
    58  virtual const Layer* getBlockageLayer () const;
    59  virtual const Layer* getTop () const;
    60  virtual const Layer* getBottom () const;
    61  virtual const Layer* getOpposite ( const Layer* ) const;
    62  virtual DbU::Unit getEnclosure () const;
    63  virtual DbU::Unit getExtentionCap () const;
    64  virtual DbU::Unit getExtentionWidth () const;
    65  virtual DbU::Unit getEnclosure ( const BasicLayer* layer ) const;
    66  virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
    67  virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
    68  // Updators
    69  void setBasicLayer ( BasicLayer* layer );
    70  virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure );
    71  virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit cap );
    72  virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit width );
    73  // Hurricane Managment.
    74  virtual void _toJson ( JsonWriter* ) const;
    75  virtual void _onDbuChange ( float scale );
    76  virtual string _getTypeName () const;
    77  virtual string _getString () const;
    78  virtual Record* _getRecord () const;
    79 
    80  private:
    81  // Internal: Attributes
    82  BasicLayer* _basicLayer;
    83  DbU::Unit _enclosure;
    84  DbU::Unit _extentionCap;
    85  DbU::Unit _extentionWidth;
    86 
    87  protected:
    88  // Internal: Constructors & Destructors.
    89  RegularLayer ( Technology* technology
    90  , const Name& name
    91  );
    92  };
    93 
    94 
    95 // Inline Functions.
    96  inline BasicLayer* RegularLayer::getBasicLayer () const { return _basicLayer; }
    97 
    98 
    99 // -------------------------------------------------------------------
    100 // Class : "Hurricane::JsonRegularLayer".
    101 
    102  class JsonRegularLayer : public JsonLayer {
    103  public:
    104  static void initialize ();
    105  JsonRegularLayer ( unsigned long flags );
    106  ~JsonRegularLayer ();
    107  virtual string getTypeName () const;
    108  virtual JsonRegularLayer* clone ( unsigned long ) const;
    109  virtual void toData ( JsonStack& );
    110  };
    111 
    112 
    113 } // Hurricane namespace.
    114 
    115 INSPECTOR_P_SUPPORT(Hurricane::RegularLayer);
    116 
    117 #endif // HURRICANE_REGULAR_LAYER_H
    RegularLayer description (API)
    Definition: RegularLayer.h:45
    BasicLayer description (API)
    Definition: BasicLayer.h:44
    Name description (API)
    Definition: Name.h:36
    std::int64_t Unit
    Definition: DbU.h:70
    DataBase object root class (API).
    Definition: DBo.h:46
    -
    BasicLayer * getBasicLayer() const
    Definition: RegularLayer.h:95
    +
    BasicLayer * getBasicLayer() const
    Definition: RegularLayer.h:96
    +
    static RegularLayer * create(Technology *technology, const Name &name, BasicLayer *layer)
    JSON Parser Stack.
    Definition: JsonObject.h:249
    -
    static RegularLayer * create(Technology *technology, const Name &name)
    Layer description (API)
    Definition: Layer.h:52
    The namespace dedicated to Hurricane.
    Definition: Generalities.dox:5
    Technological rules description (API).
    Definition: Technology.h:66
    @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Relation_8h_source.html b/hurricane/doc/hurricane/html/Relation_8h_source.html index 6b0ebaad..43e20f02 100644 --- a/hurricane/doc/hurricane/html/Relation_8h_source.html +++ b/hurricane/doc/hurricane/html/Relation_8h_source.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/RoutingPad_8h_source.html b/hurricane/doc/hurricane/html/RoutingPad_8h_source.html index 0aeef0bf..11de2e4d 100644 --- a/hurricane/doc/hurricane/html/RoutingPad_8h_source.html +++ b/hurricane/doc/hurricane/html/RoutingPad_8h_source.html @@ -90,7 +90,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Rubber_8h_source.html b/hurricane/doc/hurricane/html/Rubber_8h_source.html index 9854247b..cc63d795 100644 --- a/hurricane/doc/hurricane/html/Rubber_8h_source.html +++ b/hurricane/doc/hurricane/html/Rubber_8h_source.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Rubbers_8h_source.html b/hurricane/doc/hurricane/html/Rubbers_8h_source.html index 4c8ec061..aa5e5b83 100644 --- a/hurricane/doc/hurricane/html/Rubbers_8h_source.html +++ b/hurricane/doc/hurricane/html/Rubbers_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Segment_8h_source.html b/hurricane/doc/hurricane/html/Segment_8h_source.html index 953db325..9451cd6a 100644 --- a/hurricane/doc/hurricane/html/Segment_8h_source.html +++ b/hurricane/doc/hurricane/html/Segment_8h_source.html @@ -80,7 +80,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Segments_8h_source.html b/hurricane/doc/hurricane/html/Segments_8h_source.html index 950a7d39..1063dc4b 100644 --- a/hurricane/doc/hurricane/html/Segments_8h_source.html +++ b/hurricane/doc/hurricane/html/Segments_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/SetCollection_8h_source.html b/hurricane/doc/hurricane/html/SetCollection_8h_source.html index 448f9a7d..c22e15ca 100644 --- a/hurricane/doc/hurricane/html/SetCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/SetCollection_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Slice_8h_source.html b/hurricane/doc/hurricane/html/Slice_8h_source.html index 3aab9a3e..dd0c3a3d 100644 --- a/hurricane/doc/hurricane/html/Slice_8h_source.html +++ b/hurricane/doc/hurricane/html/Slice_8h_source.html @@ -67,7 +67,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Slices_8h_source.html b/hurricane/doc/hurricane/html/Slices_8h_source.html index 54b86f8a..92c26ba5 100644 --- a/hurricane/doc/hurricane/html/Slices_8h_source.html +++ b/hurricane/doc/hurricane/html/Slices_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Tabulation_8h_source.html b/hurricane/doc/hurricane/html/Tabulation_8h_source.html index cd752ccb..990513a7 100644 --- a/hurricane/doc/hurricane/html/Tabulation_8h_source.html +++ b/hurricane/doc/hurricane/html/Tabulation_8h_source.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Technology_8h_source.html b/hurricane/doc/hurricane/html/Technology_8h_source.html index 74c0e4b4..5bf38211 100644 --- a/hurricane/doc/hurricane/html/Technology_8h_source.html +++ b/hurricane/doc/hurricane/html/Technology_8h_source.html @@ -64,7 +64,7 @@ $(function() {
    The whole DataBase (API).
    Definition: DataBase.h:40
    Layer * getCutBelow(const Layer *, bool useSymbolic=true) const
    Layer description (API)
    Definition: Layer.h:52
    -
    const Mask & getMask() const
    Definition: Layer.h:154
    +
    const Mask & getMask() const
    Definition: Layer.h:155
    DataBase * getDataBase() const
    Definition: Technology.h:211
    Layer * getNthMetal(int) const
    The namespace dedicated to Hurricane.
    Definition: Generalities.dox:5
    @@ -80,7 +80,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Transformation_8h_source.html b/hurricane/doc/hurricane/html/Transformation_8h_source.html index 6fecef10..35ef4efc 100644 --- a/hurricane/doc/hurricane/html/Transformation_8h_source.html +++ b/hurricane/doc/hurricane/html/Transformation_8h_source.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/TransistorLayer_8h_source.html b/hurricane/doc/hurricane/html/TransistorLayer_8h_source.html index 7a1e617b..180715c6 100644 --- a/hurricane/doc/hurricane/html/TransistorLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/TransistorLayer_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/UpdateSession_8h_source.html b/hurricane/doc/hurricane/html/UpdateSession_8h_source.html index 31a6c83d..1b3c2745 100644 --- a/hurricane/doc/hurricane/html/UpdateSession_8h_source.html +++ b/hurricane/doc/hurricane/html/UpdateSession_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/VectorCollection_8h_source.html b/hurricane/doc/hurricane/html/VectorCollection_8h_source.html index 1de91f46..3126da76 100644 --- a/hurricane/doc/hurricane/html/VectorCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/VectorCollection_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Vertical_8h_source.html b/hurricane/doc/hurricane/html/Vertical_8h_source.html index 23c1a5d0..17f8f741 100644 --- a/hurricane/doc/hurricane/html/Vertical_8h_source.html +++ b/hurricane/doc/hurricane/html/Vertical_8h_source.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Verticals_8h_source.html b/hurricane/doc/hurricane/html/Verticals_8h_source.html index 70842ded..f36e736c 100644 --- a/hurricane/doc/hurricane/html/Verticals_8h_source.html +++ b/hurricane/doc/hurricane/html/Verticals_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/ViaLayer_8h_source.html b/hurricane/doc/hurricane/html/ViaLayer_8h_source.html index 59e1cddb..db442975 100644 --- a/hurricane/doc/hurricane/html/ViaLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/ViaLayer_8h_source.html @@ -44,7 +44,7 @@ $(function() {
    ViaLayer.h
    -
    1 // -*- C++ -*-
    2 //
    3 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    4 //
    5 // This file is part of Hurricane.
    6 //
    7 // Hurricane is free software: you can redistribute it and/or modify
    8 // it under the terms of the GNU Lesser General Public License as
    9 // published by the Free Software Foundation, either version 3 of the
    10 // License, or (at your option) any later version.
    11 //
    12 // Hurricane is distributed in the hope that it will be useful, but
    13 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
    14 // TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    15 // General Public License for more details.
    16 //
    17 // You should have received a copy of the Lesser GNU General Public
    18 // License along with Hurricane. If not, see
    19 // <http://www.gnu.org/licenses/>.
    20 //
    21 // +-----------------------------------------------------------------+
    22 // | H U R R I C A N E |
    23 // | V L S I B a c k e n d D a t a - B a s e |
    24 // | |
    25 // | Author : Jean-Paul Chaput |
    26 // | E-mail : Jean-Paul.Chaput@lip6.fr |
    27 // | =============================================================== |
    28 // | C++ Header : "./hurricane/ViaLayer.h" |
    29 // +-----------------------------------------------------------------+
    30 
    31 
    32 #ifndef HURRICANE_VIA_LAYER_H
    33 #define HURRICANE_VIA_LAYER_H
    34 
    35 #include <vector>
    36 
    37 #include "hurricane/Layer.h"
    38 #include "hurricane/ViaLayers.h"
    39 
    40 
    41 namespace Hurricane {
    42 
    43 // -------------------------------------------------------------------
    44 // Class : "Hurricane::ViaLayer".
    45 
    46  class ViaLayer : public Layer {
    47  public:
    48  typedef Layer Super;
    49 
    50  public:
    51  // Constructor.
    52  static ViaLayer* create ( Technology* technology
    53  , const Name& name
    54  , BasicLayer* bottomLayer
    55  , BasicLayer* cutLayer
    56  , BasicLayer* topLayer
    57  );
    58  // Accessors.
    59  virtual BasicLayers getBasicLayers () const;
    60  virtual const Layer* getTop () const;
    61  virtual const Layer* getBottom () const;
    62  virtual const Layer* getOpposite ( const Layer* ) const;
    63  virtual DbU::Unit getEnclosure ( uint32_t flags ) const;
    64  virtual DbU::Unit getEnclosure ( const BasicLayer* layer, uint32_t flags ) const;
    65  virtual DbU::Unit getTopEnclosure ( uint32_t flags ) const;
    66  virtual DbU::Unit getBottomEnclosure ( uint32_t flags ) const;
    67  // Updators.
    68  virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure, uint32_t flags );
    69  // Hurricane Managment.
    70  virtual void _toJson ( JsonWriter* ) const;
    71  virtual void _onDbuChange ( float scale );
    72  virtual string _getTypeName () const;
    73  virtual string _getString () const;
    74  virtual Record* _getRecord () const;
    75 
    76  private:
    77  // Internal: Attributes
    78  vector<BasicLayer*> _basicLayers;
    79  vector< pair<DbU::Unit,DbU::Unit> > _enclosures;
    80  DbU::Unit _maximalEnclosure;
    81 
    82  protected:
    83  // Internal: Constructors & Destructors.
    84  ViaLayer ( Technology* technology
    85  , const Name& name
    86  , BasicLayer* bottomLayer
    87  , BasicLayer* cutLayer
    88  , BasicLayer* topLayer
    89  );
    90  };
    91 
    92 
    93 // -------------------------------------------------------------------
    94 // Class : "Hurricane::JsonViaLayer".
    95 
    96  class JsonViaLayer : public JsonLayer {
    97  public:
    98  static void initialize ();
    99  JsonViaLayer ( unsigned long flags );
    100  ~JsonViaLayer ();
    101  virtual string getTypeName () const;
    102  virtual JsonViaLayer* clone ( unsigned long ) const;
    103  virtual void toData ( JsonStack& );
    104  };
    105 
    106 
    107 } // End of Hurricane namespace.
    108 
    109 
    110 INSPECTOR_P_SUPPORT(Hurricane::ViaLayer);
    111 
    112 
    113 # endif
    BasicLayer description (API)
    Definition: BasicLayer.h:44
    +
    1 // -*- C++ -*-
    2 //
    3 // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved
    4 //
    5 // This file is part of Hurricane.
    6 //
    7 // Hurricane is free software: you can redistribute it and/or modify
    8 // it under the terms of the GNU Lesser General Public License as
    9 // published by the Free Software Foundation, either version 3 of the
    10 // License, or (at your option) any later version.
    11 //
    12 // Hurricane is distributed in the hope that it will be useful, but
    13 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
    14 // TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
    15 // General Public License for more details.
    16 //
    17 // You should have received a copy of the Lesser GNU General Public
    18 // License along with Hurricane. If not, see
    19 // <http://www.gnu.org/licenses/>.
    20 //
    21 // +-----------------------------------------------------------------+
    22 // | H U R R I C A N E |
    23 // | V L S I B a c k e n d D a t a - B a s e |
    24 // | |
    25 // | Author : Jean-Paul Chaput |
    26 // | E-mail : Jean-Paul.Chaput@lip6.fr |
    27 // | =============================================================== |
    28 // | C++ Header : "./hurricane/ViaLayer.h" |
    29 // +-----------------------------------------------------------------+
    30 
    31 
    32 #ifndef HURRICANE_VIA_LAYER_H
    33 #define HURRICANE_VIA_LAYER_H
    34 
    35 #include <vector>
    36 
    37 #include "hurricane/Layer.h"
    38 #include "hurricane/ViaLayers.h"
    39 
    40 
    41 namespace Hurricane {
    42 
    43 // -------------------------------------------------------------------
    44 // Class : "Hurricane::ViaLayer".
    45 
    46  class ViaLayer : public Layer {
    47  public:
    48  typedef Layer Super;
    49 
    50  public:
    51  // Constructor.
    52  static ViaLayer* create ( Technology* technology
    53  , const Name& name
    54  , BasicLayer* bottomLayer
    55  , BasicLayer* cutLayer
    56  , BasicLayer* topLayer
    57  );
    58  // Accessors.
    59  virtual BasicLayers getBasicLayers () const;
    60  virtual const Layer* getCut () const;
    61  virtual const Layer* getTop () const;
    62  virtual const Layer* getBottom () const;
    63  virtual const Layer* getOpposite ( const Layer* ) const;
    64  virtual DbU::Unit getEnclosure ( uint32_t flags ) const;
    65  virtual DbU::Unit getEnclosure ( const BasicLayer* layer, uint32_t flags ) const;
    66  virtual DbU::Unit getTopEnclosure ( uint32_t flags ) const;
    67  virtual DbU::Unit getBottomEnclosure ( uint32_t flags ) const;
    68  // Updators.
    69  virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure, uint32_t flags );
    70  // Hurricane Managment.
    71  virtual void _toJson ( JsonWriter* ) const;
    72  virtual void _onDbuChange ( float scale );
    73  virtual string _getTypeName () const;
    74  virtual string _getString () const;
    75  virtual Record* _getRecord () const;
    76 
    77  private:
    78  // Internal: Attributes
    79  vector<BasicLayer*> _basicLayers;
    80  vector< pair<DbU::Unit,DbU::Unit> > _enclosures;
    81  DbU::Unit _maximalEnclosure;
    82 
    83  protected:
    84  // Internal: Constructors & Destructors.
    85  ViaLayer ( Technology* technology
    86  , const Name& name
    87  , BasicLayer* bottomLayer
    88  , BasicLayer* cutLayer
    89  , BasicLayer* topLayer
    90  );
    91  };
    92 
    93 
    94 // -------------------------------------------------------------------
    95 // Class : "Hurricane::JsonViaLayer".
    96 
    97  class JsonViaLayer : public JsonLayer {
    98  public:
    99  static void initialize ();
    100  JsonViaLayer ( unsigned long flags );
    101  ~JsonViaLayer ();
    102  virtual string getTypeName () const;
    103  virtual JsonViaLayer* clone ( unsigned long ) const;
    104  virtual void toData ( JsonStack& );
    105  };
    106 
    107 
    108 } // End of Hurricane namespace.
    109 
    110 
    111 INSPECTOR_P_SUPPORT(Hurricane::ViaLayer);
    112 
    113 
    114 # endif
    BasicLayer description (API)
    Definition: BasicLayer.h:44
    Name description (API)
    Definition: Name.h:36
    std::int64_t Unit
    Definition: DbU.h:70
    DataBase object root class (API).
    Definition: DBo.h:46
    @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/Warning_8h_source.html b/hurricane/doc/hurricane/html/Warning_8h_source.html index 103d5f37..08e15782 100644 --- a/hurricane/doc/hurricane/html/Warning_8h_source.html +++ b/hurricane/doc/hurricane/html/Warning_8h_source.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/annotated.html b/hurricane/doc/hurricane/html/annotated.html index 8d1c382b..5a8415ff 100644 --- a/hurricane/doc/hurricane/html/annotated.html +++ b/hurricane/doc/hurricane/html/annotated.html @@ -134,7 +134,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classEntity_1_1CompareById.html b/hurricane/doc/hurricane/html/classEntity_1_1CompareById.html index 80b7cb1f..715b8704 100644 --- a/hurricane/doc/hurricane/html/classEntity_1_1CompareById.html +++ b/hurricane/doc/hurricane/html/classEntity_1_1CompareById.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer-members.html index 6ef83a92..6d7157d1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer-members.html @@ -89,7 +89,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer.html b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer.html index 27c0a40e..036e1522 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer.html @@ -342,7 +342,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material-members.html index 9f1e7360..5bbb70d2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material-members.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material.html b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material.html index a817a8da..85e1c8ea 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material.html @@ -123,7 +123,7 @@ Public Types
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Box-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Box-members.html index a70166bc..dfc41320 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Box-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Box-members.html @@ -91,7 +91,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Box.html b/hurricane/doc/hurricane/html/classHurricane_1_1Box.html index 03ed86af..7ad0e659 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Box.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Box.html @@ -1104,7 +1104,7 @@ Remark on Modifiers
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Cell-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Cell-members.html index 8bf4b070..08361258 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Cell-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Cell-members.html @@ -61,10 +61,12 @@ $(function() { getInstances() constHurricane::Cellinline getInstancesUnder(const Box &area) constHurricane::Cell getInternalNets() constHurricane::Cell - getLibrary() constHurricane::Cellinline - getName() constHurricane::Cellinline - getNet(const Name &name) constHurricane::Cell - getNets() constHurricane::Cellinline + getLeafInstanceOccurrences(const Instance *topInstance=NULL) constHurricane::Cell + getLibrary() constHurricane::Cellinline + getName() constHurricane::Cellinline + getNet(const Name &name) constHurricane::Cell + getNets() constHurricane::Cellinline + getNonLeafInstanceOccurrences(const Instance *topInstance=NULL) constHurricane::Cell getOccurrences(unsigned searchDepth=std::numeric_limits< unsigned int >::max()) constHurricane::Cell getOccurrencesUnder(const Box &area, unsigned searchDepth=std::numeric_limits< unsigned int >::max()) constHurricane::Cell getProperties() constHurricane::DBo @@ -95,7 +97,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Cell.html b/hurricane/doc/hurricane/html/classHurricane_1_1Cell.html index fcb37d2f..616e81fd 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Cell.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Cell.html @@ -105,6 +105,10 @@ Public Member Functions   Occurrences getOccurrencesUnder (const Box &area, unsigned searchDepth=std::numeric_limits< unsigned int >::max()) const   +Occurrences getLeafInstanceOccurrences (const Instance *topInstance=NULL) const +  +Occurrences getNonLeafInstanceOccurrences (const Instance *topInstance=NULL) const +  const BoxgetAbutmentBox () const   bool isCalledBy (Cell *cell) const @@ -654,6 +658,44 @@ Static Public Member Functions
    Remark: The search depth is decremented each time a hirearchical
    level is crossed. The search ends when depth becomes null (the value INFINITE is equal to (unsigned)-1) .
    Caution: Only occurences corresponding to currently materialized
    entities are taken into account in this Collection.
    +
    +
    + +

    ◆ getLeafInstanceOccurrences()

    + +
    +
    + + + + + + + + +
    Occurrences Hurricane::Cell::getLeafInstanceOccurrences (const InstancetopInstance = NULL) const
    +
    +

    Returns the trans-hierarchical Collection of all instance Occurrences that are leaf cells. With the topInstance argument we can restrict the collection to leafs of that instance (of the current Cell) only.

    + +
    +
    + +

    ◆ getNonLeafInstanceOccurrences()

    + +
    +
    + + + + + + + + +
    Occurrences Hurricane::Cell::getNonLeafInstanceOccurrences (const InstancetopInstance = NULL) const
    +
    +

    Returns the trans-hierarchical Collection of all instance Occurrences that are not leaf cells. With the topInstance argument we can restrict the collection to non-leafs of that instance (of the current Cell) only.

    +
    @@ -943,7 +985,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Collection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Collection-members.html index 39481d45..a0728463 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Collection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Collection-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Collection.html b/hurricane/doc/hurricane/html/classHurricane_1_1Collection.html index 8ef6580f..4023e9d5 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Collection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Collection.html @@ -376,7 +376,7 @@ template<class SubType >

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Component-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Component-members.html index f72cbf05..4ff26fb2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component-members.html @@ -78,7 +78,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Component.html b/hurricane/doc/hurricane/html/classHurricane_1_1Component.html index d3b2b917..f5f2ab33 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component.html @@ -504,7 +504,7 @@ Predefined filters
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook-members.html index 385a8758..b84e584c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook-members.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook.html b/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook.html index 1930c38d..b6bc381b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook.html @@ -91,7 +91,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Contact-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Contact-members.html index b5cf3a4a..fb32a3b1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact-members.html @@ -92,7 +92,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Contact.html b/hurricane/doc/hurricane/html/classHurricane_1_1Contact.html index ad83c8f6..658e8978 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact.html @@ -768,7 +768,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer-members.html index 345eb0d0..8bf0681b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer-members.html @@ -84,7 +84,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer.html b/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer.html index 878ae80a..67b62908 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer.html @@ -225,7 +225,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook-members.html index 415238fb..ba28d11a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook-members.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook.html b/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook.html index 29b00624..1e3e269c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook.html @@ -92,7 +92,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DBo-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1DBo-members.html index cc5e88f2..c60aa1d9 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DBo-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DBo-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DBo.html b/hurricane/doc/hurricane/html/classHurricane_1_1DBo.html index 47676d13..2b9133b2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DBo.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DBo.html @@ -317,7 +317,7 @@ Remark
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DataBase-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1DataBase-members.html index fa890c61..43ca85e3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DataBase-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DataBase-members.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DataBase.html b/hurricane/doc/hurricane/html/classHurricane_1_1DataBase.html index caed41b8..b0b559ef 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DataBase.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DataBase.html @@ -213,7 +213,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DbU-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1DbU-members.html index f482ae6f..3735d142 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DbU-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DbU-members.html @@ -98,7 +98,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DbU.html b/hurricane/doc/hurricane/html/classHurricane_1_1DbU.html index 0efe46b3..c9a3a335 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DbU.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DbU.html @@ -168,7 +168,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession-members.html index a9082b68..2049d223 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession.html b/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession.html index eb8add0a..257b800f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession.html @@ -378,7 +378,7 @@ Trace Levels
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal-members.html index ad920590..64d00839 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal-members.html @@ -75,7 +75,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal.html b/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal.html index 4c420cad..6b8136a1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal.html @@ -211,7 +211,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer-members.html index e21c00bf..eb395fa8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer-members.html @@ -83,7 +83,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer.html b/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer.html index 7660f9ce..4f26a5a8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer.html @@ -211,7 +211,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Entity-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Entity-members.html index 348acadd..d86a4d06 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Entity-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Entity-members.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Entity.html b/hurricane/doc/hurricane/html/classHurricane_1_1Entity.html index e1872e37..be1e901f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Entity.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Entity.html @@ -174,7 +174,7 @@ Unique Identifier
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Error-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Error-members.html index ea0455b4..b3ec6908 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Error-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Error-members.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Error.html b/hurricane/doc/hurricane/html/classHurricane_1_1Error.html index 293c6b74..6aaa74af 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Error.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Error.html @@ -345,7 +345,7 @@ Printing format
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Exception-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Exception-members.html index 7038a0c6..a7ac790d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Exception-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Exception-members.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Exception.html b/hurricane/doc/hurricane/html/classHurricane_1_1Exception.html index 738ff1a8..9e5d5e26 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Exception.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Exception.html @@ -234,7 +234,7 @@ Example
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Filter-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Filter-members.html index 0136ef08..df3e4d28 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Filter-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Filter-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Filter.html b/hurricane/doc/hurricane/html/classHurricane_1_1Filter.html index 1bf18c27..9d9c9d34 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Filter.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Filter.html @@ -185,7 +185,7 @@ template<class Type>

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection-members.html index 0bf0cfe1..19ca55f3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection.html index bc2e83dc..b2952748 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection.html @@ -188,7 +188,7 @@ template<class Type>

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter-members.html index f4510e66..d345af6f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter.html b/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter.html index 7036bcbc..9d163a85 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter.html @@ -178,7 +178,7 @@ template<class Type >

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator-members.html index 6de107eb..187b7dac 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator.html b/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator.html index a2d5f0a3..bfc3d71f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator.html @@ -175,7 +175,7 @@ template<class Type>

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Go-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Go-members.html index d0fa2f5c..37b48882 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Go-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Go-members.html @@ -70,7 +70,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Go.html b/hurricane/doc/hurricane/html/classHurricane_1_1Go.html index 66bcbdbe..5aa02b56 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Go.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Go.html @@ -386,7 +386,7 @@ Construction and destruction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Hook-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Hook-members.html index e39d9942..c4b2c0ba 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Hook-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Hook-members.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Hook.html b/hurricane/doc/hurricane/html/classHurricane_1_1Hook.html index a6c82099..bfd3b3c0 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Hook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Hook.html @@ -420,7 +420,7 @@ Constructor and Destructor
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal-members.html index 8afe4ded..2f10734e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal-members.html @@ -92,7 +92,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal.html b/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal.html index 2d061005..6daadf7d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal.html @@ -419,7 +419,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet-members.html index 0c11d250..3a861037 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet.html b/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet.html index d45e5388..fe04c1ae 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet.html @@ -272,7 +272,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Initializer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Initializer-members.html index ec371ea0..09d15c82 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Initializer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Initializer-members.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Initializer.html b/hurricane/doc/hurricane/html/classHurricane_1_1Initializer.html index 956fdd75..e6119fec 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Initializer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Initializer.html @@ -105,7 +105,7 @@ template<typename T >

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Instance-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Instance-members.html index 6d092828..63bf4524 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance-members.html @@ -82,7 +82,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Instance.html b/hurricane/doc/hurricane/html/classHurricane_1_1Instance.html index 45cc3465..a9f29eef 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance.html @@ -646,7 +646,7 @@ Instance Destruction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus-members.html index 6313bb73..f0723229 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus.html b/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus.html index acfb5ac5..e2ae8694 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus.html @@ -209,7 +209,7 @@ Instance Placement Status
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Interruption-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Interruption-members.html index e1cddc74..4be9d44f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interruption-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interruption-members.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Interruption.html b/hurricane/doc/hurricane/html/classHurricane_1_1Interruption.html index d746a624..19921480 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interruption.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interruption.html @@ -188,7 +188,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Interval-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Interval-members.html index 11ac5bc5..1abebe95 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interval-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interval-members.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Interval.html b/hurricane/doc/hurricane/html/classHurricane_1_1Interval.html index dec1e3fe..0db5f863 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interval.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interval.html @@ -737,7 +737,7 @@ Remark
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject-members.html index b48ea94f..014b334e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject-members.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject.html b/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject.html index 054eb925..da31034e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject.html @@ -917,7 +917,7 @@ template<typename T >

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack-members.html index 1e5837e9..4f56c9aa 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack-members.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack.html b/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack.html index 7927baac..13c7a865 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack.html @@ -528,7 +528,7 @@ template<typename T >

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Layer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Layer-members.html index e84615e2..1f4d94fc 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Layer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Layer-members.html @@ -85,7 +85,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Layer.html b/hurricane/doc/hurricane/html/classHurricane_1_1Layer.html index 8fb78f49..a53fe23a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Layer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Layer.html @@ -834,7 +834,7 @@ Looking Up a Layer from a Mask
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Library-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Library-members.html index 72f5e759..df837f81 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Library-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Library-members.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Library.html b/hurricane/doc/hurricane/html/classHurricane_1_1Library.html index 46700219..951da19e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Library.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Library.html @@ -421,7 +421,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection-members.html index a3a78ed6..7e08fd1a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection.html index 6cf59aeb..35800b33 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection.html @@ -120,7 +120,7 @@ template<class Element >

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Locator-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Locator-members.html index 3b2b581e..06169a61 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Locator-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Locator-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Locator.html b/hurricane/doc/hurricane/html/classHurricane_1_1Locator.html index b8ce4f73..476657fb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Locator.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Locator.html @@ -211,7 +211,7 @@ template<class Type>

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection-members.html index aadb17a9..ce238b9d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection.html index 618c5227..48ed0361 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection.html @@ -120,7 +120,7 @@ template<class Key , class Element , class Compare = less<Key>> - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Name-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Name-members.html index cc35a910..5ce6d92a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Name-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Name-members.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Name.html b/hurricane/doc/hurricane/html/classHurricane_1_1Name.html index a362f2dd..3569dc59 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Name.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Name.html @@ -363,7 +363,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Net-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Net-members.html index 8227a266..e3c12cf6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net-members.html @@ -103,7 +103,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Net.html b/hurricane/doc/hurricane/html/classHurricane_1_1Net.html index 3916b988..82edf844 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net.html @@ -1167,7 +1167,7 @@ Predefined filters
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction-members.html index cbd9c0c4..188a34a6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction-members.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction.html b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction.html index 64b98c6b..ddcd7aee 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction.html @@ -135,7 +135,7 @@ Public Types
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type-members.html index 89c2ebc3..713a9505 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type.html b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type.html index 8539e072..75d58e6a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type.html @@ -103,7 +103,7 @@ Public Types
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter-members.html index 116d6436..bfb97d1f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter.html b/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter.html index 356fb13c..fd2d9288 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter.html @@ -146,7 +146,7 @@ template<class Type>

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence-members.html index 7e9278b4..c42bb1ab 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence-members.html @@ -72,7 +72,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence.html b/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence.html index a39c6682..38306d45 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence.html @@ -538,7 +538,7 @@ Remarks
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Pad-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Pad-members.html index 8b7836d1..6c2dd17e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pad-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pad-members.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Pad.html b/hurricane/doc/hurricane/html/classHurricane_1_1Pad.html index 8410a567..cb0f7835 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pad.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pad.html @@ -198,7 +198,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Path-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Path-members.html index 30a2a893..1a70f99c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Path-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Path-members.html @@ -75,7 +75,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Path.html b/hurricane/doc/hurricane/html/classHurricane_1_1Path.html index af23c421..9e79ed45 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Path.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Path.html @@ -605,7 +605,7 @@ Remarks
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Pin-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Pin-members.html index f226d4fc..22c0a6d8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pin-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pin-members.html @@ -91,7 +91,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Pin.html b/hurricane/doc/hurricane/html/classHurricane_1_1Pin.html index a9cd588c..f09b560c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pin.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pin.html @@ -166,7 +166,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Plug-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Plug-members.html index 91629fee..093a3c00 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Plug-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Plug-members.html @@ -77,7 +77,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Plug.html b/hurricane/doc/hurricane/html/classHurricane_1_1Plug.html index 0f28849f..c05fc12f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Plug.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Plug.html @@ -327,7 +327,7 @@ Predefined filters
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Point-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Point-members.html index f0896b83..09ae2aed 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Point-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Point-members.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Point.html b/hurricane/doc/hurricane/html/classHurricane_1_1Point.html index 6c7c1ca0..ccd5f4e3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Point.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Point.html @@ -291,7 +291,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Polygon-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Polygon-members.html index 01b61048..fe7da6bb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Polygon-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Polygon-members.html @@ -75,7 +75,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Polygon.html b/hurricane/doc/hurricane/html/classHurricane_1_1Polygon.html index 71ff9083..e2cdf0b5 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Polygon.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Polygon.html @@ -199,7 +199,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty-members.html index 69c58e78..fa6ee582 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty.html b/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty.html index 3248895c..27b38ec9 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty.html @@ -121,7 +121,7 @@ Destruction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Property-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Property-members.html index 91aee7aa..deaf16de 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Property-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Property-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Property.html b/hurricane/doc/hurricane/html/classHurricane_1_1Property.html index 4c57e37d..ca78e334 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Property.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Property.html @@ -258,7 +258,7 @@ Remarks
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree-members.html index efae8213..e85a42a2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree.html b/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree.html index a10296ec..449990a7 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree.html @@ -250,7 +250,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Quark-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Quark-members.html index 65aea7fc..6ff9d38a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Quark-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Quark-members.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Quark.html b/hurricane/doc/hurricane/html/classHurricane_1_1Quark.html index 3c51e04f..c4f59d6e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Quark.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Quark.html @@ -136,7 +136,7 @@ Example
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Query-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Query-members.html index a6776c07..8e704e68 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Query-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Query-members.html @@ -91,7 +91,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Query.html b/hurricane/doc/hurricane/html/classHurricane_1_1Query.html index 5310e77b..0e033e25 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Query.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Query.html @@ -1050,7 +1050,7 @@ secQueryParameters
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer-members.html index ef6bec6a..2e3cab6d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer-members.html @@ -51,7 +51,7 @@ $(function() { below(const Layer *layer) constHurricane::Layerinline clearProperties()Hurricane::DBo contains(const Layer *layer) constHurricane::Layer - create(Technology *technology, const Name &name)Hurricane::RegularLayerstatic + create(Technology *technology, const Name &name, BasicLayer *layer)Hurricane::RegularLayerstatic destroy()Hurricane::DBovirtual getBasicLayer() constHurricane::RegularLayerinline getCutAbove(bool useSymbolic=true) constHurricane::Layer @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer.html b/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer.html index 47fd3e41..b1a72ff9 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer.html @@ -122,8 +122,8 @@ Public Member Functions - - + +

    Static Public Member Functions

    static RegularLayercreate (Technology *technology, const Name &name)
     
    static RegularLayercreate (Technology *technology, const Name &name, BasicLayer *layer)
     
    @@ -145,8 +145,8 @@ RegularLayer::getOpposite()

    All returns that BasicLayer.

    It have one enclose, extention cap & extension width.

    Member Function Documentation

    - -

    ◆ create()

    + +

    ◆ create()

    @@ -164,7 +164,13 @@ RegularLayer::getOpposite()
    - + + + + + + + @@ -218,7 +224,7 @@ RegularLayer::getOpposite()

    Additional Inherited Members

    const Namename name,
    BasicLayerlayer 
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Relation-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Relation-members.html index ac6a7c32..daa69b0c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Relation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Relation-members.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Relation.html b/hurricane/doc/hurricane/html/classHurricane_1_1Relation.html index 098850b1..1f825749 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Relation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Relation.html @@ -78,7 +78,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad-members.html index 49178b4a..ca24fe75 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad-members.html @@ -98,7 +98,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad.html b/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad.html index a83be79f..9d43a199 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad.html @@ -721,7 +721,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Rubber-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Rubber-members.html index e6395bab..b45e49e0 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Rubber-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Rubber-members.html @@ -69,7 +69,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Rubber.html b/hurricane/doc/hurricane/html/classHurricane_1_1Rubber.html index 604a7270..20fad496 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Rubber.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Rubber.html @@ -257,7 +257,7 @@ Constructors & Destructors
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Segment-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Segment-members.html index 19972945..339854a1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment-members.html @@ -93,7 +93,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Segment.html b/hurricane/doc/hurricane/html/classHurricane_1_1Segment.html index 275a446c..272f1cf2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment.html @@ -644,7 +644,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook-members.html index e9df78f9..63f5bdca 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook-members.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook.html b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook.html index 73d6fc36..790dff57 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook.html @@ -91,7 +91,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook-members.html index 5fbaa453..d3302f3e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook-members.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook.html b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook.html index 5cb13538..9b083a3c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook.html @@ -91,7 +91,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection-members.html index ebde58f5..767bd525 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection.html index 47e4f84f..3ffe1e9b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection.html @@ -120,7 +120,7 @@ template<class Element , class Compare = less<Element>>
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty-members.html index 239bbf35..6e605dc6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty-members.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty.html b/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty.html index 7c7f3b84..4d32a235 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty.html @@ -89,7 +89,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Slice-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Slice-members.html index 81892c11..ac94b49f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Slice-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Slice-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Slice.html b/hurricane/doc/hurricane/html/classHurricane_1_1Slice.html index 1b25d03f..732abccb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Slice.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Slice.html @@ -233,7 +233,7 @@ Example
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty-members.html index 82f8a3cd..5f1d34fe 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty-members.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty.html b/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty.html index 46845313..f91f39b9 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty.html @@ -84,7 +84,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation-members.html index 3df93a5a..1ea84930 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation-members.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation.html b/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation.html index 96aa39ab..3867224c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation.html @@ -76,7 +76,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty-members.html index cbcc9693..9a6b971d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty-members.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty.html b/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty.html index 9b210185..ea9bb671 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty.html @@ -81,7 +81,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection-members.html index ab2ca9aa..167f1cd4 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection.html index 0b5a107a..2e99f630 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection.html @@ -165,7 +165,7 @@ template<class Type >
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection-members.html index cda0f6da..e928c263 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection-members.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection.html index 1b55e06b..a04558b8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection.html @@ -184,7 +184,7 @@ template<class Type , class SubType >
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation-members.html index 202920b8..154c0186 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation.html b/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation.html index 2e5a7f43..cbb80664 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation.html @@ -243,7 +243,7 @@ Remark
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Technology-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Technology-members.html index 23787c1d..da4ef66c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Technology-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Technology-members.html @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Technology.html b/hurricane/doc/hurricane/html/classHurricane_1_1Technology.html index 37b4bd5c..c0c4a132 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Technology.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Technology.html @@ -662,7 +662,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation-members.html index e88412ba..cb884224 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation-members.html @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation.html b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation.html index f5771178..d926c046 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation.html @@ -840,7 +840,7 @@ Transformers
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation-members.html index dc3e97cf..82542b64 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation-members.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation.html b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation.html index b2d71be8..98dd505a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation.html @@ -106,7 +106,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer-members.html index fbb557a2..eccb5f94 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer-members.html @@ -83,7 +83,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer.html b/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer.html index 77213338..ef0acc1a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer.html @@ -217,7 +217,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession-members.html index 6f5b50d8..5b901589 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession-members.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession.html b/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession.html index f47f47fa..c018eb64 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession.html @@ -87,7 +87,7 @@ Update Session Mechanism
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection-members.html index 105bf2af..fd3c4fce 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection.html b/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection.html index 287b84d8..7ea36433 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection.html @@ -120,7 +120,7 @@ template<class Element >
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Vertical-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Vertical-members.html index 43e2f327..a7f31d78 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Vertical-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Vertical-members.html @@ -92,7 +92,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Vertical.html b/hurricane/doc/hurricane/html/classHurricane_1_1Vertical.html index 5cc17254..321fc577 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Vertical.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Vertical.html @@ -420,7 +420,7 @@ Introduction
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer-members.html index c18f8269..140b6425 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer-members.html @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer.html b/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer.html index 826335f6..99795be6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer.html @@ -207,7 +207,7 @@ ViaLayer::getOpposite()
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Warning-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Warning-members.html index 742393dc..78e96181 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Warning-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Warning-members.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Warning.html b/hurricane/doc/hurricane/html/classHurricane_1_1Warning.html index 1c444b27..005a5354 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Warning.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Warning.html @@ -317,7 +317,7 @@ Remark
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/classes.html b/hurricane/doc/hurricane/html/classes.html index 137ffe66..6ffb1eef 100644 --- a/hurricane/doc/hurricane/html/classes.html +++ b/hurricane/doc/hurricane/html/classes.html @@ -136,7 +136,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/clasststream-members.html b/hurricane/doc/hurricane/html/clasststream-members.html index eba649ff..14efe027 100644 --- a/hurricane/doc/hurricane/html/clasststream-members.html +++ b/hurricane/doc/hurricane/html/clasststream-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/clasststream.html b/hurricane/doc/hurricane/html/clasststream.html index 76bca28d..fa1c50f9 100644 --- a/hurricane/doc/hurricane/html/clasststream.html +++ b/hurricane/doc/hurricane/html/clasststream.html @@ -404,7 +404,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html b/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html index ba1f444f..0c5e074b 100644 --- a/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html +++ b/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 3ffb0058..44333929 100644 --- a/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html b/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html index c177291c..5b4ef952 100644 --- a/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html +++ b/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html @@ -53,7 +53,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/files.html b/hurricane/doc/hurricane/html/files.html index d726197e..831fc8cc 100644 --- a/hurricane/doc/hurricane/html/files.html +++ b/hurricane/doc/hurricane/html/files.html @@ -138,7 +138,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions.html b/hurricane/doc/hurricane/html/functions.html index d0b9a3b1..35e5adc9 100644 --- a/hurricane/doc/hurricane/html/functions.html +++ b/hurricane/doc/hurricane/html/functions.html @@ -78,7 +78,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_0x7e.html b/hurricane/doc/hurricane/html/functions_0x7e.html index 33f14e6d..f37b5866 100644 --- a/hurricane/doc/hurricane/html/functions_0x7e.html +++ b/hurricane/doc/hurricane/html/functions_0x7e.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_b.html b/hurricane/doc/hurricane/html/functions_b.html index 3332361e..5f56aee6 100644 --- a/hurricane/doc/hurricane/html/functions_b.html +++ b/hurricane/doc/hurricane/html/functions_b.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_c.html b/hurricane/doc/hurricane/html/functions_c.html index 4c4312a2..9823701b 100644 --- a/hurricane/doc/hurricane/html/functions_c.html +++ b/hurricane/doc/hurricane/html/functions_c.html @@ -95,7 +95,7 @@ $(function() { , Hurricane::Net , Hurricane::Pad , Hurricane::Polygon -, Hurricane::RegularLayer +, Hurricane::RegularLayer , Hurricane::RoutingPad , Hurricane::Technology , Hurricane::TransistorLayer @@ -111,7 +111,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_d.html b/hurricane/doc/hurricane/html/functions_d.html index a96ddb9d..89f274df 100644 --- a/hurricane/doc/hurricane/html/functions_d.html +++ b/hurricane/doc/hurricane/html/functions_d.html @@ -94,7 +94,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_e.html b/hurricane/doc/hurricane/html/functions_e.html index e983c038..1d68c001 100644 --- a/hurricane/doc/hurricane/html/functions_e.html +++ b/hurricane/doc/hurricane/html/functions_e.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_enum.html b/hurricane/doc/hurricane/html/functions_enum.html index 68740a1e..e8378685 100644 --- a/hurricane/doc/hurricane/html/functions_enum.html +++ b/hurricane/doc/hurricane/html/functions_enum.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_eval.html b/hurricane/doc/hurricane/html/functions_eval.html index 946b05b5..489e860b 100644 --- a/hurricane/doc/hurricane/html/functions_eval.html +++ b/hurricane/doc/hurricane/html/functions_eval.html @@ -276,7 +276,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_f.html b/hurricane/doc/hurricane/html/functions_f.html index db5e550f..491fb2d0 100644 --- a/hurricane/doc/hurricane/html/functions_f.html +++ b/hurricane/doc/hurricane/html/functions_f.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func.html b/hurricane/doc/hurricane/html/functions_func.html index f0848d00..c12f578d 100644 --- a/hurricane/doc/hurricane/html/functions_func.html +++ b/hurricane/doc/hurricane/html/functions_func.html @@ -72,7 +72,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_0x7e.html b/hurricane/doc/hurricane/html/functions_func_0x7e.html index f673431d..52a957ce 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x7e.html +++ b/hurricane/doc/hurricane/html/functions_func_0x7e.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_b.html b/hurricane/doc/hurricane/html/functions_func_b.html index fe9db6e4..1ea71c8d 100644 --- a/hurricane/doc/hurricane/html/functions_func_b.html +++ b/hurricane/doc/hurricane/html/functions_func_b.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_c.html b/hurricane/doc/hurricane/html/functions_func_c.html index 2ec4860e..90a51e4e 100644 --- a/hurricane/doc/hurricane/html/functions_func_c.html +++ b/hurricane/doc/hurricane/html/functions_func_c.html @@ -77,7 +77,7 @@ $(function() { , Hurricane::Net , Hurricane::Pad , Hurricane::Polygon -, Hurricane::RegularLayer +, Hurricane::RegularLayer , Hurricane::RoutingPad , Hurricane::Technology , Hurricane::TransistorLayer @@ -90,7 +90,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_d.html b/hurricane/doc/hurricane/html/functions_func_d.html index 0f5a7dd6..f7b87ce3 100644 --- a/hurricane/doc/hurricane/html/functions_func_d.html +++ b/hurricane/doc/hurricane/html/functions_func_d.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_e.html b/hurricane/doc/hurricane/html/functions_func_e.html index 5eb573fc..f531b901 100644 --- a/hurricane/doc/hurricane/html/functions_func_e.html +++ b/hurricane/doc/hurricane/html/functions_func_e.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_f.html b/hurricane/doc/hurricane/html/functions_func_f.html index fd841b95..58338c4e 100644 --- a/hurricane/doc/hurricane/html/functions_func_f.html +++ b/hurricane/doc/hurricane/html/functions_func_f.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_g.html b/hurricane/doc/hurricane/html/functions_func_g.html index 8a3bc7e8..a40031f1 100644 --- a/hurricane/doc/hurricane/html/functions_func_g.html +++ b/hurricane/doc/hurricane/html/functions_func_g.html @@ -322,6 +322,9 @@ $(function() {
  • getLayers() : Hurricane::Technology
  • +
  • getLeafInstanceOccurrences() +: Hurricane::Cell +
  • getLeafPlugOccurrences() : Hurricane::HyperNet
  • @@ -419,6 +422,9 @@ $(function() {
  • getNextMasterHook() : Hurricane::Hook
  • +
  • getNonLeafInstanceOccurrences() +: Hurricane::Cell +
  • getNthMetal() : Hurricane::Technology
  • @@ -485,7 +491,7 @@ $(function() { , Hurricane::Net
  • getPoint() -: Hurricane::Transformation +: Hurricane::Transformation
  • getPosition() : Hurricane::Component @@ -596,7 +602,7 @@ $(function() { : Hurricane::Query
  • getSubSet() -: Hurricane::Collection< Type > +: Hurricane::Collection< Type >
  • getSupplyNets() : Hurricane::Cell @@ -696,7 +702,7 @@ $(function() { : Hurricane::Component , Hurricane::Net , Hurricane::RoutingPad -, Hurricane::Transformation +, Hurricane::Transformation
  • getXCenter() : Hurricane::Box @@ -734,7 +740,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_h.html b/hurricane/doc/hurricane/html/functions_func_h.html index d5b972cc..fc648bd0 100644 --- a/hurricane/doc/hurricane/html/functions_func_h.html +++ b/hurricane/doc/hurricane/html/functions_func_h.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_i.html b/hurricane/doc/hurricane/html/functions_func_i.html index c66f567f..cdf318de 100644 --- a/hurricane/doc/hurricane/html/functions_func_i.html +++ b/hurricane/doc/hurricane/html/functions_func_i.html @@ -157,7 +157,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_j.html b/hurricane/doc/hurricane/html/functions_func_j.html index f607fabe..b6fecb99 100644 --- a/hurricane/doc/hurricane/html/functions_func_j.html +++ b/hurricane/doc/hurricane/html/functions_func_j.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_l.html b/hurricane/doc/hurricane/html/functions_func_l.html index a5512b03..46a9f429 100644 --- a/hurricane/doc/hurricane/html/functions_func_l.html +++ b/hurricane/doc/hurricane/html/functions_func_l.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_m.html b/hurricane/doc/hurricane/html/functions_func_m.html index 9988b937..29c0963a 100644 --- a/hurricane/doc/hurricane/html/functions_func_m.html +++ b/hurricane/doc/hurricane/html/functions_func_m.html @@ -69,7 +69,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_n.html b/hurricane/doc/hurricane/html/functions_func_n.html index 7d5c6312..cda5f6bd 100644 --- a/hurricane/doc/hurricane/html/functions_func_n.html +++ b/hurricane/doc/hurricane/html/functions_func_n.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_o.html b/hurricane/doc/hurricane/html/functions_func_o.html index e8e65c86..1382abd1 100644 --- a/hurricane/doc/hurricane/html/functions_func_o.html +++ b/hurricane/doc/hurricane/html/functions_func_o.html @@ -116,7 +116,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_p.html b/hurricane/doc/hurricane/html/functions_func_p.html index 9fc39cfa..115e1a34 100644 --- a/hurricane/doc/hurricane/html/functions_func_p.html +++ b/hurricane/doc/hurricane/html/functions_func_p.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_q.html b/hurricane/doc/hurricane/html/functions_func_q.html index ddb6c8c4..47cdab72 100644 --- a/hurricane/doc/hurricane/html/functions_func_q.html +++ b/hurricane/doc/hurricane/html/functions_func_q.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_r.html b/hurricane/doc/hurricane/html/functions_func_r.html index b02da8d7..ab4c2e15 100644 --- a/hurricane/doc/hurricane/html/functions_func_r.html +++ b/hurricane/doc/hurricane/html/functions_func_r.html @@ -67,7 +67,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_s.html b/hurricane/doc/hurricane/html/functions_func_s.html index 28d8afab..cb13f99e 100644 --- a/hurricane/doc/hurricane/html/functions_func_s.html +++ b/hurricane/doc/hurricane/html/functions_func_s.html @@ -224,7 +224,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_t.html b/hurricane/doc/hurricane/html/functions_func_t.html index 105b5b2d..5e0f1637 100644 --- a/hurricane/doc/hurricane/html/functions_func_t.html +++ b/hurricane/doc/hurricane/html/functions_func_t.html @@ -84,7 +84,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_u.html b/hurricane/doc/hurricane/html/functions_func_u.html index 0e250145..bc130e78 100644 --- a/hurricane/doc/hurricane/html/functions_func_u.html +++ b/hurricane/doc/hurricane/html/functions_func_u.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_v.html b/hurricane/doc/hurricane/html/functions_func_v.html index 8bf12997..a00773ae 100644 --- a/hurricane/doc/hurricane/html/functions_func_v.html +++ b/hurricane/doc/hurricane/html/functions_func_v.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_func_w.html b/hurricane/doc/hurricane/html/functions_func_w.html index e35c5487..2192053d 100644 --- a/hurricane/doc/hurricane/html/functions_func_w.html +++ b/hurricane/doc/hurricane/html/functions_func_w.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_g.html b/hurricane/doc/hurricane/html/functions_g.html index 3b4e6228..e9e152f3 100644 --- a/hurricane/doc/hurricane/html/functions_g.html +++ b/hurricane/doc/hurricane/html/functions_g.html @@ -322,6 +322,9 @@ $(function() {
  • getLayers() : Hurricane::Technology
  • +
  • getLeafInstanceOccurrences() +: Hurricane::Cell +
  • getLeafPlugOccurrences() : Hurricane::HyperNet
  • @@ -419,6 +422,9 @@ $(function() {
  • getNextMasterHook() : Hurricane::Hook
  • +
  • getNonLeafInstanceOccurrences() +: Hurricane::Cell +
  • getNthMetal() : Hurricane::Technology
  • @@ -485,7 +491,7 @@ $(function() { , Hurricane::Net
  • getPoint() -: Hurricane::Transformation +: Hurricane::Transformation
  • getPosition() : Hurricane::Component @@ -711,7 +717,7 @@ $(function() { : Hurricane::Component , Hurricane::Net , Hurricane::RoutingPad -, Hurricane::Transformation +, Hurricane::Transformation
  • getYCenter() : Hurricane::Box @@ -740,7 +746,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_h.html b/hurricane/doc/hurricane/html/functions_h.html index 577e8475..b955b841 100644 --- a/hurricane/doc/hurricane/html/functions_h.html +++ b/hurricane/doc/hurricane/html/functions_h.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_i.html b/hurricane/doc/hurricane/html/functions_i.html index 3db960ce..8041c66e 100644 --- a/hurricane/doc/hurricane/html/functions_i.html +++ b/hurricane/doc/hurricane/html/functions_i.html @@ -181,7 +181,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_j.html b/hurricane/doc/hurricane/html/functions_j.html index bb3e23a3..f6c258c5 100644 --- a/hurricane/doc/hurricane/html/functions_j.html +++ b/hurricane/doc/hurricane/html/functions_j.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_k.html b/hurricane/doc/hurricane/html/functions_k.html index bba081b2..5397aba9 100644 --- a/hurricane/doc/hurricane/html/functions_k.html +++ b/hurricane/doc/hurricane/html/functions_k.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_l.html b/hurricane/doc/hurricane/html/functions_l.html index 1963d149..ecc5b9d8 100644 --- a/hurricane/doc/hurricane/html/functions_l.html +++ b/hurricane/doc/hurricane/html/functions_l.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_m.html b/hurricane/doc/hurricane/html/functions_m.html index e432c46e..672425e9 100644 --- a/hurricane/doc/hurricane/html/functions_m.html +++ b/hurricane/doc/hurricane/html/functions_m.html @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_n.html b/hurricane/doc/hurricane/html/functions_n.html index 64eefa99..ae2043b1 100644 --- a/hurricane/doc/hurricane/html/functions_n.html +++ b/hurricane/doc/hurricane/html/functions_n.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_o.html b/hurricane/doc/hurricane/html/functions_o.html index e63d6d1e..f4e06dc9 100644 --- a/hurricane/doc/hurricane/html/functions_o.html +++ b/hurricane/doc/hurricane/html/functions_o.html @@ -122,7 +122,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_p.html b/hurricane/doc/hurricane/html/functions_p.html index 0a3cf7ab..722f0bb7 100644 --- a/hurricane/doc/hurricane/html/functions_p.html +++ b/hurricane/doc/hurricane/html/functions_p.html @@ -97,7 +97,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_q.html b/hurricane/doc/hurricane/html/functions_q.html index 9cd3f414..4c3f58b3 100644 --- a/hurricane/doc/hurricane/html/functions_q.html +++ b/hurricane/doc/hurricane/html/functions_q.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_r.html b/hurricane/doc/hurricane/html/functions_r.html index f0b80106..c9e59b05 100644 --- a/hurricane/doc/hurricane/html/functions_r.html +++ b/hurricane/doc/hurricane/html/functions_r.html @@ -67,7 +67,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_s.html b/hurricane/doc/hurricane/html/functions_s.html index 68bb0cd2..37bda943 100644 --- a/hurricane/doc/hurricane/html/functions_s.html +++ b/hurricane/doc/hurricane/html/functions_s.html @@ -243,7 +243,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_t.html b/hurricane/doc/hurricane/html/functions_t.html index f5a3f6c1..27e3c6cf 100644 --- a/hurricane/doc/hurricane/html/functions_t.html +++ b/hurricane/doc/hurricane/html/functions_t.html @@ -90,7 +90,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_type.html b/hurricane/doc/hurricane/html/functions_type.html index a6e1c883..ecd0abc0 100644 --- a/hurricane/doc/hurricane/html/functions_type.html +++ b/hurricane/doc/hurricane/html/functions_type.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_u.html b/hurricane/doc/hurricane/html/functions_u.html index 3eb066fe..4958f43d 100644 --- a/hurricane/doc/hurricane/html/functions_u.html +++ b/hurricane/doc/hurricane/html/functions_u.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_v.html b/hurricane/doc/hurricane/html/functions_v.html index c0cb977d..77723d8e 100644 --- a/hurricane/doc/hurricane/html/functions_v.html +++ b/hurricane/doc/hurricane/html/functions_v.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/functions_w.html b/hurricane/doc/hurricane/html/functions_w.html index 80d33341..09c7cf5e 100644 --- a/hurricane/doc/hurricane/html/functions_w.html +++ b/hurricane/doc/hurricane/html/functions_w.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/graph_legend.html b/hurricane/doc/hurricane/html/graph_legend.html index 52cd60c5..28f2777b 100644 --- a/hurricane/doc/hurricane/html/graph_legend.html +++ b/hurricane/doc/hurricane/html/graph_legend.html @@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/group__DbUGroup.html b/hurricane/doc/hurricane/html/group__DbUGroup.html index c0f0d819..ab0f15eb 100644 --- a/hurricane/doc/hurricane/html/group__DbUGroup.html +++ b/hurricane/doc/hurricane/html/group__DbUGroup.html @@ -1293,7 +1293,7 @@ Translators
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/group__Generalities.html b/hurricane/doc/hurricane/html/group__Generalities.html index ca9ffc10..9c9da442 100644 --- a/hurricane/doc/hurricane/html/group__Generalities.html +++ b/hurricane/doc/hurricane/html/group__Generalities.html @@ -155,7 +155,7 @@ Remarks
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/group__JsonSupport.html b/hurricane/doc/hurricane/html/group__JsonSupport.html index 9bb45292..d12f22a8 100644 --- a/hurricane/doc/hurricane/html/group__JsonSupport.html +++ b/hurricane/doc/hurricane/html/group__JsonSupport.html @@ -117,7 +117,7 @@ JsonObject Life Cycle
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html b/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html index cdc5dc64..f0fb839e 100644 --- a/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html +++ b/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html @@ -236,7 +236,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/hierarchy.html b/hurricane/doc/hurricane/html/hierarchy.html index af92d155..a23ec0d1 100644 --- a/hurricane/doc/hurricane/html/hierarchy.html +++ b/hurricane/doc/hurricane/html/hierarchy.html @@ -143,7 +143,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/hurricane.tag b/hurricane/doc/hurricane/html/hurricane.tag index 8b0a2171..35e71793 100644 --- a/hurricane/doc/hurricane/html/hurricane.tag +++ b/hurricane/doc/hurricane/html/hurricane.tag @@ -481,6 +481,20 @@ a7fb09c8e350923c47ce4c4407bdb00ce (const Box &area, unsigned searchDepth=std::numeric_limits< unsigned int >::max()) const + + Occurrences + getLeafInstanceOccurrences + classHurricane_1_1Cell.html + a7d5a16e085ef5375862560e3c3eb4ea8 + (const Instance *topInstance=NULL) const + + + Occurrences + getNonLeafInstanceOccurrences + classHurricane_1_1Cell.html + ac32e4f232a8fc030aa809fe6565d8d95 + (const Instance *topInstance=NULL) const + const Box & getAbutmentBox @@ -5191,8 +5205,8 @@ static RegularLayer * create classHurricane_1_1RegularLayer.html - a88c2d5516f42b033ae2fdc0797e3dae1 - (Technology *technology, const Name &name) + a6b40a35fec1c4fc168d608b8b96c8477 + (Technology *technology, const Name &name, BasicLayer *layer) diff --git a/hurricane/doc/hurricane/html/index.html b/hurricane/doc/hurricane/html/index.html index e7fd41c8..6da8099f 100644 --- a/hurricane/doc/hurricane/html/index.html +++ b/hurricane/doc/hurricane/html/index.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/modules.html b/hurricane/doc/hurricane/html/modules.html index 88454554..847c7e91 100644 --- a/hurricane/doc/hurricane/html/modules.html +++ b/hurricane/doc/hurricane/html/modules.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/namespaceHurricane.html b/hurricane/doc/hurricane/html/namespaceHurricane.html index a0a81753..6999bd7a 100644 --- a/hurricane/doc/hurricane/html/namespaceHurricane.html +++ b/hurricane/doc/hurricane/html/namespaceHurricane.html @@ -1378,7 +1378,7 @@ Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/namespacemembers.html b/hurricane/doc/hurricane/html/namespacemembers.html index 88356643..a51309b7 100644 --- a/hurricane/doc/hurricane/html/namespacemembers.html +++ b/hurricane/doc/hurricane/html/namespacemembers.html @@ -285,7 +285,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/namespacemembers_func.html b/hurricane/doc/hurricane/html/namespacemembers_func.html index a01649d4..fe238186 100644 --- a/hurricane/doc/hurricane/html/namespacemembers_func.html +++ b/hurricane/doc/hurricane/html/namespacemembers_func.html @@ -46,7 +46,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/namespacemembers_type.html b/hurricane/doc/hurricane/html/namespacemembers_type.html index 589b24db..3230d624 100644 --- a/hurricane/doc/hurricane/html/namespacemembers_type.html +++ b/hurricane/doc/hurricane/html/namespacemembers_type.html @@ -282,7 +282,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/html/namespaces.html b/hurricane/doc/hurricane/html/namespaces.html index b2c70380..3b2c86e1 100644 --- a/hurricane/doc/hurricane/html/namespaces.html +++ b/hurricane/doc/hurricane/html/namespaces.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/hurricane/latex/classHurricane_1_1Cell.tex b/hurricane/doc/hurricane/latex/classHurricane_1_1Cell.tex index 72241172..c30a5405 100644 --- a/hurricane/doc/hurricane/latex/classHurricane_1_1Cell.tex +++ b/hurricane/doc/hurricane/latex/classHurricane_1_1Cell.tex @@ -59,6 +59,10 @@ const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \& \mbox{\hyperlink{classH \item \mbox{\hyperlink{namespaceHurricane_a1912927c128eee859af62dbe4cbe0a6b}{Occurrences}} \mbox{\hyperlink{classHurricane_1_1Cell_a7fb09c8e350923c47ce4c4407bdb00ce}{get\+Occurrences\+Under}} (const \mbox{\hyperlink{classHurricane_1_1Box}{Box}} \&area, unsigned search\+Depth=std\+::numeric\+\_\+limits$<$ unsigned int $>$\+::max()) const \item +\mbox{\hyperlink{namespaceHurricane_a1912927c128eee859af62dbe4cbe0a6b}{Occurrences}} \mbox{\hyperlink{classHurricane_1_1Cell_a7d5a16e085ef5375862560e3c3eb4ea8}{get\+Leaf\+Instance\+Occurrences}} (const \mbox{\hyperlink{classHurricane_1_1Instance}{Instance}} $\ast$top\+Instance=N\+U\+LL) const +\item +\mbox{\hyperlink{namespaceHurricane_a1912927c128eee859af62dbe4cbe0a6b}{Occurrences}} \mbox{\hyperlink{classHurricane_1_1Cell_ac32e4f232a8fc030aa809fe6565d8d95}{get\+Non\+Leaf\+Instance\+Occurrences}} (const \mbox{\hyperlink{classHurricane_1_1Instance}{Instance}} $\ast$top\+Instance=N\+U\+LL) const +\item const \mbox{\hyperlink{classHurricane_1_1Box}{Box}} \& \mbox{\hyperlink{classHurricane_1_1Cell_a142360ca7b3c1c637894f5b9a2cac069}{get\+Abutment\+Box}} () const \item bool \mbox{\hyperlink{classHurricane_1_1Cell_a239354e1b4ad9b751abf5a064e43b0e6}{is\+Called\+By}} (\mbox{\hyperlink{classHurricane_1_1Cell}{Cell}} $\ast$cell) const @@ -256,7 +260,19 @@ level is crossed. The search ends when depth becomes null (the value {\ttfamily \begin{DoxyParagraph}{Caution\+: Only occurences corresponding to currently materialized} entities are taken into account in this \mbox{\hyperlink{classHurricane_1_1Collection}{Collection}}. \end{DoxyParagraph} -\mbox{\Hypertarget{classHurricane_1_1Cell_a142360ca7b3c1c637894f5b9a2cac069}\label{classHurricane_1_1Cell_a142360ca7b3c1c637894f5b9a2cac069}} +\mbox{\Hypertarget{classHurricane_1_1Cell_a7d5a16e085ef5375862560e3c3eb4ea8}\label{classHurricane_1_1Cell_a7d5a16e085ef5375862560e3c3eb4ea8}} +\index{Hurricane\+::\+Cell@{Hurricane\+::\+Cell}!get\+Leaf\+Instance\+Occurrences@{get\+Leaf\+Instance\+Occurrences}} +\index{get\+Leaf\+Instance\+Occurrences@{get\+Leaf\+Instance\+Occurrences}!Hurricane\+::\+Cell@{Hurricane\+::\+Cell}} +\subsubsection{\texorpdfstring{get\+Leaf\+Instance\+Occurrences()}{getLeafInstanceOccurrences()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceHurricane_a1912927c128eee859af62dbe4cbe0a6b}{Occurrences}} Hurricane\+::\+Cell\+::get\+Leaf\+Instance\+Occurrences (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Instance}{Instance}} $\ast$}]{top\+Instance = {\ttfamily NULL} }\end{DoxyParamCaption}) const} + +Returns the trans-\/hierarchical \mbox{\hyperlink{classHurricane_1_1Collection}{Collection}} of all instance Occurrences that are leaf cells. With the {\ttfamily top\+Instance} argument we can restrict the collection to leafs of that instance (of the current \mbox{\hyperlink{classHurricane_1_1Cell}{Cell}}) only. \mbox{\Hypertarget{classHurricane_1_1Cell_ac32e4f232a8fc030aa809fe6565d8d95}\label{classHurricane_1_1Cell_ac32e4f232a8fc030aa809fe6565d8d95}} +\index{Hurricane\+::\+Cell@{Hurricane\+::\+Cell}!get\+Non\+Leaf\+Instance\+Occurrences@{get\+Non\+Leaf\+Instance\+Occurrences}} +\index{get\+Non\+Leaf\+Instance\+Occurrences@{get\+Non\+Leaf\+Instance\+Occurrences}!Hurricane\+::\+Cell@{Hurricane\+::\+Cell}} +\subsubsection{\texorpdfstring{get\+Non\+Leaf\+Instance\+Occurrences()}{getNonLeafInstanceOccurrences()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceHurricane_a1912927c128eee859af62dbe4cbe0a6b}{Occurrences}} Hurricane\+::\+Cell\+::get\+Non\+Leaf\+Instance\+Occurrences (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Instance}{Instance}} $\ast$}]{top\+Instance = {\ttfamily NULL} }\end{DoxyParamCaption}) const} + +Returns the trans-\/hierarchical \mbox{\hyperlink{classHurricane_1_1Collection}{Collection}} of all instance Occurrences that are {\bfseries not} leaf cells. With the {\ttfamily top\+Instance} argument we can restrict the collection to non-\/leafs of that instance (of the current \mbox{\hyperlink{classHurricane_1_1Cell}{Cell}}) only. \mbox{\Hypertarget{classHurricane_1_1Cell_a142360ca7b3c1c637894f5b9a2cac069}\label{classHurricane_1_1Cell_a142360ca7b3c1c637894f5b9a2cac069}} \index{Hurricane\+::\+Cell@{Hurricane\+::\+Cell}!get\+Abutment\+Box@{get\+Abutment\+Box}} \index{get\+Abutment\+Box@{get\+Abutment\+Box}!Hurricane\+::\+Cell@{Hurricane\+::\+Cell}} \subsubsection{\texorpdfstring{get\+Abutment\+Box()}{getAbutmentBox()}} diff --git a/hurricane/doc/hurricane/latex/classHurricane_1_1RegularLayer.tex b/hurricane/doc/hurricane/latex/classHurricane_1_1RegularLayer.tex index 45a0a875..2ef09579 100644 --- a/hurricane/doc/hurricane/latex/classHurricane_1_1RegularLayer.tex +++ b/hurricane/doc/hurricane/latex/classHurricane_1_1RegularLayer.tex @@ -22,7 +22,7 @@ Inheritance diagram for Hurricane\+:\+:Regular\+Layer\+:\nopagebreak \subsection*{Static Public Member Functions} \begin{DoxyCompactItemize} \item -static \mbox{\hyperlink{classHurricane_1_1RegularLayer}{Regular\+Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1RegularLayer_a88c2d5516f42b033ae2fdc0797e3dae1}{create}} (\mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} $\ast$technology, const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&name) +static \mbox{\hyperlink{classHurricane_1_1RegularLayer}{Regular\+Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1RegularLayer_a6b40a35fec1c4fc168d608b8b96c8477}{create}} (\mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} $\ast$technology, const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&name, \mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}} $\ast$layer) \end{DoxyCompactItemize} \subsection*{Additional Inherited Members} @@ -42,11 +42,11 @@ For a more complete description of the Layers objects, please refer to \mbox{\hy It have one enclose, extention cap \& extension width. \subsection{Member Function Documentation} -\mbox{\Hypertarget{classHurricane_1_1RegularLayer_a88c2d5516f42b033ae2fdc0797e3dae1}\label{classHurricane_1_1RegularLayer_a88c2d5516f42b033ae2fdc0797e3dae1}} +\mbox{\Hypertarget{classHurricane_1_1RegularLayer_a6b40a35fec1c4fc168d608b8b96c8477}\label{classHurricane_1_1RegularLayer_a6b40a35fec1c4fc168d608b8b96c8477}} \index{Hurricane\+::\+Regular\+Layer@{Hurricane\+::\+Regular\+Layer}!create@{create}} \index{create@{create}!Hurricane\+::\+Regular\+Layer@{Hurricane\+::\+Regular\+Layer}} \subsubsection{\texorpdfstring{create()}{create()}} -{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1RegularLayer}{Regular\+Layer}} $\ast$ Hurricane\+::\+Regular\+Layer\+::create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} $\ast$}]{technology, }\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1RegularLayer}{Regular\+Layer}} $\ast$ Hurricane\+::\+Regular\+Layer\+::create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} $\ast$}]{technology, }\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name, }\item[{\mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}} $\ast$}]{layer }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} creates and returns a new regular layer named {\ttfamily $<$name$>$}. diff --git a/hurricane/doc/hurricane/latex/refman.tex b/hurricane/doc/hurricane/latex/refman.tex index 7eb04317..0d479534 100644 --- a/hurricane/doc/hurricane/latex/refman.tex +++ b/hurricane/doc/hurricane/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:51}\\ + {\small Mon Oct 28 2019 18:06:31}\\ \end{center} \end{titlepage} diff --git a/hurricane/doc/viewer/html/CellImage_8h_source.html b/hurricane/doc/viewer/html/CellImage_8h_source.html index 9330c6cb..c2db607d 100644 --- a/hurricane/doc/viewer/html/CellImage_8h_source.html +++ b/hurricane/doc/viewer/html/CellImage_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/CellPrinter_8h_source.html b/hurricane/doc/viewer/html/CellPrinter_8h_source.html index 7669f4aa..6a5e7aed 100644 --- a/hurricane/doc/viewer/html/CellPrinter_8h_source.html +++ b/hurricane/doc/viewer/html/CellPrinter_8h_source.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/CellViewer_8h_source.html b/hurricane/doc/viewer/html/CellViewer_8h_source.html index ade78a64..7edcf809 100644 --- a/hurricane/doc/viewer/html/CellViewer_8h_source.html +++ b/hurricane/doc/viewer/html/CellViewer_8h_source.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/CellWidget_8h_source.html b/hurricane/doc/viewer/html/CellWidget_8h_source.html index 441c8a9d..69497dfa 100644 --- a/hurricane/doc/viewer/html/CellWidget_8h_source.html +++ b/hurricane/doc/viewer/html/CellWidget_8h_source.html @@ -86,7 +86,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/DisplayStyle_8h_source.html b/hurricane/doc/viewer/html/DisplayStyle_8h_source.html index 9a66655c..4e85f009 100644 --- a/hurricane/doc/viewer/html/DisplayStyle_8h_source.html +++ b/hurricane/doc/viewer/html/DisplayStyle_8h_source.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/Graphics_8h_source.html b/hurricane/doc/viewer/html/Graphics_8h_source.html index 11d17649..31edd154 100644 --- a/hurricane/doc/viewer/html/Graphics_8h_source.html +++ b/hurricane/doc/viewer/html/Graphics_8h_source.html @@ -78,7 +78,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/InspectorWidget_8h_source.html b/hurricane/doc/viewer/html/InspectorWidget_8h_source.html index 65661979..2f8b3a53 100644 --- a/hurricane/doc/viewer/html/InspectorWidget_8h_source.html +++ b/hurricane/doc/viewer/html/InspectorWidget_8h_source.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/annotated.html b/hurricane/doc/viewer/html/annotated.html index b9ac246d..774d5a5a 100644 --- a/hurricane/doc/viewer/html/annotated.html +++ b/hurricane/doc/viewer/html/annotated.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html index 794337f5..240956fb 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html b/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html index 5477b56e..951967b1 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html @@ -261,7 +261,7 @@ ShowScale: display a false color scale at the bottom of the image. Useful if you
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html index 31a65e58..712609a2 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html index 9ab57538..29fad74b 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html @@ -239,7 +239,7 @@ Implementation details
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html index 5c1275f5..00537fe5 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html @@ -69,7 +69,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html index a671404c..691c95f7 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html @@ -511,7 +511,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html index f7e27ce1..a27306b3 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html index 8130934f..5dc17cd8 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html @@ -97,7 +97,7 @@ Public Types
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html index 6d45a984..47f5c747 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html index 3e17b1c5..76ec16e6 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html @@ -620,7 +620,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html b/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html index d810504b..b0760df9 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html b/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html index 3bb8ed22..305e5035 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html @@ -673,7 +673,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html index 9d2da6d6..c3e77a41 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html index 6e889c08..7377af85 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html @@ -140,7 +140,7 @@ Inspector Memory Management
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/classes.html b/hurricane/doc/viewer/html/classes.html index b3e3c636..678dc1ed 100644 --- a/hurricane/doc/viewer/html/classes.html +++ b/hurricane/doc/viewer/html/classes.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html b/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html index a394f32a..6cb10eb2 100644 --- a/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html +++ b/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html b/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html index 4c2533c9..624b73a5 100644 --- a/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html +++ b/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html b/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html index 746cfd57..1d568460 100644 --- a/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html +++ b/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html @@ -53,7 +53,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index cf3b70a0..cc5f54f1 100644 --- a/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/files.html b/hurricane/doc/viewer/html/files.html index 1f03c52a..093f3343 100644 --- a/hurricane/doc/viewer/html/files.html +++ b/hurricane/doc/viewer/html/files.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/functions.html b/hurricane/doc/viewer/html/functions.html index 276daf53..6fcc3e2a 100644 --- a/hurricane/doc/viewer/html/functions.html +++ b/hurricane/doc/viewer/html/functions.html @@ -286,7 +286,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/functions_enum.html b/hurricane/doc/viewer/html/functions_enum.html index c59f4137..9418e341 100644 --- a/hurricane/doc/viewer/html/functions_enum.html +++ b/hurricane/doc/viewer/html/functions_enum.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/functions_eval.html b/hurricane/doc/viewer/html/functions_eval.html index b386c0e9..fcb05c14 100644 --- a/hurricane/doc/viewer/html/functions_eval.html +++ b/hurricane/doc/viewer/html/functions_eval.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/functions_func.html b/hurricane/doc/viewer/html/functions_func.html index 29201c13..6823ed65 100644 --- a/hurricane/doc/viewer/html/functions_func.html +++ b/hurricane/doc/viewer/html/functions_func.html @@ -271,7 +271,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/graph_legend.html b/hurricane/doc/viewer/html/graph_legend.html index 783bd1d8..492db09a 100644 --- a/hurricane/doc/viewer/html/graph_legend.html +++ b/hurricane/doc/viewer/html/graph_legend.html @@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/group__graphicsGroup.html b/hurricane/doc/viewer/html/group__graphicsGroup.html index 7193417d..138dc5a2 100644 --- a/hurricane/doc/viewer/html/group__graphicsGroup.html +++ b/hurricane/doc/viewer/html/group__graphicsGroup.html @@ -96,7 +96,7 @@ General Structure of the Graphics Object
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/index.html b/hurricane/doc/viewer/html/index.html index c97a7a40..ad36084f 100644 --- a/hurricane/doc/viewer/html/index.html +++ b/hurricane/doc/viewer/html/index.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/html/modules.html b/hurricane/doc/viewer/html/modules.html index 95c8f420..fd968de3 100644 --- a/hurricane/doc/viewer/html/modules.html +++ b/hurricane/doc/viewer/html/modules.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/hurricane/doc/viewer/latex/refman.tex b/hurricane/doc/viewer/latex/refman.tex index 29009864..6aecf648 100644 --- a/hurricane/doc/viewer/latex/refman.tex +++ b/hurricane/doc/viewer/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:52}\\ + {\small Mon Oct 28 2019 18:06:31}\\ \end{center} \end{titlepage} diff --git a/hurricane/src/analog/CMakeLists.txt b/hurricane/src/analog/CMakeLists.txt index 301717b6..e7f40213 100644 --- a/hurricane/src/analog/CMakeLists.txt +++ b/hurricane/src/analog/CMakeLists.txt @@ -31,12 +31,13 @@ LevelShifter.cpp MetaCapacitor.cpp MetaTransistor.cpp - MIMCapacitor.cpp + MultiCapacitor.cpp SimpleCurrentMirror.cpp Transistor.cpp TransistorFamily.cpp TransistorFamilyNames.cpp TransistorPair.cpp + MultiCapacitor.cpp ) set( pyCpps PyAnalog.cpp PyCapacitorFamily.cpp @@ -53,7 +54,7 @@ PyLayoutGenerator.cpp PyLevelShifter.cpp PyMCheckBoxParameter.cpp - PyMIMCapacitor.cpp + PyMultiCapacitor.cpp PyParameter.cpp PySimpleCurrentMirror.cpp PySpinBoxParameter.cpp @@ -61,6 +62,9 @@ PyTransistor.cpp PyTransistorFamily.cpp PyTransistorPair.cpp + PyMatrixParameter.cpp + PyCapacitiesParameter.cpp + PyMultiCapacitor.cpp ) set( includes hurricane/analog/AnalogCellExtension.h hurricane/analog/BJTFamily.h @@ -84,7 +88,7 @@ hurricane/analog/MCheckBoxParameter.h hurricane/analog/MetaCapacitor.h hurricane/analog/MetaTransistor.h - hurricane/analog/MIMCapacitor.h + hurricane/analog/MultiCapacitor.h hurricane/analog/Parameter.h hurricane/analog/SimpleCurrentMirror.h hurricane/analog/SpinBoxParameter.h @@ -93,6 +97,10 @@ hurricane/analog/TransistorFamilyNames.h hurricane/analog/Transistor.h hurricane/analog/TransistorPair.h + hurricane/analog/MatrixParameter.h + hurricane/analog/CapacitiesParameter.h + hurricane/analog/MultiCapacitor.h + hurricane/analog/Matrix.h ) set( pyIncludes hurricane/analog/PyCapacitorFamily.h hurricane/analog/PyCapacitorParameter.h @@ -108,7 +116,7 @@ hurricane/analog/PyLayoutGenerator.h hurricane/analog/PyLevelShifter.h hurricane/analog/PyMCheckBoxParameter.h - hurricane/analog/PyMIMCapacitor.h + hurricane/analog/PyMultiCapacitor.h hurricane/analog/PyParameter.h hurricane/analog/PySimpleCurrentMirror.h hurricane/analog/PySpinBoxParameter.h @@ -116,6 +124,8 @@ hurricane/analog/PyTransistorFamily.h hurricane/analog/PyTransistor.h hurricane/analog/PyTransistorPair.h + hurricane/analog/PyMatrixParameter.h + hurricane/analog/PyCapacitiesParameter.h ) set( depLibs viewer diff --git a/hurricane/src/analog/MIMCapacitor.cpp b/hurricane/src/analog/MultiCapacitor.cpp similarity index 68% rename from hurricane/src/analog/MIMCapacitor.cpp rename to hurricane/src/analog/MultiCapacitor.cpp index d39b5913..24ddc6b1 100644 --- a/hurricane/src/analog/MIMCapacitor.cpp +++ b/hurricane/src/analog/MultiCapacitor.cpp @@ -10,37 +10,45 @@ // | Authors : Damien Dupuis | // | E-mail : Jean-Paul.Chaput@lip6.fr | // | =============================================================== | -// | C++ Module : "./MIMCapacitor.cpp" | +// | C++ Module : "./MultiCapacitor.cpp" | // +-----------------------------------------------------------------+ #include "hurricane/UpdateSession.h" #include "hurricane/analog/MetaCapacitor.h" -#include "hurricane/analog/MIMCapacitor.h" +#include "hurricane/analog/MultiCapacitor.h" namespace Analog { using namespace Hurricane; - const Name MIMCapacitor::_capacitorName ("MIMCapacitor"); + const Name MultiCapacitor::_capacitorName ("MultiCapacitor"); - MIMCapacitor::MIMCapacitor ( Library* library, const Name& name, const CapacitorFamily::Type& type ) + MultiCapacitor::MultiCapacitor ( Library* library + , const Name& name + , const CapacitorFamily::Type& type + , size_t count ) : Super(library, name, type) , _metaCapacitor(NULL) + , _matrix (NULL) + , _count (count) , _cDraw (0.0) , _cBorder (0.0) , _cParasite (0.0) - , _c (NULL) + , _capacities (NULL) { } - MIMCapacitor* MIMCapacitor::create ( Library* library, const Name& name, const CapacitorFamily::Type& type ) + MultiCapacitor* MultiCapacitor::create ( Library* library + , const Name& name + , const CapacitorFamily::Type& type + , size_t count ) { preCreate( _capacitorName ); UpdateSession::open(); - MIMCapacitor* cp = new MIMCapacitor( library, name, type ); + MultiCapacitor* cp = new MultiCapacitor( library, name, type, count ); cp->_postCreate( _capacitorName ); cp->createConnections(); cp->setTerminal( true ); @@ -49,9 +57,9 @@ namespace Analog { } - void MIMCapacitor::_postCreate ( const Name& deviceName ) + void MultiCapacitor::_postCreate ( const Name& deviceName ) { - Super::_postCreate(deviceName); + Super::_postCreate( deviceName ); // get minimum and maximum value from technology //AnalogEnv* aenv = AnalogEnv::get(); @@ -63,11 +71,11 @@ namespace Analog { // For now define arbitrary values: //DbU::Unit capacitorMinC = DbU::physicalToDbu(0.25, DbU::Micro); //DbU::Unit capacitorMaxC = DbU::physicalToDbu(25 , DbU::Micro); - _c = addCapacitorParameter( "C", 0.0 ); + //_c = addCapacitorParameter( "C", 0.0 ); } - void MIMCapacitor::createConnections () + void MultiCapacitor::createConnections () { Net* p1 = Net::create( this, Name("P1") ); p1->setExternal( true ); @@ -86,7 +94,7 @@ namespace Analog { } - Name MIMCapacitor::getDeviceName () const + Name MultiCapacitor::getDeviceName () const { return _capacitorName; } diff --git a/hurricane/src/analog/PyAnalog.cpp b/hurricane/src/analog/PyAnalog.cpp index 4f70c366..07c11c9d 100644 --- a/hurricane/src/analog/PyAnalog.cpp +++ b/hurricane/src/analog/PyAnalog.cpp @@ -29,7 +29,7 @@ #include "hurricane/analog/PyCascode.h" #include "hurricane/analog/PyCapacitorFamily.h" -#include "hurricane/analog/PyMIMCapacitor.h" +#include "hurricane/analog/PyMultiCapacitor.h" #include "hurricane/analog/PyParameter.h" #include "hurricane/analog/PyCapacitorParameter.h" @@ -79,7 +79,7 @@ extern "C" { PyLevelShifter_LinkPyType(); PySimpleCurrentMirror_LinkPyType(); PyCascode_LinkPyType(); - PyMIMCapacitor_LinkPyType(); + //PyMultiCapacitor_LinkPyType(); PyParameter_LinkPyType(); PyCapacitorParameter_LinkPyType(); @@ -108,7 +108,7 @@ extern "C" { PYTYPE_READY_SUB( Cascode , TransistorPair ) PYTYPE_READY_SUB( CapacitorFamily , Device ) - PYTYPE_READY_SUB( MIMCapacitor , CapacitorFamily ) + //PYTYPE_READY_SUB( MutliCapacitor , CapacitorFamily ) PYTYPE_READY_SUB( CapacitorParameter , Parameter ) PYTYPE_READY_SUB( ChoiceParameter , Parameter ) @@ -132,7 +132,7 @@ extern "C" { __cs.addType( "cascode" , &PyTypeCascode , "" , false, "transpair" ); __cs.addType( "cfamily" , &PyTypeCapacitorFamily , "" , false, "device" ); - __cs.addType( "mimcapa" , &PyTypeMIMCapacitor , "" , false, "cfamily" ); + //__cs.addType( "mulcapa" , &PyTypeMultiCapacitor , "" , false, "cfamily" ); __cs.addType( "parameter", &PyTypeParameter , "" , false ); __cs.addType( "capapar" , &PyTypeCapacitorParameter , "" , false, "parameter" ); @@ -178,8 +178,8 @@ extern "C" { Py_INCREF( &PyTypeCapacitorFamily ); PyModule_AddObject( module, "CapacitorFamily" , (PyObject*)&PyTypeCapacitorFamily ); - Py_INCREF( &PyTypeMIMCapacitor ); - PyModule_AddObject( module, "MIMCapacitor" , (PyObject*)&PyTypeMIMCapacitor ); + //Py_INCREF( &PyTypeMutliCapacitor ); + //PyModule_AddObject( module, "MultiCapacitor" , (PyObject*)&PyTypeMultiCapacitor ); Py_INCREF( &PyTypeParameter ); PyModule_AddObject( module, "Parameter" , (PyObject*)&PyTypeParameter ); diff --git a/hurricane/src/analog/PyCapacitiesParameter.cpp b/hurricane/src/analog/PyCapacitiesParameter.cpp new file mode 100644 index 00000000..f8382582 --- /dev/null +++ b/hurricane/src/analog/PyCapacitiesParameter.cpp @@ -0,0 +1,123 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2019-2019, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Author : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyCapacitiesParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyCapacitiesParameter.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CapacitiesParameter,capacitiesParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCapacitiesParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetUIntAttribute(PyCapacitiesParameter_getCount, getCount, PyCapacitiesParameter, CapacitiesParameter) + + + static PyObject* PyCapacitiesParameter_getValue ( PyCapacitiesParameter *self, PyObject* args ) + { + cdebug_log(20,0) << "PyCapacitiesParameter.getValue()" << endl; + + double value = 0.0; + + HTRY + METHOD_HEAD ( "CapacitiesParameter.getValue()" ) + unsigned int index = 0; + if (PyArg_ParseTuple(args,"I:CapacitiesParameter.getValue",&index)) { + value = capacitiesParameter->getValue( (size_t)index ); + } else { + PyErr_SetString( ConstructorError, "CapacitiesParameter.getValue(): Invalid number/bad type of parameters." ); + return NULL; + } + HCATCH + + return Py_BuildValue("d",value); + } + + + static PyObject* PyCapacitiesParameter_setValue ( PyCapacitiesParameter *self, PyObject* args ) + { + cdebug_log(20,0) << "PyCapacitiesParameter.setValue()" << endl; + + HTRY + METHOD_HEAD ( "CapacitiesParameter.setValue()" ) + unsigned int count = 0; + double value = 0.0; + if (PyArg_ParseTuple(args,"Id:CapacitiesParameter.setValue",&count,&value)) { + capacitiesParameter->setValue( (size_t)count, value ); + } else { + PyErr_SetString( ConstructorError, "CapacitiesParameter.setValue(): Invalid number/bad type of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + // --------------------------------------------------------------- + // PyCapacitiesParameter Attribute Method table. + + PyMethodDef PyCapacitiesParameter_Methods[] = + { { "getCount" , (PyCFunction)PyCapacitiesParameter_getCount , METH_NOARGS + , "Self explanatory." } + , { "getValue" , (PyCFunction)PyCapacitiesParameter_getValue , METH_VARARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyCapacitiesParameter_setValue , METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCapacitiesParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(CapacitiesParameter) + PyTypeObjectLinkPyType(CapacitiesParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCapacitiesParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(CapacitiesParameter) + PyTypeInheritedObjectDefinitions(CapacitiesParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCapacitorFamily.cpp b/hurricane/src/analog/PyCapacitorFamily.cpp index cb7956f5..5853ef2a 100644 --- a/hurricane/src/analog/PyCapacitorFamily.cpp +++ b/hurricane/src/analog/PyCapacitorFamily.cpp @@ -54,7 +54,7 @@ extern "C" { DirectGetBoolAttribute (PyCapacitorFamily_isPIP ,isPIP ,PyCapacitorFamily,CapacitorFamily) DirectGetBoolAttribute (PyCapacitorFamily_isMIM ,isMIM ,PyCapacitorFamily,CapacitorFamily) DirectGetBoolAttribute (PyCapacitorFamily_isMOM ,isMOM ,PyCapacitorFamily,CapacitorFamily) - DirectGetIntAttribute (PyCapacitorFamily_getRow,getRow,PyCapacitorFamily,CapacitorFamily) +//DirectGetIntAttribute (PyCapacitorFamily_getRow,getRow,PyCapacitorFamily,CapacitorFamily) DirectGetDoubleAttribute(PyCapacitorFamily_getCE ,getCE ,PyCapacitorFamily,CapacitorFamily) DirectSetDoubleAttribute(PyCapacitorFamily_setCE ,setCE ,PyCapacitorFamily,CapacitorFamily) diff --git a/hurricane/src/analog/PyMIMCapacitor.cpp b/hurricane/src/analog/PyMIMCapacitor.cpp deleted file mode 100644 index ceb97ac7..00000000 --- a/hurricane/src/analog/PyMIMCapacitor.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// -*- C++ -*- -// -// This file is part of the Coriolis Software. -// Copyright (c) UPMC 2016-2018, All Rights Reserved -// -// +-----------------------------------------------------------------+ -// | C O R I O L I S | -// | H u r r i c a n e A n a l o g | -// | | -// | Author : Jean-Paul Chaput | -// | E-mail : Jean-Paul.Chaput@lip6.fr | -// | =============================================================== | -// | C++ Module : "./PyMIMCapacitor.cpp" | -// +-----------------------------------------------------------------+ - - -#include "hurricane/isobar/PyLibrary.h" -#include "hurricane/analog/PyMIMCapacitor.h" - - -namespace Isobar { - -using namespace Hurricane; -using namespace Analog; - -extern "C" { - - -#undef ACCESS_OBJECT -#undef ACCESS_CLASS -#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._object -#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject) -#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(MIMCapacitor,transistor,function) - -#if defined(__PYTHON_MODULE__) - -// +=================================================================+ -// | "PyMIMCapacitor" Python Module Code Part | -// +=================================================================+ - - - static PyObject* PyMIMCapacitor_create ( PyObject*, PyObject* args ) - { - cdebug.log(49) << "PyMIMCapacitor_create()" << endl; - - MIMCapacitor* transistor = NULL; - - HTRY - PyObject* pyLibrary = NULL; - char* name = NULL; - long pyType = 0; - - if (PyArg_ParseTuple( args - , "Osl:MIMCapacitor.create" - , &pyLibrary - , &name - , &pyType - )) { - if (not IsPyLibrary(pyLibrary)) { - PyErr_SetString ( ConstructorError, "MIMCapacitor.create(): First argument is not of type Library." ); - return NULL; - } - switch ( pyType ) { - case CapacitorFamily::PIP: - case CapacitorFamily::MIM: - case CapacitorFamily::MOM: break; - default: - PyErr_SetString ( ConstructorError, "MIMCapacitor.create(): Type argument is neither PIP, MIM nor MOM." ); - return NULL; - } - - transistor = MIMCapacitor::create( PYLIBRARY_O(pyLibrary) - , Name(name) - , (MIMCapacitor::Type)pyType - ); - } else { - PyErr_SetString ( ConstructorError, "Bad parameters given to MIMCapacitor.create()." ); - return NULL; - } - HCATCH - - return PyMIMCapacitor_Link(transistor); - } - - - DirectGetDoubleAttribute(PyCapacitorFamily_getC ,getC ,PyMIMCapacitor,MIMCapacitor) - DirectGetDoubleAttribute(PyCapacitorFamily_getCDraw ,getCDraw ,PyMIMCapacitor,MIMCapacitor) - DirectGetDoubleAttribute(PyCapacitorFamily_getCBorder ,getCBorder ,PyMIMCapacitor,MIMCapacitor) - DirectGetDoubleAttribute(PyCapacitorFamily_getCParasite,getCParasite,PyMIMCapacitor,MIMCapacitor) - - // Standart Destroy (Attribute). - DBoDestroyAttribute(PyMIMCapacitor_destroy, PyMIMCapacitor) - - - // --------------------------------------------------------------- - // PyMIMCapacitor Attribute Method table. - - PyMethodDef PyMIMCapacitor_Methods[] = - { { "create" , (PyCFunction)PyMIMCapacitor_create , METH_VARARGS|METH_STATIC - , "Create an anlogic device made of one transistor." } - , { "getC" , (PyCFunction)PyCapacitorFamily_getC , METH_NOARGS - , "Capacitor value C (requested)." } - , { "getCDraw" , (PyCFunction)PyCapacitorFamily_getCDraw , METH_NOARGS - , "Capacitor value C (requested)." } - , { "getCBorder" , (PyCFunction)PyCapacitorFamily_getCBorder , METH_NOARGS - , "Capacitor value C (requested)." } - , { "getCParasite" , (PyCFunction)PyCapacitorFamily_getCParasite, METH_NOARGS - , "Capacitor value C (requested)." } - , { "destroy" , (PyCFunction)PyMIMCapacitor_destroy , METH_NOARGS - , "Destroys associated hurricane object, the python object remains." } - , { NULL, NULL, 0, NULL } /* sentinel */ - }; - - - // +-------------------------------------------------------------+ - // | "PyMIMCapacitor" Object Methods | - // +-------------------------------------------------------------+ - - - DBoDeleteMethod(MIMCapacitor) - PyTypeObjectLinkPyType(MIMCapacitor) - - -#else // End of Python Module Code Part. - -// +=================================================================+ -// | "PyMIMCapacitor" Shared Library Code Part | -// +=================================================================+ - - - DBoLinkCreateMethod(MIMCapacitor) - PyTypeInheritedObjectDefinitions(MIMCapacitor, CapacitorFamily) - - -#endif // End of Shared Library Code Part. - -} // extern "C". - -} // Isobar namespace. diff --git a/hurricane/src/analog/PyMatrixParameter.cpp b/hurricane/src/analog/PyMatrixParameter.cpp new file mode 100644 index 00000000..66c68dd0 --- /dev/null +++ b/hurricane/src/analog/PyMatrixParameter.cpp @@ -0,0 +1,128 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2019-2019, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Author : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyMatrixParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyMatrixParameter.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(MatrixParameter,matrixParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyMatrixParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetUIntAttribute(PyMatrixParameter_getRows , getRows , PyMatrixParameter, MatrixParameter) + DirectGetUIntAttribute(PyMatrixParameter_getColumns, getColumns, PyMatrixParameter, MatrixParameter) + + + static PyObject* PyMatrixParameter_getValue ( PyMatrixParameter *self, PyObject* args ) + { + cdebug_log(20,0) << "PyMatrixParameter.getValue()" << endl; + + size_t value = 0; + + HTRY + METHOD_HEAD ( "MatrixParameter.getValue()" ) + unsigned int row = 0; + unsigned int column = 0; + if (PyArg_ParseTuple(args,"II:MatrixParameter.getValue",&row,&column)) { + value = matrixParameter->getValue( (size_t)row, (size_t)column ); + } else { + PyErr_SetString( ConstructorError, "MatrixParameter.getValue(): Invalid number/bad type of parameters." ); + return NULL; + } + HCATCH + + return Py_BuildValue("I",(unsigned int)value); + } + + + static PyObject* PyMatrixParameter_setValue ( PyMatrixParameter *self, PyObject* args ) + { + cdebug_log(20,0) << "PyMatrixParameter.setValue()" << endl; + + HTRY + METHOD_HEAD ( "MatrixParameter.setValue()" ) + unsigned int row = 0; + unsigned int column = 0; + unsigned int value = 0; + if (PyArg_ParseTuple(args,"III:MatrixParameter.setValue",&row,&column,&value)) { + matrixParameter->setValue( (size_t)row, (size_t)column, (size_t)value ); + } else { + PyErr_SetString( ConstructorError, "MatrixParameter.setValue(): Invalid number/bad type of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + // --------------------------------------------------------------- + // PyMatrixParameter Attribute Method table. + + PyMethodDef PyMatrixParameter_Methods[] = + { { "getRows" , (PyCFunction)PyMatrixParameter_getRows , METH_NOARGS + , "Self explanatory." } + , { "getColumns" , (PyCFunction)PyMatrixParameter_getColumns, METH_NOARGS + , "Self explanatory." } + , { "getValue" , (PyCFunction)PyMatrixParameter_getValue , METH_VARARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyMatrixParameter_setValue , METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyMatrixParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(MatrixParameter) + PyTypeObjectLinkPyType(MatrixParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyMatrixParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(MatrixParameter) + PyTypeInheritedObjectDefinitions(MatrixParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyMultiCapacitor.cpp b/hurricane/src/analog/PyMultiCapacitor.cpp new file mode 100644 index 00000000..903eb69f --- /dev/null +++ b/hurricane/src/analog/PyMultiCapacitor.cpp @@ -0,0 +1,142 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2016-2018, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Author : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyMultiCapacitor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyMultiCapacitor.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(MultiCapacitor,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyMultiCapacitor" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyMultiCapacitor_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyMultiCapacitor_create()" << endl; + + MultiCapacitor* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + unsigned int count = 1; + + if (PyArg_ParseTuple( args + , "OslI:MultiCapacitor.create" + , &pyLibrary + , &name + , &pyType + , &count + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "MultiCapacitor.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case CapacitorFamily::PIP: + case CapacitorFamily::MIM: + case CapacitorFamily::MOM: break; + default: + PyErr_SetString ( ConstructorError, "MultiCapacitor.create(): Type argument is neither PIP, Multi nor MOM." ); + return NULL; + } + + transistor = MultiCapacitor::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (MultiCapacitor::Type)pyType + , (size_t)count + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to MultiCapacitor.create()." ); + return NULL; + } + HCATCH + + return PyMultiCapacitor_Link(transistor); + } + + + // DirectGetDoubleAttribute(PyCapacitorFamily_getC ,getC ,PyMultiCapacitor,MultiCapacitor) + // DirectGetDoubleAttribute(PyCapacitorFamily_getCDraw ,getCDraw ,PyMultiCapacitor,MultiCapacitor) + // DirectGetDoubleAttribute(PyCapacitorFamily_getCBorder ,getCBorder ,PyMultiCapacitor,MultiCapacitor) + // DirectGetDoubleAttribute(PyCapacitorFamily_getCParasite,getCParasite,PyMultiCapacitor,MultiCapacitor) + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyMultiCapacitor_destroy, PyMultiCapacitor) + + + // --------------------------------------------------------------- + // PyMultiCapacitor Attribute Method table. + + PyMethodDef PyMultiCapacitor_Methods[] = + { { "create" , (PyCFunction)PyMultiCapacitor_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + // , { "getC" , (PyCFunction)PyCapacitorFamily_getC , METH_NOARGS + // , "Capacitor value C (requested)." } + // , { "getCDraw" , (PyCFunction)PyCapacitorFamily_getCDraw , METH_NOARGS + // , "Capacitor value C (requested)." } + // , { "getCBorder" , (PyCFunction)PyCapacitorFamily_getCBorder , METH_NOARGS + // , "Capacitor value C (requested)." } + // , { "getCParasite" , (PyCFunction)PyCapacitorFamily_getCParasite, METH_NOARGS + // , "Capacitor value C (requested)." } + , { "destroy" , (PyCFunction)PyMultiCapacitor_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyMultiCapacitor" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(MultiCapacitor) + PyTypeObjectLinkPyType(MultiCapacitor) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyMultiCapacitor" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(MultiCapacitor) + PyTypeInheritedObjectDefinitions(MultiCapacitor, CapacitorFamily) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/hurricane/analog/CapacitiesParameter.h b/hurricane/src/analog/hurricane/analog/CapacitiesParameter.h new file mode 100644 index 00000000..3e2128d9 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CapacitiesParameter.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2009-2018, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Authors : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CapacitiesParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CAPACITIES_PARAMETER_H +#define ANALOG_CAPACITIES_PARAMETER_H + +#include "hurricane/analog/Parameter.h" + +namespace Analog { + + + class CapacitiesParameter : public Parameter { + public: + inline CapacitiesParameter ( std::string id, size_t count ); + inline CapacitiesParameter ( std::string id, const std::vector& ); + inline size_t getCount () const; + inline double getValue ( size_t index ) const; + inline void setValue ( size_t index, double value ); + private: + std::vector _values; + }; + + + inline CapacitiesParameter::CapacitiesParameter ( std::string id, size_t count ) + : Parameter(id), _values(count,0.0) + { } + + + inline CapacitiesParameter::CapacitiesParameter ( std::string id, const std::vector& capacities ) + : Parameter(id), _values(capacities) + { } + + + inline size_t CapacitiesParameter::getCount () const { return _values.size(); } + inline double CapacitiesParameter::getValue ( size_t index ) const { return _values.at(index); } + inline void CapacitiesParameter::setValue ( size_t index, double value ) { _values.at(index) = value; } + + +} // Analog namespace. + +#endif // ANALOG_CAPACITIES_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/CapacitorFamily.h b/hurricane/src/analog/hurricane/analog/CapacitorFamily.h index 3a66c64d..97de2546 100644 --- a/hurricane/src/analog/hurricane/analog/CapacitorFamily.h +++ b/hurricane/src/analog/hurricane/analog/CapacitorFamily.h @@ -38,19 +38,19 @@ namespace Analog { void setReferenceCapacitor (const Hurricane::Name& referenceCapacitorName); inline MetaCapacitor* getReferenceCapacitor (); inline const MetaCapacitor* getReferenceCapacitor () const; + // Structural parameters. inline const Type& getType () const; - inline int getRow () const; inline bool isMIM () const; inline bool isPIP () const; inline bool isMOM () const; + // Geometrical parameters. + // Electrical parameters. inline double getCE () const; - inline int getOperatorIndex () const; inline void setCE ( double ); - inline void setOperatorIndex ( int ); protected: CapacitorFamily ( Hurricane::Library* , const Hurricane::Name& , const Type& ); inline void setReferenceCapacitor ( MetaCapacitor* ); - virtual void createConnections() = 0; + virtual void createConnections () = 0; private: inline MetaCapacitor* _secureGetReferenceCapacitor (); inline const MetaCapacitor* _secureGetReferenceCapacitor () const; @@ -64,19 +64,13 @@ namespace Analog { inline MetaCapacitor* CapacitorFamily::getReferenceCapacitor () { return _referenceCapacitor; } inline const MetaCapacitor* CapacitorFamily::getReferenceCapacitor () const { return _referenceCapacitor; } + inline void CapacitorFamily::setReferenceCapacitor ( MetaCapacitor* metaCapacitor ) { _referenceCapacitor = metaCapacitor; } inline const CapacitorFamily::Type& CapacitorFamily::getType () const { return _type; } - inline int CapacitorFamily::getRow () const { return _row; } - inline bool CapacitorFamily::isMIM () const { return getType() == MIM; } inline bool CapacitorFamily::isPIP () const { return getType() == PIP; } inline bool CapacitorFamily::isMOM () const { return getType() == MOM; } - inline double CapacitorFamily::getCE () const { return _secureGetReferenceCapacitor()->getCE(); } - inline int CapacitorFamily::getOperatorIndex () const { return _operatorIndex; } - inline void CapacitorFamily::setCE (double ce) { _secureGetReferenceCapacitor()->setCE(ce); } - inline void CapacitorFamily::setReferenceCapacitor (MetaCapacitor* metaCapacitor) { _referenceCapacitor = metaCapacitor; } - inline void CapacitorFamily::setOperatorIndex (int i) { _operatorIndex = i; } inline MetaCapacitor* CapacitorFamily::_secureGetReferenceCapacitor () diff --git a/hurricane/src/analog/hurricane/analog/Device.h b/hurricane/src/analog/hurricane/analog/Device.h index c61c4a2e..b305d5ea 100644 --- a/hurricane/src/analog/hurricane/analog/Device.h +++ b/hurricane/src/analog/hurricane/analog/Device.h @@ -24,6 +24,8 @@ #include "hurricane/analog/SpinBoxParameter.h" #include "hurricane/analog/MCheckBoxParameter.h" #include "hurricane/analog/FormFactorParameter.h" +#include "hurricane/analog/MatrixParameter.h" +#include "hurricane/analog/CapacitiesParameter.h" namespace Analog { @@ -67,12 +69,14 @@ namespace Analog { virtual void _preDestroy (); inline Hurricane::Library* getSubDevicesLibrary (); inline void addParameter ( Parameter* parameter ); - inline StepParameter* addStepParameter ( const std::string& name, long min, long max, long step ); - inline CapacitorParameter* addCapacitorParameter ( const std::string& name, long value ); - inline SpinBoxParameter* addSpinBoxParameter ( const std::string& name, long min, long max ); - inline FormFactorParameter* addFormFactorParameter ( const std::string& name, long min, long max ); - inline ChoiceParameter* addChoiceParameter ( const std::string& name, const Choices& choices ); + inline StepParameter* addStepParameter ( const std::string name, long min, long max, long step ); + inline CapacitorParameter* addCapacitorParameter ( const std::string name, long value ); + inline SpinBoxParameter* addSpinBoxParameter ( const std::string name, long min, long max ); + inline FormFactorParameter* addFormFactorParameter ( const std::string name, long min, long max ); + inline ChoiceParameter* addChoiceParameter ( const std::string name, const Choices& choices ); inline MCheckBoxParameter* addMCheckBoxParameter ( const std::string name, const Choices& choices ); + inline MatrixParameter* addMatrixParameter ( const std::string name ); + inline CapacitiesParameter* addCapacitiesParameter ( const std::string name, size_t count ); public: virtual Hurricane::Record* _getRecord () const; private: @@ -97,47 +101,61 @@ namespace Analog { _parameterSet.insert( parameter ); } - inline StepParameter* Device::addStepParameter ( const std::string& name, long min, long max, long step ) + inline StepParameter* Device::addStepParameter ( const std::string name, long min, long max, long step ) { StepParameter* stepParameter = new StepParameter( name,min,max,step ); addParameter( stepParameter ); return stepParameter; } - inline CapacitorParameter* Device::addCapacitorParameter ( const std::string& name, long value ) + inline CapacitorParameter* Device::addCapacitorParameter ( const std::string name, long value ) { CapacitorParameter* capacitorParameter = new CapacitorParameter( name,value ); addParameter( capacitorParameter ); return capacitorParameter; } - inline SpinBoxParameter* Device::addSpinBoxParameter ( const std::string& name, long min, long max ) + inline SpinBoxParameter* Device::addSpinBoxParameter ( const std::string name, long min, long max ) { SpinBoxParameter* spinBoxParameter = new SpinBoxParameter( name, min, max ); addParameter( spinBoxParameter ); return spinBoxParameter; } - inline FormFactorParameter* Device::addFormFactorParameter ( const std::string& name, long min, long max ) + inline FormFactorParameter* Device::addFormFactorParameter ( const std::string name, long min, long max ) { FormFactorParameter* formFactorParameter = new FormFactorParameter( name, min, max ); addParameter( formFactorParameter ); return formFactorParameter; } - inline ChoiceParameter* Device::addChoiceParameter ( const std::string& name, const Choices& choices ) + inline ChoiceParameter* Device::addChoiceParameter ( const std::string name, const Choices& choices ) { ChoiceParameter* choiceParameter = new ChoiceParameter( name, choices ); addParameter( choiceParameter ); return choiceParameter; } - inline MCheckBoxParameter* Device::addMCheckBoxParameter ( const std::string name, const Choices& choices ) + inline MCheckBoxParameter* Device::addMCheckBoxParameter ( const std::string name, const Choices& choices ) { MCheckBoxParameter* mCheckBoxParameter = new MCheckBoxParameter( name, choices ); addParameter( mCheckBoxParameter ); return mCheckBoxParameter; } + + inline MatrixParameter* Device::addMatrixParameter ( const std::string name ) + { + MatrixParameter* matrixParameter = new MatrixParameter( name ); + addParameter( matrixParameter ); + return matrixParameter; + } + + inline CapacitiesParameter* Device::addCapacitiesParameter ( const std::string name, size_t count ) + { + CapacitiesParameter* capacitiesParameter = new CapacitiesParameter( name, count ); + addParameter( capacitiesParameter ); + return capacitiesParameter; + } } // Analog namespace. diff --git a/hurricane/src/analog/hurricane/analog/Matrix.h b/hurricane/src/analog/hurricane/analog/Matrix.h new file mode 100644 index 00000000..bf8e572e --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Matrix.h @@ -0,0 +1,84 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2019-2019, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Authors : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Matrix.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_MATRIX_H +#define ANALOG_MATRIX_H + +namespace Analog { + + + class Matrix { + public: + inline Matrix ( size_t rows, size_t columns ); + inline Matrix ( const Matrix& ); + inline ~Matrix (); + inline Matrix& operator= ( const Matrix& ); + inline size_t rows () const; + inline size_t columns () const; + inline size_t at ( size_t row, size_t column ) const; + inline size_t& at ( size_t row, size_t column ); + inline size_t index ( size_t row, size_t column ) const; + private: + size_t _rows; + size_t _columns; + size_t* _table; + }; + + + inline Matrix::Matrix ( size_t rows, size_t columns ) + : _rows(rows), _columns(columns), _table(NULL) + { + _table = new size_t [ _rows * _columns ]; + } + + + inline Matrix::Matrix ( const Matrix& other ) + : _rows(other._rows), _columns(other._columns), _table(NULL) + { + size_t length = _rows * _columns; + _table = new size_t [ length ]; + for ( size_t i=0 ; igetValue(); } - double MIMCapacitor::getCDraw () const { return _cDraw; } - double MIMCapacitor::getCBorder () const { return _cBorder; } - double MIMCapacitor::getCParasite () const { return _cParasite; } + + double MultiCapacitor::getCapacity ( size_t i ) const { return _capacities->getValue(i); } + double MultiCapacitor::getCDraw () const { return _cDraw; } + double MultiCapacitor::getCBorder () const { return _cBorder; } + double MultiCapacitor::getCParasite () const { return _cParasite; } } // Analog namespace. -#endif // ANALOH_MIM_CAPACITOR_H +#endif // ANALOH_MULTI_CAPACITOR_H diff --git a/hurricane/src/analog/hurricane/analog/PyCapacitiesParameter.h b/hurricane/src/analog/hurricane/analog/PyCapacitiesParameter.h new file mode 100644 index 00000000..22c2c372 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCapacitiesParameter.h @@ -0,0 +1,55 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2019-2019, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Author : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyCapacitiesParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CAPACITIES_PARAMETER_H +#define ANALOG_PY_CAPACITIES_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/CapacitiesParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCapacitiesParameter". + + typedef struct { + PyParameter _baseObject; + } PyCapacitiesParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCapacitiesParameter; + extern PyMethodDef PyCapacitiesParameter_Methods[]; + + extern PyObject* PyCapacitiesParameter_Link ( Analog::CapacitiesParameter* object ); + extern void PyCapacitiesParameter_LinkPyType (); + + +#define IsPyCapacitiesParameter(v) ( (v)->ob_type == &PyTypeCapacitiesParameter ) +#define PYCAPACITIESPARAMETER(v) ( (PyCapacitiesParameter*)(v) ) +#define PYCAPACITIESPARAMETER_O(v) ( PYCAPACITIESPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CAPACITIES_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyMatrixParameter.h b/hurricane/src/analog/hurricane/analog/PyMatrixParameter.h new file mode 100644 index 00000000..cec87f1c --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyMatrixParameter.h @@ -0,0 +1,55 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2019-2019, All Rights Reserved +// +// +-----------------------------------------------------------------+ +// | C O R I O L I S | +// | H u r r i c a n e A n a l o g | +// | | +// | Author : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyMatrixParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_MATRIX_PARAMETER_H +#define ANALOG_PY_MATRIX_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/MatrixParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyMatrixParameter". + + typedef struct { + PyParameter _baseObject; + } PyMatrixParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeMatrixParameter; + extern PyMethodDef PyMatrixParameter_Methods[]; + + extern PyObject* PyMatrixParameter_Link ( Analog::MatrixParameter* object ); + extern void PyMatrixParameter_LinkPyType (); + + +#define IsPyMatrixParameter(v) ( (v)->ob_type == &PyTypeMatrixParameter ) +#define PYMATRIXPARAMETER(v) ( (PyMatrixParameter*)(v) ) +#define PYMATRIXPARAMETER_O(v) ( PYMATRIXPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_MATRIX_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyMIMCapacitor.h b/hurricane/src/analog/hurricane/analog/PyMultiCapacitor.h similarity index 59% rename from hurricane/src/analog/hurricane/analog/PyMIMCapacitor.h rename to hurricane/src/analog/hurricane/analog/PyMultiCapacitor.h index 8a31e494..7929a419 100644 --- a/hurricane/src/analog/hurricane/analog/PyMIMCapacitor.h +++ b/hurricane/src/analog/hurricane/analog/PyMultiCapacitor.h @@ -10,15 +10,15 @@ // | Author : Jean-Paul Chaput | // | E-mail : Jean-Paul.Chaput@lip6.fr | // | =============================================================== | -// | C++ Header : "./hurricane/analog/PyMIMCapacitor.h" | +// | C++ Header : "./hurricane/analog/PyMultiCapacitor.h" | // +-----------------------------------------------------------------+ -#ifndef ANALOG_PY_MIM_CAPACITOR_H -#define ANALOG_PY_MIM_CAPACITOR_H +#ifndef ANALOG_PY_MULTI_CAPACITOR_H +#define ANALOG_PY_MULTI_CAPACITOR_H #include "hurricane/analog/PyCapacitorFamily.h" -#include "hurricane/analog/MIMCapacitor.h" +#include "hurricane/analog/MultiCapacitor.h" namespace Isobar { @@ -26,30 +26,30 @@ namespace Isobar { extern "C" { // ------------------------------------------------------------------- -// Python Object : "PyMIMCapacitor". +// Python Object : "PyMultiCapacitor". typedef struct { PyCapacitorFamily _baseObject; - } PyMIMCapacitor; + } PyMultiCapacitor; // ------------------------------------------------------------------- // Functions & Types exported to "PyHurricane.cpp". - extern PyTypeObject PyTypeMIMCapacitor; - extern PyMethodDef PyMIMCapacitor_Methods[]; + extern PyTypeObject PyTypeMultiCapacitor; + extern PyMethodDef PyMultiCapacitor_Methods[]; - extern PyObject* PyMIMCapacitor_Link ( Analog::MIMCapacitor* object ); - extern void PyMIMCapacitor_LinkPyType (); + extern PyObject* PyMultiCapacitor_Link ( Analog::MultiCapacitor* object ); + extern void PyMultiCapacitor_LinkPyType (); -#define IsPyMIMCapacitor(v) ( (v)->ob_type == &PyTypeMIMCapacitor ) -#define PYMIMCAPACITOR(v) ( (PyMIMCapacitor*)(v) ) -#define PYMIMCAPACITOR_O(v) ( PYMIMCAPACITOR(v)->_baseObject->_baseObject._object ) +#define IsPyMultiCapacitor(v) ( (v)->ob_type == &PyTypeMultiCapacitor ) +#define PYMULTICAPACITOR(v) ( (PyMultiCapacitor*)(v) ) +#define PYMULTICAPACITOR_O(v) ( PYMULTICAPACITOR(v)->_baseObject->_baseObject._object ) } // extern "C". } // Isobar namespace. -#endif // ANALOG_PY_MIM_CAPACITOR_H +#endif // ANALOG_PY_MULTI_CAPACITOR_H diff --git a/hurricane/src/hurricane/Layer.cpp b/hurricane/src/hurricane/Layer.cpp index bc51373d..51dbeb6a 100644 --- a/hurricane/src/hurricane/Layer.cpp +++ b/hurricane/src/hurricane/Layer.cpp @@ -73,6 +73,10 @@ namespace Hurricane { { return NULL; } + const Layer* Layer::getCut () const + { return NULL; } + + const Layer* Layer::getTop () const { return NULL; } diff --git a/hurricane/src/hurricane/RegularLayer.cpp b/hurricane/src/hurricane/RegularLayer.cpp index f470d886..09cdfe7c 100644 --- a/hurricane/src/hurricane/RegularLayer.cpp +++ b/hurricane/src/hurricane/RegularLayer.cpp @@ -197,16 +197,19 @@ namespace Hurricane { ,_enclosure(0) ,_extentionCap(0) ,_extentionWidth(0) - { } + { + } - RegularLayer* RegularLayer::create ( Technology* technology - , const Name& name + RegularLayer* RegularLayer::create ( Technology* technology + , const Name& name + , BasicLayer* layer ) { - RegularLayer* regularLayer = new RegularLayer(technology, name); + RegularLayer* regularLayer = new RegularLayer( technology, name ); regularLayer->_postCreate(); + regularLayer->setBasicLayer( layer ); return regularLayer; } @@ -396,8 +399,7 @@ namespace Hurricane { if (stack.issetFlags(JsonWriter::TechnoMode)) { // Actual creation. - layer = RegularLayer::create( techno, name ); - layer->setBasicLayer ( basicLayer ); + layer = RegularLayer::create( techno, name, basicLayer ); layer->setSymbolic ( isSymbolic ); layer->setMinimalSize ( minimalSize ); layer->setMinimalSpacing( minimalSpacing ); diff --git a/hurricane/src/hurricane/ViaLayer.cpp b/hurricane/src/hurricane/ViaLayer.cpp index 97b52b9d..2955fe5c 100644 --- a/hurricane/src/hurricane/ViaLayer.cpp +++ b/hurricane/src/hurricane/ViaLayer.cpp @@ -125,6 +125,10 @@ namespace Hurricane { { return getCollection(_basicLayers); } + const Layer* ViaLayer::getCut () const + { return getTechnology()->getLayer(_basicLayers[1]->getMask()); } + + const Layer* ViaLayer::getTop () const { return getTechnology()->getLayer(_basicLayers[2]->getMask()); } diff --git a/hurricane/src/hurricane/hurricane/Layer.h b/hurricane/src/hurricane/hurricane/Layer.h index bbc873af..805b372d 100644 --- a/hurricane/src/hurricane/hurricane/Layer.h +++ b/hurricane/src/hurricane/hurricane/Layer.h @@ -72,6 +72,7 @@ namespace Hurricane { inline const DbU::Unit& getMinimalSpacing () const; virtual BasicLayers getBasicLayers () const = 0; virtual const Layer* getBlockageLayer () const; + virtual const Layer* getCut () const; virtual const Layer* getTop () const; virtual const Layer* getBottom () const; virtual const Layer* getOpposite ( const Layer* ) const; diff --git a/hurricane/src/hurricane/hurricane/RegularLayer.h b/hurricane/src/hurricane/hurricane/RegularLayer.h index da7ba562..a6a236d5 100644 --- a/hurricane/src/hurricane/hurricane/RegularLayer.h +++ b/hurricane/src/hurricane/hurricane/RegularLayer.h @@ -50,6 +50,7 @@ namespace Hurricane { // Constructor. static RegularLayer* create ( Technology* technology , const Name& name + , BasicLayer* layer ); // Accessors. virtual BasicLayers getBasicLayers () const; @@ -85,8 +86,8 @@ namespace Hurricane { protected: // Internal: Constructors & Destructors. - RegularLayer ( Technology* technology - , const Name& name + RegularLayer ( Technology* technology + , const Name& name ); }; diff --git a/hurricane/src/hurricane/hurricane/ViaLayer.h b/hurricane/src/hurricane/hurricane/ViaLayer.h index 262e5928..3267fc61 100644 --- a/hurricane/src/hurricane/hurricane/ViaLayer.h +++ b/hurricane/src/hurricane/hurricane/ViaLayer.h @@ -57,6 +57,7 @@ namespace Hurricane { ); // Accessors. virtual BasicLayers getBasicLayers () const; + virtual const Layer* getCut () const; virtual const Layer* getTop () const; virtual const Layer* getBottom () const; virtual const Layer* getOpposite ( const Layer* ) const; diff --git a/hurricane/src/isobar/PyDataBase.cpp b/hurricane/src/isobar/PyDataBase.cpp index 8b1939d2..19105e48 100644 --- a/hurricane/src/isobar/PyDataBase.cpp +++ b/hurricane/src/isobar/PyDataBase.cpp @@ -59,7 +59,8 @@ extern "C" { HTRY db = DataBase::getDB(); if (db == NULL) - PyErr_SetString( HurricaneError, "DataBase.getDB(): DataBase has not been created yet" ); + //PyErr_SetString( HurricaneError, "DataBase.getDB(): DataBase has not been created yet" ); + Py_RETURN_NONE; HCATCH return PyDataBase_Link( db ); diff --git a/hurricane/src/isobar/PyLayer.cpp b/hurricane/src/isobar/PyLayer.cpp index 92e71e90..e2fc4daf 100644 --- a/hurricane/src/isobar/PyLayer.cpp +++ b/hurricane/src/isobar/PyLayer.cpp @@ -259,7 +259,7 @@ extern "C" { if ( (__cs.getObjectIds() == ":layer:int") and (PYBASICLAYER_O(arg0)) ) rvalue = layer->getEnclosure( PYBASICLAYER_O(arg0), PyAny_AsLong(arg1) ); else if ( __cs.getObjectIds() == ":int" ) - rvalue = layer->getEnclosure( PyAny_AsLong(arg1) ); + rvalue = layer->getEnclosure( PyAny_AsLong(arg0) ); else { string message = "invalid parameter type for Layer.getEnclosure() (\"" + __cs.getObjectIds() + "\")"; @@ -321,6 +321,7 @@ extern "C" { accessorMaskFromVoid ( getMask ,PyLayer,Layer) accessorMaskFromVoid ( getExtractMask ,PyLayer,Layer) accessorLayerFromVoid ( getBlockageLayer ,PyLayer,Layer) + accessorLayerFromVoid ( getCut ,PyLayer,Layer) accessorLayerFromVoid ( getTop ,PyLayer,Layer) accessorLayerFromVoid ( getBottom ,PyLayer,Layer) accessorLayerFromLayer ( getOpposite ,PyLayer,Layer) @@ -360,6 +361,8 @@ extern "C" { , "Returns the collection of BasicLayer the Layer is built upon." } , { "getBlockageLayer" , (PyCFunction)PyLayer_getBlockageLayer , METH_NOARGS , "Returns the associated connector layer." } + , { "getCut" , (PyCFunction)PyLayer_getCut , METH_NOARGS + , "Returns the cut layer (in case of a muti-layer Contact)." } , { "getTop" , (PyCFunction)PyLayer_getTop , METH_NOARGS , "Returns the top layer (in case of a muti-layer)." } , { "getBottom" , (PyCFunction)PyLayer_getBottom , METH_NOARGS diff --git a/hurricane/src/isobar/PyRegularLayer.cpp b/hurricane/src/isobar/PyRegularLayer.cpp index 2984d034..af211a22 100644 --- a/hurricane/src/isobar/PyRegularLayer.cpp +++ b/hurricane/src/isobar/PyRegularLayer.cpp @@ -83,21 +83,29 @@ extern "C" { HTRY PyObject* pyTechnology = NULL; + PyObject* pyBasicLayer = NULL; char* name = NULL; if (PyArg_ParseTuple( args - , "Os:RegularLayer.create" + , "OsO:RegularLayer.create" , &pyTechnology , &name + , &pyBasicLayer )) { if (not IsPyTechnology(pyTechnology)) { PyErr_SetString ( ConstructorError, "RegularLayer.create(): First argument is not of type Technology." ); return NULL; } + if (not IsPyBasicLayer(pyBasicLayer)) { + PyErr_SetString ( ConstructorError, "RegularLayer.create(): Third argument is not of type BasicLayer." ); + return NULL; + } - regularLayer = RegularLayer::create( PYTECHNOLOGY_O(pyTechnology), Name(name) ); + regularLayer = RegularLayer::create( PYTECHNOLOGY_O(pyTechnology) + , Name(name) + , PYBASICLAYER_O(pyBasicLayer) ); } else { - PyErr_SetString ( ConstructorError, "Bad parameters given to RegularLayer.create()." ); + PyErr_SetString ( ConstructorError, "Bad number of parameters given to RegularLayer.create()." ); return NULL; } HCATCH diff --git a/katabatic/doc/html/AutoContactHTee_8h_source.html b/katabatic/doc/html/AutoContactHTee_8h_source.html index b2e30d1a..ea915aa9 100644 --- a/katabatic/doc/html/AutoContactHTee_8h_source.html +++ b/katabatic/doc/html/AutoContactHTee_8h_source.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoContactTerminal_8h_source.html b/katabatic/doc/html/AutoContactTerminal_8h_source.html index 89ac1a50..8a64454b 100644 --- a/katabatic/doc/html/AutoContactTerminal_8h_source.html +++ b/katabatic/doc/html/AutoContactTerminal_8h_source.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoContactTurn_8h_source.html b/katabatic/doc/html/AutoContactTurn_8h_source.html index d251fd83..9808ffbf 100644 --- a/katabatic/doc/html/AutoContactTurn_8h_source.html +++ b/katabatic/doc/html/AutoContactTurn_8h_source.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoContactVTee_8h_source.html b/katabatic/doc/html/AutoContactVTee_8h_source.html index ba6b2452..51b674b1 100644 --- a/katabatic/doc/html/AutoContactVTee_8h_source.html +++ b/katabatic/doc/html/AutoContactVTee_8h_source.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoContact_8h_source.html b/katabatic/doc/html/AutoContact_8h_source.html index 587c76db..f4c696b7 100644 --- a/katabatic/doc/html/AutoContact_8h_source.html +++ b/katabatic/doc/html/AutoContact_8h_source.html @@ -191,7 +191,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoHorizontal_8h_source.html b/katabatic/doc/html/AutoHorizontal_8h_source.html index a7e87b3a..a3b8a2bd 100644 --- a/katabatic/doc/html/AutoHorizontal_8h_source.html +++ b/katabatic/doc/html/AutoHorizontal_8h_source.html @@ -84,7 +84,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoSegment_8h_source.html b/katabatic/doc/html/AutoSegment_8h_source.html index bc081366..b4e89624 100644 --- a/katabatic/doc/html/AutoSegment_8h_source.html +++ b/katabatic/doc/html/AutoSegment_8h_source.html @@ -257,7 +257,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoSegments_8h_source.html b/katabatic/doc/html/AutoSegments_8h_source.html index 07b97825..75ffd6e9 100644 --- a/katabatic/doc/html/AutoSegments_8h_source.html +++ b/katabatic/doc/html/AutoSegments_8h_source.html @@ -101,7 +101,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/AutoVertical_8h_source.html b/katabatic/doc/html/AutoVertical_8h_source.html index fb6e3054..6bdfde7a 100644 --- a/katabatic/doc/html/AutoVertical_8h_source.html +++ b/katabatic/doc/html/AutoVertical_8h_source.html @@ -84,7 +84,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/ChipTools_8h_source.html b/katabatic/doc/html/ChipTools_8h_source.html index 144275f1..9896c61e 100644 --- a/katabatic/doc/html/ChipTools_8h_source.html +++ b/katabatic/doc/html/ChipTools_8h_source.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/Constants_8h_source.html b/katabatic/doc/html/Constants_8h_source.html index 1356205f..236260aa 100644 --- a/katabatic/doc/html/Constants_8h_source.html +++ b/katabatic/doc/html/Constants_8h_source.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/GCellGrid_8h_source.html b/katabatic/doc/html/GCellGrid_8h_source.html index 6a587ead..305b516e 100644 --- a/katabatic/doc/html/GCellGrid_8h_source.html +++ b/katabatic/doc/html/GCellGrid_8h_source.html @@ -78,7 +78,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/GCell_8h_source.html b/katabatic/doc/html/GCell_8h_source.html index a73e2d2c..ee660d9a 100644 --- a/katabatic/doc/html/GCell_8h_source.html +++ b/katabatic/doc/html/GCell_8h_source.html @@ -144,7 +144,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/GCells_8h_source.html b/katabatic/doc/html/GCells_8h_source.html index 1f17e476..7615d86c 100644 --- a/katabatic/doc/html/GCells_8h_source.html +++ b/katabatic/doc/html/GCells_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/Grid_8h_source.html b/katabatic/doc/html/Grid_8h_source.html index 802e3d05..e9dda3a8 100644 --- a/katabatic/doc/html/Grid_8h_source.html +++ b/katabatic/doc/html/Grid_8h_source.html @@ -77,7 +77,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/KatabaticEngine_8h_source.html b/katabatic/doc/html/KatabaticEngine_8h_source.html index 089de870..40fdfc1d 100644 --- a/katabatic/doc/html/KatabaticEngine_8h_source.html +++ b/katabatic/doc/html/KatabaticEngine_8h_source.html @@ -122,7 +122,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/Observer_8h_source.html b/katabatic/doc/html/Observer_8h_source.html index 83124bf2..8170c77a 100644 --- a/katabatic/doc/html/Observer_8h_source.html +++ b/katabatic/doc/html/Observer_8h_source.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/Session_8h_source.html b/katabatic/doc/html/Session_8h_source.html index 3f8019c7..c16af6b0 100644 --- a/katabatic/doc/html/Session_8h_source.html +++ b/katabatic/doc/html/Session_8h_source.html @@ -100,7 +100,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/annotated.html b/katabatic/doc/html/annotated.html index 437aa8bd..5bfacbef 100644 --- a/katabatic/doc/html/annotated.html +++ b/katabatic/doc/html/annotated.html @@ -82,7 +82,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html index 826be194..953921ca 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html @@ -126,7 +126,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContact.html b/katabatic/doc/html/classKatabatic_1_1AutoContact.html index 56e53a93..f831def6 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContact.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContact.html @@ -2433,7 +2433,7 @@ Notes - Differences from Katabatic 2
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html index ec60ba04..c5e99335 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html @@ -127,7 +127,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html index d59c7385..13ec2622 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html @@ -454,7 +454,7 @@ Update H-Tee Topology
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal-members.html index 5301c291..fcdce4fd 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal-members.html @@ -128,7 +128,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html index 69346c82..d0853f9c 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html @@ -594,7 +594,7 @@ Update Terminal Topology
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn-members.html index 41a2038d..6500f5f4 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn-members.html @@ -127,7 +127,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html index 3a617e90..82e4012d 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html @@ -456,7 +456,7 @@ Update Turn Topology
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee-members.html index 65a2838b..66a1b814 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee-members.html @@ -127,7 +127,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html index 60a854f8..abfb2598 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html @@ -446,7 +446,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal-members.html b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal-members.html index 2d8f4143..ecb0e6a3 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal-members.html @@ -182,7 +182,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html index fd9a9dc8..db7d1985 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html @@ -1233,7 +1233,7 @@ moveULeft() for an Horizontal
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegment-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegment-members.html index f357674c..0834b7c7 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegment-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegment-members.html @@ -182,7 +182,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegment.html b/katabatic/doc/html/classKatabatic_1_1AutoSegment.html index 0e29005f..4c529353 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegment.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegment.html @@ -4367,7 +4367,7 @@ Reduce Example
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds-members.html index eb9db071..191acc79 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds-members.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds.html index 37733311..541254ad 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds.html @@ -205,7 +205,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell-members.html index 3e1345ca..159ace42 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell-members.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell.html index 5feaec28..c949c9a3 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell.html @@ -209,7 +209,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection-members.html index a6cd67f0..2a633a06 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection-members.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection.html index bd27170a..78b1986e 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection.html @@ -164,7 +164,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable-members.html index e805d2ee..54c77ec9 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable.html index 058497f3..268cd72b 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable.html @@ -134,7 +134,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact-members.html index 26a68ff7..63746379 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact-members.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact.html index 17eb970d..b256c34e 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact.html @@ -215,7 +215,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars-members.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars-members.html index 81a0d384..d7bfeb60 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars-members.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars.html b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars.html index 0e8dc0ef..dc656150 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars.html @@ -195,7 +195,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoVertical-members.html b/katabatic/doc/html/classKatabatic_1_1AutoVertical-members.html index 6ee2ab8c..945a6824 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoVertical-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoVertical-members.html @@ -182,7 +182,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1AutoVertical.html b/katabatic/doc/html/classKatabatic_1_1AutoVertical.html index 4db35b8e..70869a83 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoVertical.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoVertical.html @@ -1233,7 +1233,7 @@ moveULeft() for an Horizontal
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1BaseGrid-members.html b/katabatic/doc/html/classKatabatic_1_1BaseGrid-members.html index 53be9da5..8f218b1a 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid-members.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid-members.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1BaseGrid.html b/katabatic/doc/html/classKatabatic_1_1BaseGrid.html index 2a0d9933..e7da9f24 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid.html @@ -439,7 +439,7 @@ Protected Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis-members.html b/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis-members.html index e31fbcea..94aa7d7f 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis-members.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis-members.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis.html b/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis.html index 699f1856..8b255b29 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis.html @@ -212,7 +212,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1BaseObserver-members.html b/katabatic/doc/html/classKatabatic_1_1BaseObserver-members.html index 67814ef0..7d59c167 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseObserver-members.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseObserver-members.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1BaseObserver.html b/katabatic/doc/html/classKatabatic_1_1BaseObserver.html index d02802fe..366d0680 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseObserver.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseObserver.html @@ -107,7 +107,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1ChipTools-members.html b/katabatic/doc/html/classKatabatic_1_1ChipTools-members.html index 7457387b..b21f7cfd 100644 --- a/katabatic/doc/html/classKatabatic_1_1ChipTools-members.html +++ b/katabatic/doc/html/classKatabatic_1_1ChipTools-members.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1ChipTools.html b/katabatic/doc/html/classKatabatic_1_1ChipTools.html index 23ed6c43..e6a4230c 100644 --- a/katabatic/doc/html/classKatabatic_1_1ChipTools.html +++ b/katabatic/doc/html/classKatabatic_1_1ChipTools.html @@ -412,7 +412,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell-members.html b/katabatic/doc/html/classKatabatic_1_1GCell-members.html index 45f6d6db..43b260d1 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell-members.html @@ -113,7 +113,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell.html b/katabatic/doc/html/classKatabatic_1_1GCell.html index 29b22062..69373e7b 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell.html @@ -1914,7 +1914,7 @@ GCell Implantation
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet-members.html b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet-members.html index 4a551445..63c3898e 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet-members.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html index 14c7820e..03801d69 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html @@ -341,7 +341,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCellGrid-members.html b/katabatic/doc/html/classKatabatic_1_1GCellGrid-members.html index c56db1c5..36fccaff 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellGrid-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellGrid-members.html @@ -95,7 +95,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCellGrid.html b/katabatic/doc/html/classKatabatic_1_1GCellGrid.html index 78abe743..4c659066 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellGrid.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellGrid.html @@ -550,7 +550,7 @@ Static Protected Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity-members.html b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity-members.html index 5410401c..478aa970 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity-members.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity.html b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity.html index b8095e6e..fb507bbc 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity.html @@ -91,7 +91,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex-members.html b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex-members.html index b7405018..2eab1dfe 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex-members.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex.html b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex.html index a1d8d021..f83d20fd 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key-members.html b/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key-members.html index dde3790e..e3623b1e 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key.html b/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key.html index 4eac2306..4ecac198 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key.html @@ -201,7 +201,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Grid-members.html b/katabatic/doc/html/classKatabatic_1_1Grid-members.html index d00eccb8..297d270f 100644 --- a/katabatic/doc/html/classKatabatic_1_1Grid-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Grid-members.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Grid.html b/katabatic/doc/html/classKatabatic_1_1Grid.html index c8a96cd1..12998df1 100644 --- a/katabatic/doc/html/classKatabatic_1_1Grid.html +++ b/katabatic/doc/html/classKatabatic_1_1Grid.html @@ -481,7 +481,7 @@ class Katabatic::Grid< GCellT >
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine-members.html b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine-members.html index 0a17b842..9d8de062 100644 --- a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine-members.html +++ b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine-members.html @@ -109,7 +109,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html index 53852775..20d43039 100644 --- a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html +++ b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html @@ -1424,7 +1424,7 @@ KatabaticEngine Implementation Details
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1LocatorHelper-members.html b/katabatic/doc/html/classKatabatic_1_1LocatorHelper-members.html index 3a2b46cb..6df8e267 100644 --- a/katabatic/doc/html/classKatabatic_1_1LocatorHelper-members.html +++ b/katabatic/doc/html/classKatabatic_1_1LocatorHelper-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html b/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html index d5cab962..d3dab13c 100644 --- a/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html +++ b/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html @@ -215,7 +215,7 @@ Implementation Details
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Observable-members.html b/katabatic/doc/html/classKatabatic_1_1Observable-members.html index e46b753c..8877b9cc 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observable-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Observable-members.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Observable.html b/katabatic/doc/html/classKatabatic_1_1Observable.html index 2f915f5d..eaa2544f 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observable.html +++ b/katabatic/doc/html/classKatabatic_1_1Observable.html @@ -219,7 +219,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Observer-members.html b/katabatic/doc/html/classKatabatic_1_1Observer-members.html index 031552fc..595eb050 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observer-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Observer-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Observer.html b/katabatic/doc/html/classKatabatic_1_1Observer.html index 07e3a824..16a6a264 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observer.html +++ b/katabatic/doc/html/classKatabatic_1_1Observer.html @@ -142,7 +142,7 @@ Observer Implementation Notes
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Session-members.html b/katabatic/doc/html/classKatabatic_1_1Session-members.html index 9d4e02b5..ca07255a 100644 --- a/katabatic/doc/html/classKatabatic_1_1Session-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Session-members.html @@ -86,7 +86,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classKatabatic_1_1Session.html b/katabatic/doc/html/classKatabatic_1_1Session.html index c9d1367c..8a092941 100644 --- a/katabatic/doc/html/classKatabatic_1_1Session.html +++ b/katabatic/doc/html/classKatabatic_1_1Session.html @@ -1149,7 +1149,7 @@ Revalidate AutoSegments. Just before this stage, they are on the correct axis an
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology-members.html b/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology-members.html index c8dbdfae..79249ad1 100644 --- a/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology-members.html +++ b/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology-members.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology.html b/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology.html index 2e8ee597..0e443c4a 100644 --- a/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology.html +++ b/katabatic/doc/html/classanonymous__namespace_02LoadGrByNet_8cpp_03_1_1GCellTopology.html @@ -97,7 +97,7 @@ Private Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/classes.html b/katabatic/doc/html/classes.html index 9001bdee..1bdecf8f 100644 --- a/katabatic/doc/html/classes.html +++ b/katabatic/doc/html/classes.html @@ -82,7 +82,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html b/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html index af357dda..579bac3e 100644 --- a/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html +++ b/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 8b8a6cda..b20491c7 100644 --- a/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -53,7 +53,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/files.html b/katabatic/doc/html/files.html index 05e6d9db..196692c2 100644 --- a/katabatic/doc/html/files.html +++ b/katabatic/doc/html/files.html @@ -67,7 +67,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions.html b/katabatic/doc/html/functions.html index 48817c11..0457d319 100644 --- a/katabatic/doc/html/functions.html +++ b/katabatic/doc/html/functions.html @@ -106,7 +106,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_0x7e.html b/katabatic/doc/html/functions_0x7e.html index 443a8e70..13292f32 100644 --- a/katabatic/doc/html/functions_0x7e.html +++ b/katabatic/doc/html/functions_0x7e.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_a.html b/katabatic/doc/html/functions_a.html index df28ddda..6d6374b7 100644 --- a/katabatic/doc/html/functions_a.html +++ b/katabatic/doc/html/functions_a.html @@ -94,7 +94,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_b.html b/katabatic/doc/html/functions_b.html index d8a10122..1b48b97e 100644 --- a/katabatic/doc/html/functions_b.html +++ b/katabatic/doc/html/functions_b.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_c.html b/katabatic/doc/html/functions_c.html index b286f1df..e4f3ef6b 100644 --- a/katabatic/doc/html/functions_c.html +++ b/katabatic/doc/html/functions_c.html @@ -130,7 +130,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_d.html b/katabatic/doc/html/functions_d.html index 4ed8d29a..017a6852 100644 --- a/katabatic/doc/html/functions_d.html +++ b/katabatic/doc/html/functions_d.html @@ -84,7 +84,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_e.html b/katabatic/doc/html/functions_e.html index 1f9d2fbc..9e147f07 100644 --- a/katabatic/doc/html/functions_e.html +++ b/katabatic/doc/html/functions_e.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_enum.html b/katabatic/doc/html/functions_enum.html index 649f4904..4e2599f3 100644 --- a/katabatic/doc/html/functions_enum.html +++ b/katabatic/doc/html/functions_enum.html @@ -46,7 +46,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_eval.html b/katabatic/doc/html/functions_eval.html index dc0b414d..d93153a9 100644 --- a/katabatic/doc/html/functions_eval.html +++ b/katabatic/doc/html/functions_eval.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_f.html b/katabatic/doc/html/functions_f.html index 61773e90..d735f6b2 100644 --- a/katabatic/doc/html/functions_f.html +++ b/katabatic/doc/html/functions_f.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func.html b/katabatic/doc/html/functions_func.html index 22963ea7..b70098aa 100644 --- a/katabatic/doc/html/functions_func.html +++ b/katabatic/doc/html/functions_func.html @@ -106,7 +106,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_0x7e.html b/katabatic/doc/html/functions_func_0x7e.html index eb24aba7..2a3c5002 100644 --- a/katabatic/doc/html/functions_func_0x7e.html +++ b/katabatic/doc/html/functions_func_0x7e.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_a.html b/katabatic/doc/html/functions_func_a.html index 8c496336..b10793cf 100644 --- a/katabatic/doc/html/functions_func_a.html +++ b/katabatic/doc/html/functions_func_a.html @@ -85,7 +85,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_b.html b/katabatic/doc/html/functions_func_b.html index 6bb4cbe8..ea00635e 100644 --- a/katabatic/doc/html/functions_func_b.html +++ b/katabatic/doc/html/functions_func_b.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_c.html b/katabatic/doc/html/functions_func_c.html index 7122f601..a4761375 100644 --- a/katabatic/doc/html/functions_func_c.html +++ b/katabatic/doc/html/functions_func_c.html @@ -130,7 +130,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_d.html b/katabatic/doc/html/functions_func_d.html index 42d1cbd5..7e41a9e5 100644 --- a/katabatic/doc/html/functions_func_d.html +++ b/katabatic/doc/html/functions_func_d.html @@ -81,7 +81,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_e.html b/katabatic/doc/html/functions_func_e.html index fd5a374a..a2cfc6e9 100644 --- a/katabatic/doc/html/functions_func_e.html +++ b/katabatic/doc/html/functions_func_e.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_f.html b/katabatic/doc/html/functions_func_f.html index d80300e9..dd630fbd 100644 --- a/katabatic/doc/html/functions_func_f.html +++ b/katabatic/doc/html/functions_func_f.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_g.html b/katabatic/doc/html/functions_func_g.html index 15e9bd49..5c26f790 100644 --- a/katabatic/doc/html/functions_func_g.html +++ b/katabatic/doc/html/functions_func_g.html @@ -622,7 +622,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_h.html b/katabatic/doc/html/functions_func_h.html index 8c492566..13a8549c 100644 --- a/katabatic/doc/html/functions_func_h.html +++ b/katabatic/doc/html/functions_func_h.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_i.html b/katabatic/doc/html/functions_func_i.html index fce697dd..040ea626 100644 --- a/katabatic/doc/html/functions_func_i.html +++ b/katabatic/doc/html/functions_func_i.html @@ -169,7 +169,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_k.html b/katabatic/doc/html/functions_func_k.html index 9204f136..e22a48f8 100644 --- a/katabatic/doc/html/functions_func_k.html +++ b/katabatic/doc/html/functions_func_k.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_l.html b/katabatic/doc/html/functions_func_l.html index 1d08946f..ab0abe63 100644 --- a/katabatic/doc/html/functions_func_l.html +++ b/katabatic/doc/html/functions_func_l.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_m.html b/katabatic/doc/html/functions_func_m.html index 188ec562..e777d750 100644 --- a/katabatic/doc/html/functions_func_m.html +++ b/katabatic/doc/html/functions_func_m.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_n.html b/katabatic/doc/html/functions_func_n.html index c9a50982..fc04d9b4 100644 --- a/katabatic/doc/html/functions_func_n.html +++ b/katabatic/doc/html/functions_func_n.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_o.html b/katabatic/doc/html/functions_func_o.html index 0b573abe..9a54145e 100644 --- a/katabatic/doc/html/functions_func_o.html +++ b/katabatic/doc/html/functions_func_o.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_p.html b/katabatic/doc/html/functions_func_p.html index 7ade8259..7ec19f45 100644 --- a/katabatic/doc/html/functions_func_p.html +++ b/katabatic/doc/html/functions_func_p.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_r.html b/katabatic/doc/html/functions_func_r.html index 1bdaac10..a45e7af4 100644 --- a/katabatic/doc/html/functions_func_r.html +++ b/katabatic/doc/html/functions_func_r.html @@ -88,7 +88,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_s.html b/katabatic/doc/html/functions_func_s.html index 1cfdd387..0efd6181 100644 --- a/katabatic/doc/html/functions_func_s.html +++ b/katabatic/doc/html/functions_func_s.html @@ -165,7 +165,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_t.html b/katabatic/doc/html/functions_func_t.html index 2c7bb28e..15d06ffa 100644 --- a/katabatic/doc/html/functions_func_t.html +++ b/katabatic/doc/html/functions_func_t.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_u.html b/katabatic/doc/html/functions_func_u.html index 3902d226..3fe3f384 100644 --- a/katabatic/doc/html/functions_func_u.html +++ b/katabatic/doc/html/functions_func_u.html @@ -93,7 +93,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_func_x.html b/katabatic/doc/html/functions_func_x.html index 8253e5af..5a3fc0a7 100644 --- a/katabatic/doc/html/functions_func_x.html +++ b/katabatic/doc/html/functions_func_x.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_g.html b/katabatic/doc/html/functions_g.html index 68b8ac98..ed669254 100644 --- a/katabatic/doc/html/functions_g.html +++ b/katabatic/doc/html/functions_g.html @@ -622,7 +622,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_h.html b/katabatic/doc/html/functions_h.html index 644df725..07da9e83 100644 --- a/katabatic/doc/html/functions_h.html +++ b/katabatic/doc/html/functions_h.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_i.html b/katabatic/doc/html/functions_i.html index 90c06c7c..fd436220 100644 --- a/katabatic/doc/html/functions_i.html +++ b/katabatic/doc/html/functions_i.html @@ -169,7 +169,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_k.html b/katabatic/doc/html/functions_k.html index c3a8b6f4..168f9303 100644 --- a/katabatic/doc/html/functions_k.html +++ b/katabatic/doc/html/functions_k.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_l.html b/katabatic/doc/html/functions_l.html index 07a6c937..87b7d586 100644 --- a/katabatic/doc/html/functions_l.html +++ b/katabatic/doc/html/functions_l.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_m.html b/katabatic/doc/html/functions_m.html index 87446a4d..019e0cd9 100644 --- a/katabatic/doc/html/functions_m.html +++ b/katabatic/doc/html/functions_m.html @@ -85,7 +85,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_n.html b/katabatic/doc/html/functions_n.html index 2fcd2abc..e6399e58 100644 --- a/katabatic/doc/html/functions_n.html +++ b/katabatic/doc/html/functions_n.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_o.html b/katabatic/doc/html/functions_o.html index ee6cbb68..1a0b403c 100644 --- a/katabatic/doc/html/functions_o.html +++ b/katabatic/doc/html/functions_o.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_p.html b/katabatic/doc/html/functions_p.html index e3bcaec8..f8571d08 100644 --- a/katabatic/doc/html/functions_p.html +++ b/katabatic/doc/html/functions_p.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_r.html b/katabatic/doc/html/functions_r.html index 70a886d6..639024d4 100644 --- a/katabatic/doc/html/functions_r.html +++ b/katabatic/doc/html/functions_r.html @@ -88,7 +88,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_s.html b/katabatic/doc/html/functions_s.html index 31eb4f06..37e8afd4 100644 --- a/katabatic/doc/html/functions_s.html +++ b/katabatic/doc/html/functions_s.html @@ -168,7 +168,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_t.html b/katabatic/doc/html/functions_t.html index 4c5dad2f..b26deb84 100644 --- a/katabatic/doc/html/functions_t.html +++ b/katabatic/doc/html/functions_t.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_type.html b/katabatic/doc/html/functions_type.html index 569c8248..2e5bab15 100644 --- a/katabatic/doc/html/functions_type.html +++ b/katabatic/doc/html/functions_type.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_u.html b/katabatic/doc/html/functions_u.html index c0d4c13b..2a370164 100644 --- a/katabatic/doc/html/functions_u.html +++ b/katabatic/doc/html/functions_u.html @@ -93,7 +93,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/functions_x.html b/katabatic/doc/html/functions_x.html index 27a5e401..82fc5a0f 100644 --- a/katabatic/doc/html/functions_x.html +++ b/katabatic/doc/html/functions_x.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/graph_legend.html b/katabatic/doc/html/graph_legend.html index 442fe496..2711dd46 100644 --- a/katabatic/doc/html/graph_legend.html +++ b/katabatic/doc/html/graph_legend.html @@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/group__LoadGlobalRouting.html b/katabatic/doc/html/group__LoadGlobalRouting.html index 52c8f8e9..ee4d8653 100644 --- a/katabatic/doc/html/group__LoadGlobalRouting.html +++ b/katabatic/doc/html/group__LoadGlobalRouting.html @@ -547,7 +547,7 @@ doRp_StairCaseV()
  • One global: nonsensical because there also must be a terminal.
  • -Two aligned globals: in that case we do a straight wire whithout any AutoContact (handled by the source/target of the wire).
  • +Two aligned globals: in that case we do a straight wire without any AutoContact (handled by the source/target of the wire).
    _do_xG.png @@ -866,7 +866,7 @@ _do_xG_xM3()

    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/group__grpSynthHierarchy.html b/katabatic/doc/html/group__grpSynthHierarchy.html index 3c80bb1e..bf1b9649 100644 --- a/katabatic/doc/html/group__grpSynthHierarchy.html +++ b/katabatic/doc/html/group__grpSynthHierarchy.html @@ -114,7 +114,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/hierarchy.html b/katabatic/doc/html/hierarchy.html index 6a1565a4..54dc8928 100644 --- a/katabatic/doc/html/hierarchy.html +++ b/katabatic/doc/html/hierarchy.html @@ -85,7 +85,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/index.html b/katabatic/doc/html/index.html index 529b1b58..a8fea672 100644 --- a/katabatic/doc/html/index.html +++ b/katabatic/doc/html/index.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/modules.html b/katabatic/doc/html/modules.html index 102e4533..6a843621 100644 --- a/katabatic/doc/html/modules.html +++ b/katabatic/doc/html/modules.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceKatabatic.html b/katabatic/doc/html/namespaceKatabatic.html index 29f9d7dd..eac261f8 100644 --- a/katabatic/doc/html/namespaceKatabatic.html +++ b/katabatic/doc/html/namespaceKatabatic.html @@ -615,7 +615,7 @@ Enumerations
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html b/katabatic/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html index d4cd9401..2973cacf 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html b/katabatic/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html index 287619af..7aaa62a3 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html b/katabatic/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html index abcd9989..9d730a9b 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html b/katabatic/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html index 6ad25357..afa017f2 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html b/katabatic/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html index 6a729d8d..9d0ce88e 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html @@ -83,7 +83,7 @@ Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html b/katabatic/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html index a1b97e49..7f3620f8 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespacemembers.html b/katabatic/doc/html/namespacemembers.html index fdf41fac..04f39fbf 100644 --- a/katabatic/doc/html/namespacemembers.html +++ b/katabatic/doc/html/namespacemembers.html @@ -333,7 +333,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespacemembers_enum.html b/katabatic/doc/html/namespacemembers_enum.html index c51c5912..1a3aaec3 100644 --- a/katabatic/doc/html/namespacemembers_enum.html +++ b/katabatic/doc/html/namespacemembers_enum.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespacemembers_eval.html b/katabatic/doc/html/namespacemembers_eval.html index 921174a6..516ceee3 100644 --- a/katabatic/doc/html/namespacemembers_eval.html +++ b/katabatic/doc/html/namespacemembers_eval.html @@ -269,7 +269,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespacemembers_func.html b/katabatic/doc/html/namespacemembers_func.html index 70d75358..2fdb543a 100644 --- a/katabatic/doc/html/namespacemembers_func.html +++ b/katabatic/doc/html/namespacemembers_func.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespacemembers_type.html b/katabatic/doc/html/namespacemembers_type.html index 76a5b4e9..7970defe 100644 --- a/katabatic/doc/html/namespacemembers_type.html +++ b/katabatic/doc/html/namespacemembers_type.html @@ -70,7 +70,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/html/namespaces.html b/katabatic/doc/html/namespaces.html index 3a412b88..e665bf28 100644 --- a/katabatic/doc/html/namespaces.html +++ b/katabatic/doc/html/namespaces.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/katabatic/doc/latex/group__LoadGlobalRouting.tex b/katabatic/doc/latex/group__LoadGlobalRouting.tex index e9ee43d5..c80bab5d 100644 --- a/katabatic/doc/latex/group__LoadGlobalRouting.tex +++ b/katabatic/doc/latex/group__LoadGlobalRouting.tex @@ -312,7 +312,7 @@ Construct the topology, when there is only global wires (no local terminals). Some topology are not handled because they must not be managed by this function\+: \begin{DoxyItemize} \item One global\+: nonsensical because there also must be a terminal. -\item Two aligned globals\+: in that case we do a straight wire whithout any Auto\+Contact (handled by the source/target of the wire). +\item Two aligned globals\+: in that case we do a straight wire without any Auto\+Contact (handled by the source/target of the wire). \end{DoxyItemize} diff --git a/katabatic/doc/latex/refman.tex b/katabatic/doc/latex/refman.tex index c3814d2c..9bab9114 100644 --- a/katabatic/doc/latex/refman.tex +++ b/katabatic/doc/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:55}\\ + {\small Mon Oct 28 2019 18:06:34}\\ \end{center} \end{titlepage} diff --git a/katana/python/katanaInit.py b/katana/python/katanaInit.py index dda64c8d..e9c60392 100644 --- a/katana/python/katanaInit.py +++ b/katana/python/katanaInit.py @@ -3,37 +3,27 @@ try: import sys import os.path + import helpers.io from helpers.io import ErrorMessage from helpers.io import WarningMessage import Viewer -except ImportError, e: - serror = str(e) - if serror.startswith('No module named'): - module = serror.split()[-1] - print '[ERROR] The <%s> python module or symbol cannot be loaded.' % module - print ' Please check the integrity of the package.' - if str(e).find('cannot open shared object file'): - library = serror.split(':')[0] - print '[ERROR] The <%s> shared library cannot be loaded.' % library - print ' Under RHEL 6, you must be under devtoolset-2.' - print ' (scl enable devtoolset-2 bash)' - sys.exit(1) except Exception, e: - print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python' - print ' modules. Something may be wrong at Python/C API level.\n' - print ' %s' % e - sys.exit(2) + helpers.io.catch( e ) + sys.exit( 1 ) def katanaHook ( **kw ): katana = None if kw.has_key('katana'): - katana = kw['katana'] + katana = kw['katana'] else: - print ErrorMessage( 3, 'katanaHook(): Must be run from a KatanaEngine.' ) - return + print ErrorMessage( 3, 'katanaHook(): Must be run from a KatanaEngine.' ) + return - userInit = os.path.join( os.getcwd(), '.coriolis2/katana.py' ) - if (os.path.exists(userInit)): - execfile( userInit ) + try: + userInit = os.path.join( os.getcwd(), 'coriolis2/katana.py' ) + if (os.path.exists(userInit)): + execfile( userInit ) + except Exception, e: + helpers.io.catch( e ) return diff --git a/kite/doc/html/Constants_8h_source.html b/kite/doc/html/Constants_8h_source.html index 111a1e4c..092ad6f9 100644 --- a/kite/doc/html/Constants_8h_source.html +++ b/kite/doc/html/Constants_8h_source.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/DataNegociate_8h_source.html b/kite/doc/html/DataNegociate_8h_source.html index 83dd1242..f85a4585 100644 --- a/kite/doc/html/DataNegociate_8h_source.html +++ b/kite/doc/html/DataNegociate_8h_source.html @@ -96,7 +96,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/HorizontalTrack_8h_source.html b/kite/doc/html/HorizontalTrack_8h_source.html index 373f1aee..b36c8958 100644 --- a/kite/doc/html/HorizontalTrack_8h_source.html +++ b/kite/doc/html/HorizontalTrack_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/KiteEngine_8h_source.html b/kite/doc/html/KiteEngine_8h_source.html index 39b5c429..1cbb59eb 100644 --- a/kite/doc/html/KiteEngine_8h_source.html +++ b/kite/doc/html/KiteEngine_8h_source.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/Manipulator_8h_source.html b/kite/doc/html/Manipulator_8h_source.html index e2908974..747578de 100644 --- a/kite/doc/html/Manipulator_8h_source.html +++ b/kite/doc/html/Manipulator_8h_source.html @@ -94,7 +94,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/NegociateWindow_8h_source.html b/kite/doc/html/NegociateWindow_8h_source.html index a8e92d6c..195bf181 100644 --- a/kite/doc/html/NegociateWindow_8h_source.html +++ b/kite/doc/html/NegociateWindow_8h_source.html @@ -83,7 +83,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/RoutingEventHistory_8h_source.html b/kite/doc/html/RoutingEventHistory_8h_source.html index 19522f01..ae9b7236 100644 --- a/kite/doc/html/RoutingEventHistory_8h_source.html +++ b/kite/doc/html/RoutingEventHistory_8h_source.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/RoutingEventLoop_8h_source.html b/kite/doc/html/RoutingEventLoop_8h_source.html index baf03885..d2746192 100644 --- a/kite/doc/html/RoutingEventLoop_8h_source.html +++ b/kite/doc/html/RoutingEventLoop_8h_source.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/RoutingEventQueue_8h_source.html b/kite/doc/html/RoutingEventQueue_8h_source.html index 960fc72c..69cbc872 100644 --- a/kite/doc/html/RoutingEventQueue_8h_source.html +++ b/kite/doc/html/RoutingEventQueue_8h_source.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/RoutingEvent_8h_source.html b/kite/doc/html/RoutingEvent_8h_source.html index 833205cb..81c940e7 100644 --- a/kite/doc/html/RoutingEvent_8h_source.html +++ b/kite/doc/html/RoutingEvent_8h_source.html @@ -110,7 +110,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/RoutingPlane_8h_source.html b/kite/doc/html/RoutingPlane_8h_source.html index 30b3c577..18b71f6e 100644 --- a/kite/doc/html/RoutingPlane_8h_source.html +++ b/kite/doc/html/RoutingPlane_8h_source.html @@ -82,7 +82,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/SegmentFsm_8h_source.html b/kite/doc/html/SegmentFsm_8h_source.html index d81f3265..ba4697ad 100644 --- a/kite/doc/html/SegmentFsm_8h_source.html +++ b/kite/doc/html/SegmentFsm_8h_source.html @@ -126,7 +126,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/Session_8h_source.html b/kite/doc/html/Session_8h_source.html index aaec75b7..3cf78ada 100644 --- a/kite/doc/html/Session_8h_source.html +++ b/kite/doc/html/Session_8h_source.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/TrackElement_8h_source.html b/kite/doc/html/TrackElement_8h_source.html index 67903141..8335e98e 100644 --- a/kite/doc/html/TrackElement_8h_source.html +++ b/kite/doc/html/TrackElement_8h_source.html @@ -132,7 +132,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/TrackFixedSegment_8h_source.html b/kite/doc/html/TrackFixedSegment_8h_source.html index 74075301..071c5261 100644 --- a/kite/doc/html/TrackFixedSegment_8h_source.html +++ b/kite/doc/html/TrackFixedSegment_8h_source.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/TrackMarker_8h_source.html b/kite/doc/html/TrackMarker_8h_source.html index 9e822ce4..115e55d5 100644 --- a/kite/doc/html/TrackMarker_8h_source.html +++ b/kite/doc/html/TrackMarker_8h_source.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/TrackSegment_8h_source.html b/kite/doc/html/TrackSegment_8h_source.html index 0908902a..304959e3 100644 --- a/kite/doc/html/TrackSegment_8h_source.html +++ b/kite/doc/html/TrackSegment_8h_source.html @@ -107,7 +107,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/Track_8h_source.html b/kite/doc/html/Track_8h_source.html index 2d2f03d7..5317851c 100644 --- a/kite/doc/html/Track_8h_source.html +++ b/kite/doc/html/Track_8h_source.html @@ -115,7 +115,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/VerticalTrack_8h_source.html b/kite/doc/html/VerticalTrack_8h_source.html index fd4bd207..2ce61b43 100644 --- a/kite/doc/html/VerticalTrack_8h_source.html +++ b/kite/doc/html/VerticalTrack_8h_source.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/annotated.html b/kite/doc/html/annotated.html index 412804d8..521ab171 100644 --- a/kite/doc/html/annotated.html +++ b/kite/doc/html/annotated.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1DataNegociate-members.html b/kite/doc/html/classKite_1_1DataNegociate-members.html index 7fa605d9..e588699f 100644 --- a/kite/doc/html/classKite_1_1DataNegociate-members.html +++ b/kite/doc/html/classKite_1_1DataNegociate-members.html @@ -86,7 +86,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1DataNegociate.html b/kite/doc/html/classKite_1_1DataNegociate.html index 70530858..aceffdda 100644 --- a/kite/doc/html/classKite_1_1DataNegociate.html +++ b/kite/doc/html/classKite_1_1DataNegociate.html @@ -814,7 +814,7 @@ Modifications History
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1HorizontalTrack-members.html b/kite/doc/html/classKite_1_1HorizontalTrack-members.html index 20b13204..c8a5ad2a 100644 --- a/kite/doc/html/classKite_1_1HorizontalTrack-members.html +++ b/kite/doc/html/classKite_1_1HorizontalTrack-members.html @@ -111,7 +111,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1HorizontalTrack.html b/kite/doc/html/classKite_1_1HorizontalTrack.html index 0ac98815..ab418c39 100644 --- a/kite/doc/html/classKite_1_1HorizontalTrack.html +++ b/kite/doc/html/classKite_1_1HorizontalTrack.html @@ -313,7 +313,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1KiteEngine-members.html b/kite/doc/html/classKite_1_1KiteEngine-members.html index a25a7f48..ae207bb0 100644 --- a/kite/doc/html/classKite_1_1KiteEngine-members.html +++ b/kite/doc/html/classKite_1_1KiteEngine-members.html @@ -114,7 +114,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1KiteEngine.html b/kite/doc/html/classKite_1_1KiteEngine.html index c813aa9e..68da6f86 100644 --- a/kite/doc/html/classKite_1_1KiteEngine.html +++ b/kite/doc/html/classKite_1_1KiteEngine.html @@ -397,7 +397,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1Manipulator-members.html b/kite/doc/html/classKite_1_1Manipulator-members.html index 95ce7487..aefd6e9f 100644 --- a/kite/doc/html/classKite_1_1Manipulator-members.html +++ b/kite/doc/html/classKite_1_1Manipulator-members.html @@ -88,7 +88,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1Manipulator.html b/kite/doc/html/classKite_1_1Manipulator.html index b4ec3794..6bea69ba 100644 --- a/kite/doc/html/classKite_1_1Manipulator.html +++ b/kite/doc/html/classKite_1_1Manipulator.html @@ -768,7 +768,7 @@ One Dogleg (max)
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1NegociateWindow-members.html b/kite/doc/html/classKite_1_1NegociateWindow-members.html index f461c909..1f4f3271 100644 --- a/kite/doc/html/classKite_1_1NegociateWindow-members.html +++ b/kite/doc/html/classKite_1_1NegociateWindow-members.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1NegociateWindow.html b/kite/doc/html/classKite_1_1NegociateWindow.html index a73e434c..6bb3bf16 100644 --- a/kite/doc/html/classKite_1_1NegociateWindow.html +++ b/kite/doc/html/classKite_1_1NegociateWindow.html @@ -625,7 +625,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEvent-members.html b/kite/doc/html/classKite_1_1RoutingEvent-members.html index 19d6d088..c6bf7560 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent-members.html +++ b/kite/doc/html/classKite_1_1RoutingEvent-members.html @@ -97,7 +97,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEvent.html b/kite/doc/html/classKite_1_1RoutingEvent.html index 29e296ef..f46378c5 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent.html +++ b/kite/doc/html/classKite_1_1RoutingEvent.html @@ -1313,7 +1313,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEventHistory-members.html b/kite/doc/html/classKite_1_1RoutingEventHistory-members.html index db1721a7..50cc2296 100644 --- a/kite/doc/html/classKite_1_1RoutingEventHistory-members.html +++ b/kite/doc/html/classKite_1_1RoutingEventHistory-members.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEventHistory.html b/kite/doc/html/classKite_1_1RoutingEventHistory.html index d6e78a34..32ecd58f 100644 --- a/kite/doc/html/classKite_1_1RoutingEventHistory.html +++ b/kite/doc/html/classKite_1_1RoutingEventHistory.html @@ -259,7 +259,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEventLoop-members.html b/kite/doc/html/classKite_1_1RoutingEventLoop-members.html index 21e422de..20aaf25a 100644 --- a/kite/doc/html/classKite_1_1RoutingEventLoop-members.html +++ b/kite/doc/html/classKite_1_1RoutingEventLoop-members.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEventLoop.html b/kite/doc/html/classKite_1_1RoutingEventLoop.html index 3bf91c1c..4a7e0609 100644 --- a/kite/doc/html/classKite_1_1RoutingEventLoop.html +++ b/kite/doc/html/classKite_1_1RoutingEventLoop.html @@ -244,7 +244,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEventQueue-members.html b/kite/doc/html/classKite_1_1RoutingEventQueue-members.html index f8d29b6b..6ada4472 100644 --- a/kite/doc/html/classKite_1_1RoutingEventQueue-members.html +++ b/kite/doc/html/classKite_1_1RoutingEventQueue-members.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEventQueue.html b/kite/doc/html/classKite_1_1RoutingEventQueue.html index fa1b638d..9f3a777a 100644 --- a/kite/doc/html/classKite_1_1RoutingEventQueue.html +++ b/kite/doc/html/classKite_1_1RoutingEventQueue.html @@ -408,7 +408,7 @@ Implementation Details
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEvent_1_1Key-members.html b/kite/doc/html/classKite_1_1RoutingEvent_1_1Key-members.html index 574552f3..966ad385 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent_1_1Key-members.html +++ b/kite/doc/html/classKite_1_1RoutingEvent_1_1Key-members.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingEvent_1_1Key.html b/kite/doc/html/classKite_1_1RoutingEvent_1_1Key.html index 87caeb55..fb386be2 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent_1_1Key.html +++ b/kite/doc/html/classKite_1_1RoutingEvent_1_1Key.html @@ -105,7 +105,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingPlane-members.html b/kite/doc/html/classKite_1_1RoutingPlane-members.html index 58d77fc7..e7c677d1 100644 --- a/kite/doc/html/classKite_1_1RoutingPlane-members.html +++ b/kite/doc/html/classKite_1_1RoutingPlane-members.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1RoutingPlane.html b/kite/doc/html/classKite_1_1RoutingPlane.html index fe6ef86b..877efc48 100644 --- a/kite/doc/html/classKite_1_1RoutingPlane.html +++ b/kite/doc/html/classKite_1_1RoutingPlane.html @@ -677,7 +677,7 @@ Fig 1: Horizontal RoutingPlane
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1SegmentAction-members.html b/kite/doc/html/classKite_1_1SegmentAction-members.html index 38d1d01d..a00fb55d 100644 --- a/kite/doc/html/classKite_1_1SegmentAction-members.html +++ b/kite/doc/html/classKite_1_1SegmentAction-members.html @@ -82,7 +82,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1SegmentAction.html b/kite/doc/html/classKite_1_1SegmentAction.html index 60b38526..9c9049c0 100644 --- a/kite/doc/html/classKite_1_1SegmentAction.html +++ b/kite/doc/html/classKite_1_1SegmentAction.html @@ -397,7 +397,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1SegmentFsm-members.html b/kite/doc/html/classKite_1_1SegmentFsm-members.html index b87f6c24..bc2a8cb2 100644 --- a/kite/doc/html/classKite_1_1SegmentFsm-members.html +++ b/kite/doc/html/classKite_1_1SegmentFsm-members.html @@ -88,7 +88,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1SegmentFsm.html b/kite/doc/html/classKite_1_1SegmentFsm.html index a374aa30..70996de6 100644 --- a/kite/doc/html/classKite_1_1SegmentFsm.html +++ b/kite/doc/html/classKite_1_1SegmentFsm.html @@ -926,7 +926,7 @@ Candidates Track Ordering
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1SegmentObserver-members.html b/kite/doc/html/classKite_1_1SegmentObserver-members.html index dfe9aff1..f3e3827a 100644 --- a/kite/doc/html/classKite_1_1SegmentObserver-members.html +++ b/kite/doc/html/classKite_1_1SegmentObserver-members.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1SegmentObserver.html b/kite/doc/html/classKite_1_1SegmentObserver.html index 21667e31..8739c7fa 100644 --- a/kite/doc/html/classKite_1_1SegmentObserver.html +++ b/kite/doc/html/classKite_1_1SegmentObserver.html @@ -109,7 +109,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1Session-members.html b/kite/doc/html/classKite_1_1Session-members.html index 1e0329eb..aa479a74 100644 --- a/kite/doc/html/classKite_1_1Session-members.html +++ b/kite/doc/html/classKite_1_1Session-members.html @@ -99,7 +99,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1Session.html b/kite/doc/html/classKite_1_1Session.html index 96cb10cd..23795645 100644 --- a/kite/doc/html/classKite_1_1Session.html +++ b/kite/doc/html/classKite_1_1Session.html @@ -666,7 +666,7 @@ The Lookup Mechanism
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1Track-members.html b/kite/doc/html/classKite_1_1Track-members.html index 88dc50c6..aa69631c 100644 --- a/kite/doc/html/classKite_1_1Track-members.html +++ b/kite/doc/html/classKite_1_1Track-members.html @@ -111,7 +111,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1Track.html b/kite/doc/html/classKite_1_1Track.html index b4517694..2febc316 100644 --- a/kite/doc/html/classKite_1_1Track.html +++ b/kite/doc/html/classKite_1_1Track.html @@ -1633,7 +1633,7 @@ Fig 3: Track::getBeginIndex()
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackElement-members.html b/kite/doc/html/classKite_1_1TrackElement-members.html index 00026f2b..341723fc 100644 --- a/kite/doc/html/classKite_1_1TrackElement-members.html +++ b/kite/doc/html/classKite_1_1TrackElement-members.html @@ -118,7 +118,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackElement.html b/kite/doc/html/classKite_1_1TrackElement.html index bc9e792d..6c2fde0a 100644 --- a/kite/doc/html/classKite_1_1TrackElement.html +++ b/kite/doc/html/classKite_1_1TrackElement.html @@ -2191,7 +2191,7 @@ TrackElement Abstract
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackFixedSegment-members.html b/kite/doc/html/classKite_1_1TrackFixedSegment-members.html index 4e54c656..2ca167b0 100644 --- a/kite/doc/html/classKite_1_1TrackFixedSegment-members.html +++ b/kite/doc/html/classKite_1_1TrackFixedSegment-members.html @@ -119,7 +119,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackFixedSegment.html b/kite/doc/html/classKite_1_1TrackFixedSegment.html index 31ce7d30..a5c948a6 100644 --- a/kite/doc/html/classKite_1_1TrackFixedSegment.html +++ b/kite/doc/html/classKite_1_1TrackFixedSegment.html @@ -572,7 +572,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackMarker-members.html b/kite/doc/html/classKite_1_1TrackMarker-members.html index bb0e34c7..87e0931d 100644 --- a/kite/doc/html/classKite_1_1TrackMarker-members.html +++ b/kite/doc/html/classKite_1_1TrackMarker-members.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackMarker.html b/kite/doc/html/classKite_1_1TrackMarker.html index f19f6e1c..f304681d 100644 --- a/kite/doc/html/classKite_1_1TrackMarker.html +++ b/kite/doc/html/classKite_1_1TrackMarker.html @@ -282,7 +282,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackSegment-members.html b/kite/doc/html/classKite_1_1TrackSegment-members.html index 10b09155..5ee7bd5e 100644 --- a/kite/doc/html/classKite_1_1TrackSegment-members.html +++ b/kite/doc/html/classKite_1_1TrackSegment-members.html @@ -120,7 +120,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1TrackSegment.html b/kite/doc/html/classKite_1_1TrackSegment.html index 5a194cc5..449e2735 100644 --- a/kite/doc/html/classKite_1_1TrackSegment.html +++ b/kite/doc/html/classKite_1_1TrackSegment.html @@ -1691,7 +1691,7 @@ Global, Weak Global and Local Segments
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1VerticalTrack-members.html b/kite/doc/html/classKite_1_1VerticalTrack-members.html index 9956361a..b5d4e418 100644 --- a/kite/doc/html/classKite_1_1VerticalTrack-members.html +++ b/kite/doc/html/classKite_1_1VerticalTrack-members.html @@ -111,7 +111,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classKite_1_1VerticalTrack.html b/kite/doc/html/classKite_1_1VerticalTrack.html index 5259dc3f..a46e46dd 100644 --- a/kite/doc/html/classKite_1_1VerticalTrack.html +++ b/kite/doc/html/classKite_1_1VerticalTrack.html @@ -314,7 +314,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/classes.html b/kite/doc/html/classes.html index ccafd9ef..e33d5711 100644 --- a/kite/doc/html/classes.html +++ b/kite/doc/html/classes.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html b/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html index 5579bee4..f4789579 100644 --- a/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html +++ b/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 28dafb4e..88573f9b 100644 --- a/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -53,7 +53,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/files.html b/kite/doc/html/files.html index 42fe61bc..2b2fce8f 100644 --- a/kite/doc/html/files.html +++ b/kite/doc/html/files.html @@ -68,7 +68,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions.html b/kite/doc/html/functions.html index b01c23dd..c2547c40 100644 --- a/kite/doc/html/functions.html +++ b/kite/doc/html/functions.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_0x7e.html b/kite/doc/html/functions_0x7e.html index 5d22b17f..5efd5338 100644 --- a/kite/doc/html/functions_0x7e.html +++ b/kite/doc/html/functions_0x7e.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_a.html b/kite/doc/html/functions_a.html index 8a2aeb3f..9ca9c890 100644 --- a/kite/doc/html/functions_a.html +++ b/kite/doc/html/functions_a.html @@ -84,7 +84,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_b.html b/kite/doc/html/functions_b.html index a62d0125..a9f9bc89 100644 --- a/kite/doc/html/functions_b.html +++ b/kite/doc/html/functions_b.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_c.html b/kite/doc/html/functions_c.html index 9d1a3e52..ce2e468a 100644 --- a/kite/doc/html/functions_c.html +++ b/kite/doc/html/functions_c.html @@ -104,7 +104,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_d.html b/kite/doc/html/functions_d.html index a22e1c8c..fcb5ebe0 100644 --- a/kite/doc/html/functions_d.html +++ b/kite/doc/html/functions_d.html @@ -74,7 +74,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_e.html b/kite/doc/html/functions_e.html index d9474075..7d18e2c2 100644 --- a/kite/doc/html/functions_e.html +++ b/kite/doc/html/functions_e.html @@ -91,7 +91,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_enum.html b/kite/doc/html/functions_enum.html index 228d1562..2becb825 100644 --- a/kite/doc/html/functions_enum.html +++ b/kite/doc/html/functions_enum.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_eval.html b/kite/doc/html/functions_eval.html index 653cdaf6..87d57d06 100644 --- a/kite/doc/html/functions_eval.html +++ b/kite/doc/html/functions_eval.html @@ -312,7 +312,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_f.html b/kite/doc/html/functions_f.html index 1db4202a..69830c1a 100644 --- a/kite/doc/html/functions_f.html +++ b/kite/doc/html/functions_f.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func.html b/kite/doc/html/functions_func.html index c0bec01a..3a2d420b 100644 --- a/kite/doc/html/functions_func.html +++ b/kite/doc/html/functions_func.html @@ -53,7 +53,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_0x7e.html b/kite/doc/html/functions_func_0x7e.html index 5beb6bb0..e2e4ec9a 100644 --- a/kite/doc/html/functions_func_0x7e.html +++ b/kite/doc/html/functions_func_0x7e.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_a.html b/kite/doc/html/functions_func_a.html index b60df85d..e31e3009 100644 --- a/kite/doc/html/functions_func_a.html +++ b/kite/doc/html/functions_func_a.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_b.html b/kite/doc/html/functions_func_b.html index 10640bb5..d0d17c5d 100644 --- a/kite/doc/html/functions_func_b.html +++ b/kite/doc/html/functions_func_b.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_c.html b/kite/doc/html/functions_func_c.html index 16844e7d..7b0f8adc 100644 --- a/kite/doc/html/functions_func_c.html +++ b/kite/doc/html/functions_func_c.html @@ -98,7 +98,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_d.html b/kite/doc/html/functions_func_d.html index 95a7f1f2..f37bab4a 100644 --- a/kite/doc/html/functions_func_d.html +++ b/kite/doc/html/functions_func_d.html @@ -71,7 +71,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_e.html b/kite/doc/html/functions_func_e.html index 801be51b..c93c9a79 100644 --- a/kite/doc/html/functions_func_e.html +++ b/kite/doc/html/functions_func_e.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_f.html b/kite/doc/html/functions_func_f.html index 48489e46..2786fc51 100644 --- a/kite/doc/html/functions_func_f.html +++ b/kite/doc/html/functions_func_f.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_g.html b/kite/doc/html/functions_func_g.html index 3aba1972..797f771e 100644 --- a/kite/doc/html/functions_func_g.html +++ b/kite/doc/html/functions_func_g.html @@ -454,7 +454,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_h.html b/kite/doc/html/functions_func_h.html index 42abafd7..1af49641 100644 --- a/kite/doc/html/functions_func_h.html +++ b/kite/doc/html/functions_func_h.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_i.html b/kite/doc/html/functions_func_i.html index b9e68053..a89d7a31 100644 --- a/kite/doc/html/functions_func_i.html +++ b/kite/doc/html/functions_func_i.html @@ -171,7 +171,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_l.html b/kite/doc/html/functions_func_l.html index 657fb3f3..275dbe63 100644 --- a/kite/doc/html/functions_func_l.html +++ b/kite/doc/html/functions_func_l.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_m.html b/kite/doc/html/functions_func_m.html index 4d1377e1..d42bffb4 100644 --- a/kite/doc/html/functions_func_m.html +++ b/kite/doc/html/functions_func_m.html @@ -59,7 +59,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_n.html b/kite/doc/html/functions_func_n.html index 57d38a85..d3ce5f94 100644 --- a/kite/doc/html/functions_func_n.html +++ b/kite/doc/html/functions_func_n.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_o.html b/kite/doc/html/functions_func_o.html index 8e178ddd..6b5fdfcd 100644 --- a/kite/doc/html/functions_func_o.html +++ b/kite/doc/html/functions_func_o.html @@ -48,7 +48,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_p.html b/kite/doc/html/functions_func_p.html index 1b284910..0aa57602 100644 --- a/kite/doc/html/functions_func_p.html +++ b/kite/doc/html/functions_func_p.html @@ -64,7 +64,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_r.html b/kite/doc/html/functions_func_r.html index 61ab6ca5..9e84550f 100644 --- a/kite/doc/html/functions_func_r.html +++ b/kite/doc/html/functions_func_r.html @@ -104,7 +104,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_s.html b/kite/doc/html/functions_func_s.html index 6155fd99..8f14e835 100644 --- a/kite/doc/html/functions_func_s.html +++ b/kite/doc/html/functions_func_s.html @@ -136,7 +136,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_func_u.html b/kite/doc/html/functions_func_u.html index 9bebc94c..3f60c4d0 100644 --- a/kite/doc/html/functions_func_u.html +++ b/kite/doc/html/functions_func_u.html @@ -60,7 +60,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_g.html b/kite/doc/html/functions_g.html index 92054ae4..c9eb9c93 100644 --- a/kite/doc/html/functions_g.html +++ b/kite/doc/html/functions_g.html @@ -454,7 +454,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_h.html b/kite/doc/html/functions_h.html index 65efb642..384b886b 100644 --- a/kite/doc/html/functions_h.html +++ b/kite/doc/html/functions_h.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_i.html b/kite/doc/html/functions_i.html index 39ffb7e7..eabef45b 100644 --- a/kite/doc/html/functions_i.html +++ b/kite/doc/html/functions_i.html @@ -183,7 +183,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_l.html b/kite/doc/html/functions_l.html index 770017af..5304a4d3 100644 --- a/kite/doc/html/functions_l.html +++ b/kite/doc/html/functions_l.html @@ -57,7 +57,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_m.html b/kite/doc/html/functions_m.html index 4dbf9516..b5b8e3c2 100644 --- a/kite/doc/html/functions_m.html +++ b/kite/doc/html/functions_m.html @@ -75,7 +75,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_n.html b/kite/doc/html/functions_n.html index 88250f3e..04e47e48 100644 --- a/kite/doc/html/functions_n.html +++ b/kite/doc/html/functions_n.html @@ -66,7 +66,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_o.html b/kite/doc/html/functions_o.html index db4b1738..f3ee7689 100644 --- a/kite/doc/html/functions_o.html +++ b/kite/doc/html/functions_o.html @@ -65,7 +65,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_p.html b/kite/doc/html/functions_p.html index 0f487636..2a9478f6 100644 --- a/kite/doc/html/functions_p.html +++ b/kite/doc/html/functions_p.html @@ -79,7 +79,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_r.html b/kite/doc/html/functions_r.html index 8a2761af..bd75e07c 100644 --- a/kite/doc/html/functions_r.html +++ b/kite/doc/html/functions_r.html @@ -124,7 +124,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_s.html b/kite/doc/html/functions_s.html index 18f92561..d4810b4c 100644 --- a/kite/doc/html/functions_s.html +++ b/kite/doc/html/functions_s.html @@ -170,7 +170,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_t.html b/kite/doc/html/functions_t.html index 737fe072..56317020 100644 --- a/kite/doc/html/functions_t.html +++ b/kite/doc/html/functions_t.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_u.html b/kite/doc/html/functions_u.html index 05f077cc..19b44547 100644 --- a/kite/doc/html/functions_u.html +++ b/kite/doc/html/functions_u.html @@ -63,7 +63,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/functions_vars.html b/kite/doc/html/functions_vars.html index 3fa4609e..8b54b2c3 100644 --- a/kite/doc/html/functions_vars.html +++ b/kite/doc/html/functions_vars.html @@ -46,7 +46,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/graph_legend.html b/kite/doc/html/graph_legend.html index 0a609ac5..850e94ba 100644 --- a/kite/doc/html/graph_legend.html +++ b/kite/doc/html/graph_legend.html @@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/group__AlgorithmOverview.html b/kite/doc/html/group__AlgorithmOverview.html index f199722e..0a11142e 100644 --- a/kite/doc/html/group__AlgorithmOverview.html +++ b/kite/doc/html/group__AlgorithmOverview.html @@ -82,7 +82,7 @@ Compute the Tracks in which the - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page diff --git a/kite/doc/html/group__grpSynthHierarchy.html b/kite/doc/html/group__grpSynthHierarchy.html index f221697e..113d394f 100644 --- a/kite/doc/html/group__grpSynthHierarchy.html +++ b/kite/doc/html/group__grpSynthHierarchy.html @@ -108,7 +108,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/hierarchy.html b/kite/doc/html/hierarchy.html index 09c608b1..912a2772 100644 --- a/kite/doc/html/hierarchy.html +++ b/kite/doc/html/hierarchy.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/index.html b/kite/doc/html/index.html index 595a0dfe..cd49727b 100644 --- a/kite/doc/html/index.html +++ b/kite/doc/html/index.html @@ -55,7 +55,7 @@ The internal description which details how - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page diff --git a/kite/doc/html/modules.html b/kite/doc/html/modules.html index da40cb0d..7bb13fdf 100644 --- a/kite/doc/html/modules.html +++ b/kite/doc/html/modules.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceKite.html b/kite/doc/html/namespaceKite.html index 6b640699..2eee5fe6 100644 --- a/kite/doc/html/namespaceKite.html +++ b/kite/doc/html/namespaceKite.html @@ -199,7 +199,7 @@ Enumerations
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html index 40118d8e..3a384d45 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html index d27bab09..ddbbda18 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html index 37a3d22d..36e30a57 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html index f525f933..5b377d9b 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html index 6e828a89..18a294b9 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html @@ -53,7 +53,7 @@ Classes
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02Manipulator_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02Manipulator_8cpp_03.html index e1dea181..f927d317 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02Manipulator_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02Manipulator_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02NegociateWindow_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02NegociateWindow_8cpp_03.html index 5a3584e1..b37fdd2c 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02NegociateWindow_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02NegociateWindow_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02RoutingPlane_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02RoutingPlane_8cpp_03.html index 4d575e77..42e55a8f 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02RoutingPlane_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02RoutingPlane_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02SegmentFsm_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02SegmentFsm_8cpp_03.html index d863136f..0ce9533e 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02SegmentFsm_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02SegmentFsm_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html index 6e391024..66fc38b4 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02TrackElement_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02TrackElement_8cpp_03.html index 4f8aee11..977bf4b2 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02TrackElement_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02TrackElement_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaceanonymous__namespace_02Track_8cpp_03.html b/kite/doc/html/namespaceanonymous__namespace_02Track_8cpp_03.html index bcda96ff..b43c0ab2 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02Track_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02Track_8cpp_03.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespacemembers.html b/kite/doc/html/namespacemembers.html index 3307e439..6f6dcbba 100644 --- a/kite/doc/html/namespacemembers.html +++ b/kite/doc/html/namespacemembers.html @@ -76,7 +76,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespacemembers_enum.html b/kite/doc/html/namespacemembers_enum.html index dab8e482..3b54e031 100644 --- a/kite/doc/html/namespacemembers_enum.html +++ b/kite/doc/html/namespacemembers_enum.html @@ -46,7 +46,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespacemembers_eval.html b/kite/doc/html/namespacemembers_eval.html index 8b36156a..ee9a648f 100644 --- a/kite/doc/html/namespacemembers_eval.html +++ b/kite/doc/html/namespacemembers_eval.html @@ -70,7 +70,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespacemembers_type.html b/kite/doc/html/namespacemembers_type.html index 87316e7f..aa92d9e9 100644 --- a/kite/doc/html/namespacemembers_type.html +++ b/kite/doc/html/namespacemembers_type.html @@ -46,7 +46,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/namespaces.html b/kite/doc/html/namespaces.html index f9084d13..7a78dedf 100644 --- a/kite/doc/html/namespaces.html +++ b/kite/doc/html/namespaces.html @@ -62,7 +62,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/pageNotes.html b/kite/doc/html/pageNotes.html index 5a609869..232f2189 100644 --- a/kite/doc/html/pageNotes.html +++ b/kite/doc/html/pageNotes.html @@ -150,7 +150,7 @@ Evaluation with Cadence NanoRoute
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/html/pages.html b/kite/doc/html/pages.html index c69b4308..97e5c18d 100644 --- a/kite/doc/html/pages.html +++ b/kite/doc/html/pages.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/kite/doc/latex/refman.tex b/kite/doc/latex/refman.tex index fdf8da70..ac7f560a 100644 --- a/kite/doc/latex/refman.tex +++ b/kite/doc/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:56}\\ + {\small Mon Oct 28 2019 18:06:35}\\ \end{center} \end{titlepage} diff --git a/oroshi/doc/html/annotated.html b/oroshi/doc/html/annotated.html index 058b21b4..62a60ffc 100644 --- a/oroshi/doc/html/annotated.html +++ b/oroshi/doc/html/annotated.html @@ -52,7 +52,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/classes.html b/oroshi/doc/html/classes.html index 5879aacc..7711e52d 100644 --- a/oroshi/doc/html/classes.html +++ b/oroshi/doc/html/classes.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html b/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html index 36978c15..aa5a1b1e 100644 --- a/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html +++ b/oroshi/doc/html/classpython_1_1Stack_1_1Stack-members.html @@ -56,7 +56,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html b/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html index 30c575fe..c17e8d33 100644 --- a/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html +++ b/oroshi/doc/html/classpython_1_1Stack_1_1Stack.html @@ -314,7 +314,7 @@ Stack Implementation Details
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html b/oroshi/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html index 7b1f833b..34810ed0 100644 --- a/oroshi/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html +++ b/oroshi/doc/html/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/functions.html b/oroshi/doc/html/functions.html index 1a084ae0..c3262f3f 100644 --- a/oroshi/doc/html/functions.html +++ b/oroshi/doc/html/functions.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/functions_func.html b/oroshi/doc/html/functions_func.html index 32a95380..5d68c1f8 100644 --- a/oroshi/doc/html/functions_func.html +++ b/oroshi/doc/html/functions_func.html @@ -55,7 +55,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/graph_legend.html b/oroshi/doc/html/graph_legend.html index d520fb9d..44ce352a 100644 --- a/oroshi/doc/html/graph_legend.html +++ b/oroshi/doc/html/graph_legend.html @@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/html/index.html b/oroshi/doc/html/index.html index 932476b3..3a6d9ad0 100644 --- a/oroshi/doc/html/index.html +++ b/oroshi/doc/html/index.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/oroshi/doc/latex/refman.tex b/oroshi/doc/latex/refman.tex index 26c5a827..513d706e 100644 --- a/oroshi/doc/latex/refman.tex +++ b/oroshi/doc/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:58}\\ + {\small Mon Oct 28 2019 18:06:36}\\ \end{center} \end{titlepage} diff --git a/oroshi/python/WIP_Transistor.py b/oroshi/python/WIP_Transistor.py index 05a424a2..d1600b42 100644 --- a/oroshi/python/WIP_Transistor.py +++ b/oroshi/python/WIP_Transistor.py @@ -5,6 +5,7 @@ from Hurricane import UpdateSession from Hurricane import DbU from Hurricane import Box import helpers +import helpers.io from helpers import trace helpers.staticInitialization( quiet=True ) @@ -38,41 +39,48 @@ def checkCoherency ( device, bbMode ): def layout ( device, bbMode ): trace( 100, ',+', '\tWIP_Transistor.layout() called.\n' ) - nerc = device.getParameter( 'NERC' ).getValue() - nirc = device.getParameter( 'NIRC' ).getValue() - - stack = Stack.Stack( device, nerc, nirc ) - - bw = str(device.getParameter( 'B.w' ).getValue()) - dw = str(device.getParameter( 'D.w' ).getValue()) - gw = str(device.getParameter( 'G.w' ).getValue()) - sw = str(device.getParameter( 'S.w' ).getValue()) - - diffMap = { 'D':'D', 'S':'S', 'Dw':dw, 'Sw':sw, 'Gw':gw, 'Bw':bw } - if device.isSourceFirst(): - trace( 100, '\tUse sourceFirst.\n' ) - diffMap = { 'D':'S', 'S':'D', 'Dw':sw, 'Sw':dw, 'Gw':gw, 'Bw':bw } - - wirings = '{D}.b0.{Dw} G.t0.{Gw} {S}.b1.{Sw}' - for i in range(device.getM() - 1): - if i%2: wirings += ' G.t0.{Gw} {S}.b1.{Sw}' - else: wirings += ' G.t0.{Gw} {D}.b0.{Dw}' - for i in range(device.getExternalDummy()): - wirings = 'B.bX.{Bw} B.bX.{Bw} ' + wirings - wirings += ' B.bX.{Bw} B.bX.{Bw}' - - stack.setWirings( wirings.format( **diffMap ) ) - stack.doLayout ( bbMode ) paramsMatrix = ParamsMatrix.ParamsMatrix() - paramsMatrix.setGlobalParams( oroshi.toUnity(stack.w) - , oroshi.toUnity(stack.L) - , device.getM() - , stack.boundingBox - ) - paramsMatrix.setStacks( [ stack ] ) - trace( 100, '++' ) - paramsMatrix.trace() + + try: + nerc = device.getParameter( 'NERC' ).getValue() + nirc = device.getParameter( 'NIRC' ).getValue() + + stack = Stack.Stack( device, nerc, nirc ) + + bw = str(device.getParameter( 'B.w' ).getValue()) + dw = str(device.getParameter( 'D.w' ).getValue()) + gw = str(device.getParameter( 'G.w' ).getValue()) + sw = str(device.getParameter( 'S.w' ).getValue()) + + diffMap = { 'D':'D', 'S':'S', 'Dw':dw, 'Sw':sw, 'Gw':gw, 'Bw':bw } + if device.isSourceFirst(): + trace( 100, '\tUse sourceFirst.\n' ) + diffMap = { 'D':'S', 'S':'D', 'Dw':sw, 'Sw':dw, 'Gw':gw, 'Bw':bw } + + wirings = '{D}.b0.{Dw} G.t0.{Gw} {S}.b1.{Sw}' + for i in range(device.getM() - 1): + if i%2: wirings += ' G.t0.{Gw} {S}.b1.{Sw}' + else: wirings += ' G.t0.{Gw} {D}.b0.{Dw}' + for i in range(device.getExternalDummy()): + wirings = 'B.bX.{Bw} B.bX.{Bw} ' + wirings + wirings += ' B.bX.{Bw} B.bX.{Bw}' + + stack.setWirings( wirings.format( **diffMap ) ) + stack.doLayout ( bbMode ) + + paramsMatrix.setGlobalParams( oroshi.toUnity(stack.w) + , oroshi.toUnity(stack.L) + , device.getM() + , stack.boundingBox + ) + paramsMatrix.setStacks( [ stack ] ) + trace( 100, '++' ) + paramsMatrix.trace() + + except Exception, e: + helpers.io.catch( e ) + trace( 100, '---' ) return paramsMatrix.getMatrix() diff --git a/stratus1/src/dpgen/dpgen_ADSB2F.py b/stratus1/src/dpgen/dpgen_ADSB2F.py index 2a061fb2..7beed9c4 100644 --- a/stratus1/src/dpgen/dpgen_ADSB2F.py +++ b/stratus1/src/dpgen/dpgen_ADSB2F.py @@ -231,7 +231,7 @@ class DpgenAdsb2f ( Model ) : PlaceTop ( self.Xorb[i], sym ) # Ligne des PIGI - if self._nbit > 1 : Place ( self.Pigi[1], SYM_Y, XY ( 45, 50 ) ) + if self._nbit > 1 : Place ( self.Pigi[1], SYM_Y, XY ( DbU.fromLambda(45), DbU.fromLambda(50) ) ) for i in range ( 2, self._nbit ) : if i % 2 == 0 : sym = NOSYM @@ -249,8 +249,8 @@ class DpgenAdsb2f ( Model ) : if pi % 2 == 0 : sym = NOSYM else : sym = SYM_Y - Place ( self.PgI1[n][i], sym, XY ( 125 + 55 * twostage, pi * 50 ) ) - Place ( self.PgI2[n][i], sym, XY ( 150 + 55 * twostage, pi * 50 ) ) + Place ( self.PgI1[n][i], sym, XY ( DbU.fromLambda(125 + 55 * twostage), DbU.fromLambda(pi * 50) ) ) + Place ( self.PgI2[n][i], sym, XY ( DbU.fromLambda(150 + 55 * twostage), DbU.fromLambda(pi * 50) ) ) pi -= 1 @@ -258,8 +258,8 @@ class DpgenAdsb2f ( Model ) : if pi % 2 == 0 : sym = NOSYM else : sym = SYM_Y - Place ( self.PgI1[n+1][i], sym, XY ( 125 + 55 * twostage, pi * 50 ) ) - Place ( self.PgI2[n+1][i], sym, XY ( 150 + 55 * twostage, pi * 50 ) ) + Place ( self.PgI1[n+1][i], sym, XY ( DbU.fromLambda(125 + 55 * twostage), DbU.fromLambda(pi * 50) ) ) + Place ( self.PgI2[n+1][i], sym, XY ( DbU.fromLambda(150 + 55 * twostage), DbU.fromLambda(pi * 50) ) ) pi -= 1 @@ -270,11 +270,11 @@ class DpgenAdsb2f ( Model ) : for n in range ( 2, self._nbit + 1 ) : if ( n - 1 ) % 2 == 0 : sym = NOSYM else : sym = SYM_Y - Place ( self.R[n], sym, XY ( 125 + 55 * twostage, ( n - 1 ) * 50 ) ) + Place ( self.R[n], sym, XY ( DbU.fromLambda(125 + 55 * twostage), DbU.fromLambda( (n-1) * 50 ) ) ) # Calcul des sommes - if self._nbit > 1 : Place ( self.S[1], NOSYM, XY ( 155 + 55 * twostage, 0 ) ) + if self._nbit > 1 : Place ( self.S[1], NOSYM, XY ( DbU.fromLambda(155 + 55 * twostage), 0 ) ) for i in range ( 2, self._nbit ) : if ( i - 1 ) % 2 == 0 : sym = NOSYM @@ -283,7 +283,7 @@ class DpgenAdsb2f ( Model ) : # Calcul somme et retenue du LSB - Place ( self.S[0], NOSYM, XY ( 45, 0 ) ) + Place ( self.S[0], NOSYM, XY ( DbU.fromLambda(45), 0 ) ) ########## VHDL ########## diff --git a/stratus1/src/stratus/st_instance.py b/stratus1/src/stratus/st_instance.py index d4aa69ad..2c49236a 100644 --- a/stratus1/src/stratus/st_instance.py +++ b/stratus1/src/stratus/st_instance.py @@ -195,7 +195,7 @@ class Inst : self._hur_masterCell = FRAMEWORK.getCell ( model, CRL.Catalog.State.Views ) if not self._hur_masterCell : - err = "\n[Stratus ERROR] HurricanePlug : Problem of master cell " + model + ".\nCheck model name and/or .environment.alliance.xml configuration file.\n" + err = '[ERROR] stratus.create_hur_inst(): Framework unable to load master cell "%s".' % model raise Exception ( err ) if not self._st_masterCell : @@ -311,14 +311,14 @@ class Inst : else : hurNet = realNet._hur_net[i] - if mapNet._arity == 1: - tempNet = self._hur_masterCell.getNet ( pin.lower() ) - else: - tempNet = self._hur_masterCell.getNet ( pin.lower() + "(" + str(j+lsb) + ")" ) + if mapNet._arity == 1: hurNetName = pin.lower() + else: hurNetName = pin.lower() + "(" + str(j+lsb) + ")" j += 1 + + tempNet = self._hur_masterCell.getNet ( hurNetName ) if not ( tempNet ) : - err = "\n[Stratus ERROR] Inst : Problem in map. Check that the arities of your nets are correct.\n" + err = '[ERROR] stratus.Inst(): Problem in map. Check that the arities of your nets are correct ("%s").' % hurNetName raise Exception ( err ) plug = self._hur_instance.getPlug ( tempNet ) diff --git a/stratus1/src/stratus/st_model.py b/stratus1/src/stratus/st_model.py index 8776c965..7a47b704 100644 --- a/stratus1/src/stratus/st_model.py +++ b/stratus1/src/stratus/st_model.py @@ -453,7 +453,7 @@ class Model() : hurCell = self._hur_cell if str ( hurCell.getName() ) != "__Scratch__" : - FRAMEWORK.saveCell ( hurCell, views|CRL.Catalog.State.Logical ) + FRAMEWORK.saveCell ( hurCell, views|CRL.Catalog.State.Logical|CRL.Catalog.State.VstUseConcat ) if len ( CELLS ) == 0 : err = "\n[Stratus ERROR] Save : CELLS stack is empty.\n" diff --git a/stratus1/src/stratus/st_net.py b/stratus1/src/stratus/st_net.py index d5630787..1514657c 100644 --- a/stratus1/src/stratus/st_net.py +++ b/stratus1/src/stratus/st_net.py @@ -951,9 +951,9 @@ class net : elif self._direct == "UNKNOWN" : net.setDirection ( Net.Direction.UNDEFINED ) if '_h_type' in self.__dict__ : - if self._h_type == "POWER" : net.setType ( Net.Type.POWER ) - elif self._h_type == "GROUND" : net.setType ( Net.Type.GROUND ) - elif self._h_type == "CLOCK" : net.setType ( Net.Type.CLOCK ) + if self._h_type == "POWER" : net.setType ( Net.Type.POWER ); net.setGlobal( True ) + elif self._h_type == "GROUND" : net.setType ( Net.Type.GROUND ); net.setGlobal( True ) + elif self._h_type == "CLOCK" : net.setType ( Net.Type.CLOCK ); net.setGlobal( True ) self._hur_net += [net] diff --git a/stratus1/src/stratus/st_ref.py b/stratus1/src/stratus/st_ref.py index 016e1751..84b337c5 100644 --- a/stratus1/src/stratus/st_ref.py +++ b/stratus1/src/stratus/st_ref.py @@ -48,19 +48,16 @@ -from Hurricane import * - -from util_Place import * - -from ref import * - +from Hurricane import * +from util_Place import * +from ref import * import types ########### class XY : def __init__ ( self, x, y ) : - self._x = DbU.fromLambda(x) - self._y = DbU.fromLambda(y) + self._x = x + self._y = y ################################## def GetRefXY ( pathname, refname ) : diff --git a/unicorn/doc/unicorn/html/UnicornGui_8h_source.html b/unicorn/doc/unicorn/html/UnicornGui_8h_source.html index faac3f18..cc169750 100644 --- a/unicorn/doc/unicorn/html/UnicornGui_8h_source.html +++ b/unicorn/doc/unicorn/html/UnicornGui_8h_source.html @@ -61,7 +61,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/annotated.html b/unicorn/doc/unicorn/html/annotated.html index ff431be0..55b91004 100644 --- a/unicorn/doc/unicorn/html/annotated.html +++ b/unicorn/doc/unicorn/html/annotated.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui-members.html b/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui-members.html index 41bf1a45..312936a0 100644 --- a/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui-members.html +++ b/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui-members.html @@ -73,7 +73,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui.html b/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui.html index 34c22e30..50a531bc 100644 --- a/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui.html +++ b/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui.html @@ -202,7 +202,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/classes.html b/unicorn/doc/unicorn/html/classes.html index 8f439e0b..97347a4e 100644 --- a/unicorn/doc/unicorn/html/classes.html +++ b/unicorn/doc/unicorn/html/classes.html @@ -54,7 +54,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html b/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html index 69ab008e..d8fbb0c5 100644 --- a/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html +++ b/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index a69ded68..ffcfb647 100644 --- a/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -53,7 +53,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/files.html b/unicorn/doc/unicorn/html/files.html index be8e2567..d73327f8 100644 --- a/unicorn/doc/unicorn/html/files.html +++ b/unicorn/doc/unicorn/html/files.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/functions.html b/unicorn/doc/unicorn/html/functions.html index 0f762968..d62693e1 100644 --- a/unicorn/doc/unicorn/html/functions.html +++ b/unicorn/doc/unicorn/html/functions.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/functions_func.html b/unicorn/doc/unicorn/html/functions_func.html index d0044ca8..573b2fba 100644 --- a/unicorn/doc/unicorn/html/functions_func.html +++ b/unicorn/doc/unicorn/html/functions_func.html @@ -58,7 +58,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/hierarchy.html b/unicorn/doc/unicorn/html/hierarchy.html index c823e979..c2aa55fb 100644 --- a/unicorn/doc/unicorn/html/hierarchy.html +++ b/unicorn/doc/unicorn/html/hierarchy.html @@ -51,7 +51,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/index.html b/unicorn/doc/unicorn/html/index.html index 250ce5a7..2b8517bf 100644 --- a/unicorn/doc/unicorn/html/index.html +++ b/unicorn/doc/unicorn/html/index.html @@ -45,7 +45,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/namespaceUnicorn.html b/unicorn/doc/unicorn/html/namespaceUnicorn.html index e14b0eef..1f1743ef 100644 --- a/unicorn/doc/unicorn/html/namespaceUnicorn.html +++ b/unicorn/doc/unicorn/html/namespaceUnicorn.html @@ -59,7 +59,7 @@ Classes
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/namespaces.html b/unicorn/doc/unicorn/html/namespaces.html index 502f345c..fa44e1d8 100644 --- a/unicorn/doc/unicorn/html/namespaces.html +++ b/unicorn/doc/unicorn/html/namespaces.html @@ -50,7 +50,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/html/pages.html b/unicorn/doc/unicorn/html/pages.html index 4957c952..513e1fe3 100644 --- a/unicorn/doc/unicorn/html/pages.html +++ b/unicorn/doc/unicorn/html/pages.html @@ -49,7 +49,7 @@ $(function() {
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/unicorn/doc/unicorn/latex/refman.tex b/unicorn/doc/unicorn/latex/refman.tex index 0a591f74..db3aff9c 100644 --- a/unicorn/doc/unicorn/latex/refman.tex +++ b/unicorn/doc/unicorn/latex/refman.tex @@ -34,7 +34,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.14}\\ \vspace*{0.5cm} - {\small Sun May 26 2019 17:26:59}\\ + {\small Mon Oct 28 2019 18:06:37}\\ \end{center} \end{titlepage} diff --git a/unicorn/src/cgt.py b/unicorn/src/cgt.py index b65cc049..cd9f0ddd 100755 --- a/unicorn/src/cgt.py +++ b/unicorn/src/cgt.py @@ -5,10 +5,11 @@ try: import sys import os.path import optparse + import helpers + helpers.loadUserSettings() import Cfg import Hurricane import Viewer - from helpers import showPythonTrace import CRL import Anabatic import Katana @@ -29,11 +30,10 @@ except ImportError, e: print '[ERROR] The <%s> shared library cannot be loaded.' % library print ' Under RHEL 6, you must be under devtoolset-2.' print ' (scl enable devtoolset-2 bash)' + helpers.showPythonTrace( sys.argv[0], e ) sys.exit(1) except Exception, e: - print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python' - print ' modules. Something may be wrong at Python/C API level.\n' - print ' %s' % e + helpers.showPythonTrace( sys.argv[0], e ) sys.exit(2) @@ -88,9 +88,9 @@ def runScript ( scriptPath, editor ): #print ' Please check your design hierarchy or the Python syntax.' #print ' Error was:' #print ' %s\n' % e - showPythonTrace( scriptPath, e ) + helpers.showPythonTrace( scriptPath, e ) except Exception, e: - showPythonTrace( scriptPath, e ) + helpers.showPythonTrace( scriptPath, e ) return @@ -270,6 +270,6 @@ if __name__ == '__main__': sys.exit(not kiteSuccess) except Exception, e: - showPythonTrace( sys.argv[0], e ) + helpers.showPythonTrace( sys.argv[0], e ) sys.exit(0) diff --git a/vlsisapd/doc/html/agds.html b/vlsisapd/doc/html/agds.html index 6c45919f..1253a5b4 100644 --- a/vlsisapd/doc/html/agds.html +++ b/vlsisapd/doc/html/agds.html @@ -77,7 +77,7 @@ Python
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/annotated.html b/vlsisapd/doc/html/annotated.html index 7eb5a9a8..94102b3f 100644 --- a/vlsisapd/doc/html/annotated.html +++ b/vlsisapd/doc/html/annotated.html @@ -90,7 +90,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/cif.html b/vlsisapd/doc/html/cif.html index 1873a406..2ff8d720 100644 --- a/vlsisapd/doc/html/cif.html +++ b/vlsisapd/doc/html/cif.html @@ -66,7 +66,7 @@ Python
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_a_g_d_s_1_1_element.html b/vlsisapd/doc/html/class_a_g_d_s_1_1_element.html index c0c3793d..bf4abf1e 100644 --- a/vlsisapd/doc/html/class_a_g_d_s_1_1_element.html +++ b/vlsisapd/doc/html/class_a_g_d_s_1_1_element.html @@ -49,7 +49,7 @@ Inheritance diagram for Element:
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_a_g_d_s_1_1_library.html b/vlsisapd/doc/html/class_a_g_d_s_1_1_library.html index 79973c49..bd82b294 100644 --- a/vlsisapd/doc/html/class_a_g_d_s_1_1_library.html +++ b/vlsisapd/doc/html/class_a_g_d_s_1_1_library.html @@ -210,7 +210,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_a_g_d_s_1_1_rectangle.html b/vlsisapd/doc/html/class_a_g_d_s_1_1_rectangle.html index 94204a85..5ba229f3 100644 --- a/vlsisapd/doc/html/class_a_g_d_s_1_1_rectangle.html +++ b/vlsisapd/doc/html/class_a_g_d_s_1_1_rectangle.html @@ -117,7 +117,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_a_g_d_s_1_1_structure.html b/vlsisapd/doc/html/class_a_g_d_s_1_1_structure.html index a03f8571..e8ce122b 100644 --- a/vlsisapd/doc/html/class_a_g_d_s_1_1_structure.html +++ b/vlsisapd/doc/html/class_a_g_d_s_1_1_structure.html @@ -110,7 +110,7 @@ std::string  - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_bloc.html b/vlsisapd/doc/html/class_bloc.html index 0b5d5387..5be85600 100644 --- a/vlsisapd/doc/html/class_bloc.html +++ b/vlsisapd/doc/html/class_bloc.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_c_i_f_1_1_circuit.html b/vlsisapd/doc/html/class_c_i_f_1_1_circuit.html index 8e580f3e..32f461d4 100644 --- a/vlsisapd/doc/html/class_c_i_f_1_1_circuit.html +++ b/vlsisapd/doc/html/class_c_i_f_1_1_circuit.html @@ -154,7 +154,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_c_i_f_1_1_polygon.html b/vlsisapd/doc/html/class_c_i_f_1_1_polygon.html index dcbbea06..35484cb5 100644 --- a/vlsisapd/doc/html/class_c_i_f_1_1_polygon.html +++ b/vlsisapd/doc/html/class_c_i_f_1_1_polygon.html @@ -117,7 +117,7 @@ Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_circuit.html b/vlsisapd/doc/html/class_circuit.html index c6bcd217..7fd98f4c 100644 --- a/vlsisapd/doc/html/class_circuit.html +++ b/vlsisapd/doc/html/class_circuit.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_d_t_r_1_1_a_rule.html b/vlsisapd/doc/html/class_d_t_r_1_1_a_rule.html index 2245e43e..848ef032 100644 --- a/vlsisapd/doc/html/class_d_t_r_1_1_a_rule.html +++ b/vlsisapd/doc/html/class_d_t_r_1_1_a_rule.html @@ -89,7 +89,7 @@ const std::string & 
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_d_t_r_1_1_d_t_r_exception.html b/vlsisapd/doc/html/class_d_t_r_1_1_d_t_r_exception.html index 51922749..93e9c781 100644 --- a/vlsisapd/doc/html/class_d_t_r_1_1_d_t_r_exception.html +++ b/vlsisapd/doc/html/class_d_t_r_1_1_d_t_r_exception.html @@ -40,7 +40,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_d_t_r_1_1_rule.html b/vlsisapd/doc/html/class_d_t_r_1_1_rule.html index 1673239d..c272269a 100644 --- a/vlsisapd/doc/html/class_d_t_r_1_1_rule.html +++ b/vlsisapd/doc/html/class_d_t_r_1_1_rule.html @@ -227,7 +227,7 @@ const std::string & 
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_d_t_r_1_1_techno.html b/vlsisapd/doc/html/class_d_t_r_1_1_techno.html index 4226ddb9..ab8db7a5 100644 --- a/vlsisapd/doc/html/class_d_t_r_1_1_techno.html +++ b/vlsisapd/doc/html/class_d_t_r_1_1_techno.html @@ -474,7 +474,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_device.html b/vlsisapd/doc/html/class_device.html index 608e6917..39ae9d59 100644 --- a/vlsisapd/doc/html/class_device.html +++ b/vlsisapd/doc/html/class_device.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_group.html b/vlsisapd/doc/html/class_group.html index 03d9fd4a..39446dce 100644 --- a/vlsisapd/doc/html/class_group.html +++ b/vlsisapd/doc/html/class_group.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_instance.html b/vlsisapd/doc/html/class_instance.html index d01da9cf..8d385473 100644 --- a/vlsisapd/doc/html/class_instance.html +++ b/vlsisapd/doc/html/class_instance.html @@ -37,7 +37,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_instance_point.html b/vlsisapd/doc/html/class_instance_point.html index 497525c6..593e1eee 100644 --- a/vlsisapd/doc/html/class_instance_point.html +++ b/vlsisapd/doc/html/class_instance_point.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_intermediate_point.html b/vlsisapd/doc/html/class_intermediate_point.html index b7a5255b..3d9d03a8 100644 --- a/vlsisapd/doc/html/class_intermediate_point.html +++ b/vlsisapd/doc/html/class_intermediate_point.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_layout.html b/vlsisapd/doc/html/class_layout.html index aa4f67de..7b5132c3 100644 --- a/vlsisapd/doc/html/class_layout.html +++ b/vlsisapd/doc/html/class_layout.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_name.html b/vlsisapd/doc/html/class_name.html index abe2c16e..a723a34d 100644 --- a/vlsisapd/doc/html/class_name.html +++ b/vlsisapd/doc/html/class_name.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_net.html b/vlsisapd/doc/html/class_net.html index 8d47cccb..6d7fa57c 100644 --- a/vlsisapd/doc/html/class_net.html +++ b/vlsisapd/doc/html/class_net.html @@ -44,7 +44,7 @@ Data Structures
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_net_1_1_connection.html b/vlsisapd/doc/html/class_net_1_1_connection.html index f9655657..6315ad54 100644 --- a/vlsisapd/doc/html/class_net_1_1_connection.html +++ b/vlsisapd/doc/html/class_net_1_1_connection.html @@ -40,7 +40,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_netlist.html b/vlsisapd/doc/html/class_netlist.html index 6751ce2f..486a7c9d 100644 --- a/vlsisapd/doc/html/class_netlist.html +++ b/vlsisapd/doc/html/class_netlist.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_node.html b/vlsisapd/doc/html/class_node.html index ff117b5c..bab0b2ea 100644 --- a/vlsisapd/doc/html/class_node.html +++ b/vlsisapd/doc/html/class_node.html @@ -37,7 +37,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_open_chams_exception.html b/vlsisapd/doc/html/class_open_chams_exception.html index e7b16353..c87df81e 100644 --- a/vlsisapd/doc/html/class_open_chams_exception.html +++ b/vlsisapd/doc/html/class_open_chams_exception.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_operator.html b/vlsisapd/doc/html/class_operator.html index 9e70b81c..8a1fd268 100644 --- a/vlsisapd/doc/html/class_operator.html +++ b/vlsisapd/doc/html/class_operator.html @@ -44,7 +44,7 @@ Data Structures
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_operator_1_1_constraint.html b/vlsisapd/doc/html/class_operator_1_1_constraint.html index a0a9316f..54a53b3d 100644 --- a/vlsisapd/doc/html/class_operator_1_1_constraint.html +++ b/vlsisapd/doc/html/class_operator_1_1_constraint.html @@ -40,7 +40,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_parameters.html b/vlsisapd/doc/html/class_parameters.html index 54f9a053..699aafe8 100644 --- a/vlsisapd/doc/html/class_parameters.html +++ b/vlsisapd/doc/html/class_parameters.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_port.html b/vlsisapd/doc/html/class_port.html index 5ef7e6bc..1aa98b59 100644 --- a/vlsisapd/doc/html/class_port.html +++ b/vlsisapd/doc/html/class_port.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_port_point.html b/vlsisapd/doc/html/class_port_point.html index b555528a..8f5cc76e 100644 --- a/vlsisapd/doc/html/class_port_point.html +++ b/vlsisapd/doc/html/class_port_point.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_capacitor.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_capacitor.html index cec0aa3f..e21d4e36 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_capacitor.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_capacitor.html @@ -158,7 +158,7 @@ const std::map< std::string, std::string > &  - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019
    Return to top of page diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_circuit.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_circuit.html index 234727ca..f8044b67 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_circuit.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_circuit.html @@ -473,7 +473,7 @@ Static Public Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_current.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_current.html index 0d3b7a62..a6f7dea3 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_current.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_current.html @@ -142,7 +142,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_instance.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_instance.html index f06d2284..78d516c8 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_instance.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_instance.html @@ -264,7 +264,7 @@ const std::map< std::string, std::string > &  - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_mosfet.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_mosfet.html index 036d0c1c..9dbe9b2a 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_mosfet.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_mosfet.html @@ -176,7 +176,7 @@ const std::map< std::string, std::string > &  - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_resistor.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_resistor.html index b9dc42d2..cc6f21c7 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_resistor.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_resistor.html @@ -158,7 +158,7 @@ const std::map< std::string, std::string > &  - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_source.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_source.html index 54cbd935..15d856dd 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_source.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_source.html @@ -139,7 +139,7 @@ Protected Member Functions
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_spice_exception.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_spice_exception.html index 70ea3651..165d3fbc 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_spice_exception.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_spice_exception.html @@ -40,7 +40,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_subckt.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_subckt.html index b5a5008f..769a8294 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_subckt.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_subckt.html @@ -284,7 +284,7 @@ const std::map< std::string, std::string > &  - Generated by doxygen 1.8.14 on Sun May 26 2019 + Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_value.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_value.html index 5d3fdf95..8a71954d 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_value.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_value.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_voltage.html b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_voltage.html index 67a4fc2e..9597fdd0 100644 --- a/vlsisapd/doc/html/class_s_p_i_c_e_1_1_voltage.html +++ b/vlsisapd/doc/html/class_s_p_i_c_e_1_1_voltage.html @@ -142,7 +142,7 @@ Additional Inherited Members
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_schematic.html b/vlsisapd/doc/html/class_schematic.html index da4c10de..62915cda 100644 --- a/vlsisapd/doc/html/class_schematic.html +++ b/vlsisapd/doc/html/class_schematic.html @@ -46,7 +46,7 @@ Data Structures
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_schematic_1_1_infos.html b/vlsisapd/doc/html/class_schematic_1_1_infos.html index bf9557df..3b34069d 100644 --- a/vlsisapd/doc/html/class_schematic_1_1_infos.html +++ b/vlsisapd/doc/html/class_schematic_1_1_infos.html @@ -40,7 +40,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_simul_model.html b/vlsisapd/doc/html/class_simul_model.html index 7dc17220..86019e73 100644 --- a/vlsisapd/doc/html/class_simul_model.html +++ b/vlsisapd/doc/html/class_simul_model.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_sizing.html b/vlsisapd/doc/html/class_sizing.html index c970c93c..a162ebde 100644 --- a/vlsisapd/doc/html/class_sizing.html +++ b/vlsisapd/doc/html/class_sizing.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_transistor.html b/vlsisapd/doc/html/class_transistor.html index f657db68..a6a6a482 100644 --- a/vlsisapd/doc/html/class_transistor.html +++ b/vlsisapd/doc/html/class_transistor.html @@ -37,7 +37,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_wire.html b/vlsisapd/doc/html/class_wire.html index f9c7d172..3ebc14e9 100644 --- a/vlsisapd/doc/html/class_wire.html +++ b/vlsisapd/doc/html/class_wire.html @@ -42,7 +42,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/class_wire_point.html b/vlsisapd/doc/html/class_wire_point.html index e629e687..b03c205a 100644 --- a/vlsisapd/doc/html/class_wire_point.html +++ b/vlsisapd/doc/html/class_wire_point.html @@ -36,7 +36,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/classes.html b/vlsisapd/doc/html/classes.html index 75536680..3bff5dc1 100644 --- a/vlsisapd/doc/html/classes.html +++ b/vlsisapd/doc/html/classes.html @@ -74,7 +74,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/contact.html b/vlsisapd/doc/html/contact.html index 34f65cb3..cb2e22f8 100644 --- a/vlsisapd/doc/html/contact.html +++ b/vlsisapd/doc/html/contact.html @@ -42,7 +42,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_194c6646cbe14a62ea0314c7fca681a9.html b/vlsisapd/doc/html/dir_194c6646cbe14a62ea0314c7fca681a9.html index 764729eb..e5f442de 100644 --- a/vlsisapd/doc/html/dir_194c6646cbe14a62ea0314c7fca681a9.html +++ b/vlsisapd/doc/html/dir_194c6646cbe14a62ea0314c7fca681a9.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_2852b3f74447b3eef98d33971cc12e93.html b/vlsisapd/doc/html/dir_2852b3f74447b3eef98d33971cc12e93.html index 8d4511b7..323a17d8 100644 --- a/vlsisapd/doc/html/dir_2852b3f74447b3eef98d33971cc12e93.html +++ b/vlsisapd/doc/html/dir_2852b3f74447b3eef98d33971cc12e93.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_37f2f7cf13fe8b3dbbf4df2dcd9db30e.html b/vlsisapd/doc/html/dir_37f2f7cf13fe8b3dbbf4df2dcd9db30e.html index 93785d48..629ebb82 100644 --- a/vlsisapd/doc/html/dir_37f2f7cf13fe8b3dbbf4df2dcd9db30e.html +++ b/vlsisapd/doc/html/dir_37f2f7cf13fe8b3dbbf4df2dcd9db30e.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_39781fe580a6e198d1f524a1e4a0bc7e.html b/vlsisapd/doc/html/dir_39781fe580a6e198d1f524a1e4a0bc7e.html index ad14c85a..4d9fa171 100644 --- a/vlsisapd/doc/html/dir_39781fe580a6e198d1f524a1e4a0bc7e.html +++ b/vlsisapd/doc/html/dir_39781fe580a6e198d1f524a1e4a0bc7e.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_47b618c8860794e76993335614edf751.html b/vlsisapd/doc/html/dir_47b618c8860794e76993335614edf751.html index 43228767..98209f92 100644 --- a/vlsisapd/doc/html/dir_47b618c8860794e76993335614edf751.html +++ b/vlsisapd/doc/html/dir_47b618c8860794e76993335614edf751.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_55e17805e082fdc46e6a3a5c39067580.html b/vlsisapd/doc/html/dir_55e17805e082fdc46e6a3a5c39067580.html index 943d0243..9a77873d 100644 --- a/vlsisapd/doc/html/dir_55e17805e082fdc46e6a3a5c39067580.html +++ b/vlsisapd/doc/html/dir_55e17805e082fdc46e6a3a5c39067580.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_59ec496789535d63823312241afb9b7f.html b/vlsisapd/doc/html/dir_59ec496789535d63823312241afb9b7f.html index d101ba44..e5e20f2b 100644 --- a/vlsisapd/doc/html/dir_59ec496789535d63823312241afb9b7f.html +++ b/vlsisapd/doc/html/dir_59ec496789535d63823312241afb9b7f.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_61fcc85a192620389e1754e99f550e16.html b/vlsisapd/doc/html/dir_61fcc85a192620389e1754e99f550e16.html index 5acabab7..ba34dfc8 100644 --- a/vlsisapd/doc/html/dir_61fcc85a192620389e1754e99f550e16.html +++ b/vlsisapd/doc/html/dir_61fcc85a192620389e1754e99f550e16.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_622483769e0f2cd8e596ff15be97e36f.html b/vlsisapd/doc/html/dir_622483769e0f2cd8e596ff15be97e36f.html index c21b070d..5d706e5b 100644 --- a/vlsisapd/doc/html/dir_622483769e0f2cd8e596ff15be97e36f.html +++ b/vlsisapd/doc/html/dir_622483769e0f2cd8e596ff15be97e36f.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/vlsisapd/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 53afa16b..199ef65b 100644 --- a/vlsisapd/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/vlsisapd/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_71789bf9375547e252911cdb9a2317ae.html b/vlsisapd/doc/html/dir_71789bf9375547e252911cdb9a2317ae.html index 5ce49e6e..0e6bd686 100644 --- a/vlsisapd/doc/html/dir_71789bf9375547e252911cdb9a2317ae.html +++ b/vlsisapd/doc/html/dir_71789bf9375547e252911cdb9a2317ae.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_7665d8bfef91390195a0fbeced79f129.html b/vlsisapd/doc/html/dir_7665d8bfef91390195a0fbeced79f129.html index c1e6ffe9..dc89936d 100644 --- a/vlsisapd/doc/html/dir_7665d8bfef91390195a0fbeced79f129.html +++ b/vlsisapd/doc/html/dir_7665d8bfef91390195a0fbeced79f129.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_97fdc78ce1a397e825572027accd162c.html b/vlsisapd/doc/html/dir_97fdc78ce1a397e825572027accd162c.html index 1b3b63d1..89160f52 100644 --- a/vlsisapd/doc/html/dir_97fdc78ce1a397e825572027accd162c.html +++ b/vlsisapd/doc/html/dir_97fdc78ce1a397e825572027accd162c.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_bf3fa239d58b225d86806ac9c8613e9c.html b/vlsisapd/doc/html/dir_bf3fa239d58b225d86806ac9c8613e9c.html index 37a820ba..b0310fe3 100644 --- a/vlsisapd/doc/html/dir_bf3fa239d58b225d86806ac9c8613e9c.html +++ b/vlsisapd/doc/html/dir_bf3fa239d58b225d86806ac9c8613e9c.html @@ -42,7 +42,7 @@ Directories
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_c663fdd46c388fa35da0cbda7880ed60.html b/vlsisapd/doc/html/dir_c663fdd46c388fa35da0cbda7880ed60.html index 991c514d..c7c7d660 100644 --- a/vlsisapd/doc/html/dir_c663fdd46c388fa35da0cbda7880ed60.html +++ b/vlsisapd/doc/html/dir_c663fdd46c388fa35da0cbda7880ed60.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_d524a314c3e79ad7dcb6d469d1af3bdb.html b/vlsisapd/doc/html/dir_d524a314c3e79ad7dcb6d469d1af3bdb.html index 6295a900..d2af0595 100644 --- a/vlsisapd/doc/html/dir_d524a314c3e79ad7dcb6d469d1af3bdb.html +++ b/vlsisapd/doc/html/dir_d524a314c3e79ad7dcb6d469d1af3bdb.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dir_e15e6a3c4c4383a9f2520d7186345132.html b/vlsisapd/doc/html/dir_e15e6a3c4c4383a9f2520d7186345132.html index 3bdcd528..9bb1af58 100644 --- a/vlsisapd/doc/html/dir_e15e6a3c4c4383a9f2520d7186345132.html +++ b/vlsisapd/doc/html/dir_e15e6a3c4c4383a9f2520d7186345132.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/dtr.html b/vlsisapd/doc/html/dtr.html index ddec0e55..7c054ce4 100644 --- a/vlsisapd/doc/html/dtr.html +++ b/vlsisapd/doc/html/dtr.html @@ -74,7 +74,7 @@ Driver
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/functions.html b/vlsisapd/doc/html/functions.html index b087ccff..b71c17d5 100644 --- a/vlsisapd/doc/html/functions.html +++ b/vlsisapd/doc/html/functions.html @@ -303,7 +303,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/functions_func.html b/vlsisapd/doc/html/functions_func.html index fff5bf8a..87ea533d 100644 --- a/vlsisapd/doc/html/functions_func.html +++ b/vlsisapd/doc/html/functions_func.html @@ -303,7 +303,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/hierarchy.html b/vlsisapd/doc/html/hierarchy.html index fd4ffc08..3d469f67 100644 --- a/vlsisapd/doc/html/hierarchy.html +++ b/vlsisapd/doc/html/hierarchy.html @@ -86,7 +86,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/index.html b/vlsisapd/doc/html/index.html index 8eb456b1..9298e0b7 100644 --- a/vlsisapd/doc/html/index.html +++ b/vlsisapd/doc/html/index.html @@ -56,7 +56,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/openchams.html b/vlsisapd/doc/html/openchams.html index a36eaf8a..4e2ec819 100644 --- a/vlsisapd/doc/html/openchams.html +++ b/vlsisapd/doc/html/openchams.html @@ -106,7 +106,7 @@ Driver
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/pages.html b/vlsisapd/doc/html/pages.html index 2600405e..b0b44ef5 100644 --- a/vlsisapd/doc/html/pages.html +++ b/vlsisapd/doc/html/pages.html @@ -39,7 +39,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/spice.html b/vlsisapd/doc/html/spice.html index cd26977c..7c38132a 100644 --- a/vlsisapd/doc/html/spice.html +++ b/vlsisapd/doc/html/spice.html @@ -78,7 +78,7 @@ Driver
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/html/struct_s_p_i_c_e_1_1map__item.html b/vlsisapd/doc/html/struct_s_p_i_c_e_1_1map__item.html index 5890f94c..7cc8fc44 100644 --- a/vlsisapd/doc/html/struct_s_p_i_c_e_1_1map__item.html +++ b/vlsisapd/doc/html/struct_s_p_i_c_e_1_1map__item.html @@ -38,7 +38,7 @@
    - +
    Generated by doxygen 1.8.14 on Sun May 26 2019Generated by doxygen 1.8.14 on Mon Oct 28 2019 Return to top of page
    diff --git a/vlsisapd/doc/latex/class_a_g_d_s_1_1_element.pdf b/vlsisapd/doc/latex/class_a_g_d_s_1_1_element.pdf index 16fbe731..c499855f 100644 Binary files a/vlsisapd/doc/latex/class_a_g_d_s_1_1_element.pdf and b/vlsisapd/doc/latex/class_a_g_d_s_1_1_element.pdf differ diff --git a/vlsisapd/doc/latex/class_a_g_d_s_1_1_rectangle.pdf b/vlsisapd/doc/latex/class_a_g_d_s_1_1_rectangle.pdf index 8af0862f..8649ea6c 100644 Binary files a/vlsisapd/doc/latex/class_a_g_d_s_1_1_rectangle.pdf and b/vlsisapd/doc/latex/class_a_g_d_s_1_1_rectangle.pdf differ diff --git a/vlsisapd/doc/latex/class_d_t_r_1_1_a_rule.pdf b/vlsisapd/doc/latex/class_d_t_r_1_1_a_rule.pdf index dc71c86f..1011756a 100644 Binary files a/vlsisapd/doc/latex/class_d_t_r_1_1_a_rule.pdf and b/vlsisapd/doc/latex/class_d_t_r_1_1_a_rule.pdf differ diff --git a/vlsisapd/doc/latex/class_d_t_r_1_1_rule.pdf b/vlsisapd/doc/latex/class_d_t_r_1_1_rule.pdf index e7f8c7bb..5be01f5a 100644 Binary files a/vlsisapd/doc/latex/class_d_t_r_1_1_rule.pdf and b/vlsisapd/doc/latex/class_d_t_r_1_1_rule.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_capacitor.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_capacitor.pdf index 630a84c9..63f41f3c 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_capacitor.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_capacitor.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_current.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_current.pdf index 0c2b5ea5..1deca357 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_current.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_current.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_instance.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_instance.pdf index 402d2c6b..d87b657a 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_instance.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_instance.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_mosfet.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_mosfet.pdf index ad52d283..05ec5c68 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_mosfet.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_mosfet.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_resistor.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_resistor.pdf index 97637e0d..9c6e18e5 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_resistor.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_resistor.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_source.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_source.pdf index d0d65b47..60b330dd 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_source.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_source.pdf differ diff --git a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_voltage.pdf b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_voltage.pdf index 19c98181..cfb3a6b8 100644 Binary files a/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_voltage.pdf and b/vlsisapd/doc/latex/class_s_p_i_c_e_1_1_voltage.pdf differ